Вниз
Скачать: 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-36746
greenrul
2003-11-27 02:22
2003.12.12
XP Manifest и GroupBox


1-36715
MakNik
2003-12-02 13:37
2003.12.12
MessageDlg


1-36658
DmitryA
2003-12-02 18:34
2003.12.12
Управление активностью окна


8-36768
Norlin
2003-08-09 21:17
2003.12.12
Как на ходу грузить картинки из DLL в Игру ?


6-36783
RED
2003-10-15 14:21
2003.12.12
idhttp sms




   Наверх