|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.03.2010, 23:21 | #1 |
Пользователь
Регистрация: 21.03.2010
Сообщений: 10
|
Дискриптор диалога
Всем добрый день! Имеется следующий вопрос: Какой функцией можно получить handle диалога( обьявлен в ресурсах c флагом Child ) из родительского окна?
|
26.03.2010, 23:54 | #2 |
Пользователь
Регистрация: 22.02.2010
Сообщений: 24
|
Я делал так:
1) объявлял глобальную переменную hDialog; 2) запускал диалог функцией DialogBox(); 3) в диалоговой функции вида BOOL CALLBACK DialogFunc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) обрабатывал сообщение WM_INITDIALOG (приходит при запуске диалога), где выполнял присваивание hDialog=hDlg. Все - теперь handle диалога находится в глобальной переменной P.S. Вот только не понял, что значит "диалог с флагом Child"? |
28.03.2010, 20:11 | #3 |
Пользователь
Регистрация: 21.03.2010
Сообщений: 10
|
Мне необходим вариант без создания глобальной переменной( у нас большой проект и глобальных переменных у нас уже накопилось предостаточно ). Хотелось бы более изящный вариант. Должна быть какая-нибудь функция наподобие FindWindowEx().
"диалог с флагом Child"? - указано в стиле диалогового окна - это я указал потому что возможно искомая функция будет опираться на иерархию окон( например поиск будет осуществляться через потомков родительского окна ), а может и нет) Последний раз редактировалось _Dmitry_; 28.03.2010 в 20:22. |
28.03.2010, 23:46 | #4 |
Пользователь
Регистрация: 22.02.2010
Сообщений: 24
|
Ничего не мешает Вам зарегистрировать пользовательское сообщение и послать его из обработчика WM_INITDIALOG в оконную процедуру заинтересованного окна (окон). В параметре сообщения (wParam или lParam) укажите handle диалога.
P.S. Просто интересно: не могли бы Вы показать как именно описан Ваш диалог в ресурсах? |
29.03.2010, 00:26 | #5 |
Пользователь
Регистрация: 22.02.2010
Сообщений: 24
|
Ничего не мешает Вам зарегистрировать пользовательское сообщение и послать его из обработчика WM_INITDIALOG в оконную процедуру заинтересованного окна (окон). В параметре сообщения (wParam или lParam) укажите handle диалога.
P.S. Просто интересно: не могли бы Вы показать как именно описан Ваш диалог в ресурсах? |
29.03.2010, 00:41 | #6 |
Пользователь
Регистрация: 21.03.2010
Сообщений: 10
|
Интересная мысль с регистрацией сообщения - так я и сделаю. Для этого ведь достаточно назначить через define id сообщения или там своя процедура регистрации?
Диалог: INSTRUMENTS DIALOGEX 0, 0, 640, 28 STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE |WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS _BORDER EXSTYLE WS_EX_TOOLWINDOW FONT 8, "MS Sans Serif" BEGIN ... END M_KOSTIK за ответ спасибо) |
29.03.2010, 22:03 | #7 |
Пользователь
Регистрация: 22.02.2010
Сообщений: 24
|
Техника такая:
оба желающих общающихся приложения регистрируют пользовательское сообщение при помощи UINT RegisterWindowMessage(LPCTSTR), которая получает параметр-строку (произвольная, но должна быть одинаковой в обоих вызовах). Ф-ция возвращает целое число - идентификатор сообщения, с помощью которого сообщение отлавливается в оконной процедуре. Дальше можно посылать друг другу сообщения с помощью например SendMessage() |
30.03.2010, 01:08 | #8 |
Пользователь
Регистрация: 21.03.2010
Сообщений: 10
|
Спасибо) Будем реализовывать!
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дискриптор диалога | _Dmitry_ | Помощь студентам | 0 | 24.03.2010 16:07 |
Дискриптор обьекта из файла русурсов | _Dmitry_ | Win Api | 2 | 21.03.2010 12:58 |
Ошибка из-за открытия диалога | Marisha* | Общие вопросы Delphi | 8 | 12.07.2009 16:15 |
Зависание при показе Диалога | nusik | Общие вопросы C/C++ | 11 | 02.07.2009 08:20 |
Создание диалога из длл | Oburec | Общие вопросы C/C++ | 0 | 27.06.2009 15:29 |