Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Вниз

Как узнать имя класса окна по его 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 вся ветка

Форум: "Основная";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.045 c
14-36803
Даааа
2003-11-19 16:00
2003.12.12
Это чтоже получается


1-36762
uu
2003-12-01 19:32
2003.12.12
InputQuery


14-36800
Думкин
2003-11-20 05:07
2003.12.12
С днем рождения! 20 ноября.


1-36714
bss
2003-12-02 14:31
2003.12.12
Открыть файл в приложении, которому он соотвествует


1-36634
SDW_syscoder
2003-12-01 09:56
2003.12.12
Работа со строкой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский