Как получить дескриптор диалога?
От: Paata Pheikrishvili  
Дата: 16.05.03 11:03
Оценка:
Как получить дескриптор диалогого окна зная его ID или
Как получить ID диалогого окна зная его дескриптор исползуя WIN API функции
Re: Как получить дескриптор диалога?
От: Sinatr Германия  
Дата: 16.05.03 11:15
Оценка:
Привет!

PP>Как получить дескриптор диалогого окна зная его ID или

PP>Как получить ID диалогого окна зная его дескриптор исползуя WIN API функции

HWND from IDD? Диалог должен быть запущен (CreateDialogParam), тогда ты из ресурсной заготовки сделаешь окно — вот тебе и дескриптор.

Диалог уже запущен? Тогда ты зная hwnd можешь получить доступ к допольнительной инфе с помощью:
LONG GetWindowLong(
    HWND hWnd,    // handle of window
    int nIndex     // offset of value to retrieve
   );

Например, для nIndex=GWL_ID, ты можешь узнать ID, если твое окно — дочернее.

Если же ты имеешь в виду контрол диалога, то:
HWND GetDlgItem(
    HWND hDlg,    // handle of dialog box
    int nIDDlgItem     // identifier of control
   );

и наоборот:
HWND GetDlgItem(
    HWND hDlg,    // handle of dialog box
    int nIDDlgItem     // identifier of control
   );


Это сообственно все из винАпи..

И тут я задумался.. Кажется, ты хочешь для кучи диалогов хранить только одну переменную, которая будет определять его однозначно, да? А потом какая-нибудь функция будет по этой переменной все определять? А разве недостаточно одного хэндла?..
---
ПроГLамеры объединяйтесь..
Re[2]: Как получить дескриптор диалога?
От: Paata Pheikrishvili  
Дата: 16.05.03 11:26
Оценка:
S>Это сообственно все из винАпи..

S>И тут я задумался.. Кажется, ты хочешь для кучи диалогов хранить только одну переменную, которая будет определять его однозначно, да? А потом какая-нибудь функция будет по этой переменной все определять? А разве недостаточно одного хэндла?..





Вот имено! это все знаю. А именно не зная хэндла диалога зная толка ID получить хэндла. C GetWindowLong все ясно.
Re[3]: Как получить дескриптор диалога?
От: FlashBack  
Дата: 16.05.03 20:41
Оценка:
Здравствуйте, Paata Pheikrishvili, Вы писали:

PP>Вот имено! это все знаю. А именно не зная хэндла диалога зная толка ID получить хэндла. C GetWindowLong все ясно.


ID — это идентификатор Template — а. По темплейту можно создать хоть сто Dialog-ов. Следовательно по ID получить HWND нельзя... Но просто его получить прямо в обработчике диалога, при каждом запуске он получает hwnd(hDlg) и.т.д. К слову в WM_INITDIALOG напиши чтото типа : hWnd = hDlg, где hWnd — глобальный указатель, а hDlg — локальный
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.