Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2010, 23:21   #1
_Dmitry_
Пользователь
 
Регистрация: 21.03.2010
Сообщений: 10
По умолчанию Дискриптор диалога

Всем добрый день! Имеется следующий вопрос: Какой функцией можно получить handle диалога( обьявлен в ресурсах c флагом Child ) из родительского окна?
_Dmitry_ вне форума Ответить с цитированием
Старый 26.03.2010, 23:54   #2
m_kostik
Пользователь
 
Регистрация: 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"?
m_kostik вне форума Ответить с цитированием
Старый 28.03.2010, 20:11   #3
_Dmitry_
Пользователь
 
Регистрация: 21.03.2010
Сообщений: 10
По умолчанию

Мне необходим вариант без создания глобальной переменной( у нас большой проект и глобальных переменных у нас уже накопилось предостаточно ). Хотелось бы более изящный вариант. Должна быть какая-нибудь функция наподобие FindWindowEx().
"диалог с флагом Child"? - указано в стиле диалогового окна - это я указал потому что возможно искомая функция будет опираться на иерархию окон( например поиск будет осуществляться через потомков родительского окна ), а может и нет)

Последний раз редактировалось _Dmitry_; 28.03.2010 в 20:22.
_Dmitry_ вне форума Ответить с цитированием
Старый 28.03.2010, 23:46   #4
m_kostik
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 24
По умолчанию

Ничего не мешает Вам зарегистрировать пользовательское сообщение и послать его из обработчика WM_INITDIALOG в оконную процедуру заинтересованного окна (окон). В параметре сообщения (wParam или lParam) укажите handle диалога.
P.S. Просто интересно: не могли бы Вы показать как именно описан Ваш диалог в ресурсах?
m_kostik вне форума Ответить с цитированием
Старый 29.03.2010, 00:26   #5
m_kostik
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 24
По умолчанию

Ничего не мешает Вам зарегистрировать пользовательское сообщение и послать его из обработчика WM_INITDIALOG в оконную процедуру заинтересованного окна (окон). В параметре сообщения (wParam или lParam) укажите handle диалога.
P.S. Просто интересно: не могли бы Вы показать как именно описан Ваш диалог в ресурсах?
m_kostik вне форума Ответить с цитированием
Старый 29.03.2010, 00:41   #6
_Dmitry_
Пользователь
 
Регистрация: 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 за ответ спасибо)
_Dmitry_ вне форума Ответить с цитированием
Старый 29.03.2010, 22:03   #7
m_kostik
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 24
По умолчанию

Техника такая:
оба желающих общающихся приложения регистрируют пользовательское сообщение при помощи UINT RegisterWindowMessage(LPCTSTR), которая получает параметр-строку (произвольная, но должна быть одинаковой в обоих вызовах). Ф-ция возвращает целое число - идентификатор сообщения, с помощью которого сообщение отлавливается в оконной процедуре. Дальше можно посылать друг другу сообщения с помощью например SendMessage()
m_kostik вне форума Ответить с цитированием
Старый 30.03.2010, 01:08   #8
_Dmitry_
Пользователь
 
Регистрация: 21.03.2010
Сообщений: 10
По умолчанию

Спасибо) Будем реализовывать!
_Dmitry_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дискриптор диалога _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