Вниз
Скачать: CL | DM;

Как узнать имя класса окна по его Handle ?   Найти похожие ветки 

 
GreySerg   (2003-12-01 17:21) [0]

Как узнать имя класса окна по его Handle ?


 
Семен Сорокин ©   (2003-12-01 17:25) [1]

а как узнать фио человека по его паспортному номеру?
никак.


 
PVOzerski ©   (2003-12-01 17:27) [2]

И тем не менее - API-функция GetClassName...


 
Семен Сорокин ©   (2003-12-01 17:29) [3]

:)
упс, недопонял вопрос, сорри


 
GreySerg   (2003-12-01 18:12) [4]

почему-то GetClassName возвращает 0 , а на ShowMessage(SysErrorMessage(GetLastError)); говорит Оperation compleeted successfully.


 
Юрий Зотов ©   (2003-12-01 18:14) [5]

Приведите код - как Вы вызываете GetClassName.


 
Skier ©   (2003-12-01 18:19) [6]

Это имеется в виду ?
1) function FindControl(Handle: HWnd): TWinControl;
2) TObject.ClassName


 
GreySerg   (2003-12-01 18:21) [7]

Вот код:

procedure TfrmDecisionResults.N14Click(Sender: TObject);
var
S: PAnsiChar;
begin
if GetClassName(PopupMenu1.WindowHandle, S, 255)<>0 then
ShowMessage(S)
else ShowMessage(SysErrorMessage(GetLastError));
end;


 
Юрий Федоров ©   (2003-12-01 18:23) [8]

Память под буффер (S: PAnsiChar) должна быть выделена перед вызовом GetClassName.

Вариант - S: Array[Byte] of Char;


 
GreySerg   (2003-12-01 18:29) [9]

> Юрий Федоров ©
точно, забыл совсем :-)


 
GreySerg   (2003-12-01 18:33) [10]

Тогда почему PopupMenu1.WindowHandle = хэндлу Application , а не
контрола , из которого вызвано Popup меню
(у меня ShowMessage(S) выдаёт TApplication) ?


 
PVOzerski ©   (2003-12-01 18:35) [11]

Мой любимый вариант:

var s:shortstring;
..
byte(s[0]):=GetClassName(hwnd,@s[1],255);

Только вот что можно так получить от PopupMenu? Практика показывает: TApplication, теория: меню - не окно.


 
Юрий Федоров ©   (2003-12-01 18:48) [12]

constructor TPopupMenu.Create(AOwner: TComponent);
begin
...
FWindowHandle := Application.Handle;
...
end;
...
procedure TControl.SetPopupMenu(Value: TPopupMenu);
begin
FPopupMenu := Value;
if Value <> nil then
begin
Value.ParentBiDiModeChanged(Self);
Value.FreeNotification(Self);
end;
end;

То есть никаких следов на то, что PopupMenu1.WindowHandle указывает на что-то другое...
По другому и быть не может, так как у нескольких T(Win)Control может быть один TPopupMenu


 
GreySerg   (2003-12-01 19:13) [13]

спасибо всем



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
1-36705
Artog
2003-12-02 15:17
2003.12.12
динамический массив


7-36862
RS19
2003-10-05 18:23
2003.12.12
Нестандартная работа с LPT


1-36592
BaDeVlad
2003-12-03 09:14
2003.12.12
Восстановление удаленного файла


8-36766
F0rest
2003-08-18 20:03
2003.12.12
Формат PSD


14-36798
ИМХО
2003-11-20 20:58
2003.12.12
Иконки больше, чем 32 на 32




   Наверх