![]() |
|
![]() ![]() ![]() |
|
yurec |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
Привет
Создал диалоговое окно в другом окне, вызываю GetDlgItem с ид внутреннего диалога, функция фозвращает 0. Подскажите, в чём проблема, пожалуйста. "Remarks You can use the GetDlgItem function with any parent-child window pair, not just with dialog boxes. As long as the hDlg parameter specifies a parent window and the child window has a unique identifier (as specified by the hMenu parameter in the CreateWindow or CreateWindowEx function that created the child window), GetDlgItem returns a valid handle to the child window. " (msdn ::GetDlgItem) |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
Покажи код.
А когда ты вызываешь GetDlgItem? -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
yurec |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
в инитДиалоге вызываю m_dlg_inner.Create(IDD_INNER, this), после етого ( когда уже оба диалоги показались) и вызываю GetDlgItem(IDD_INNER)
|
|||
|
||||
Moonlit_angel |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 14.9.2007 Где: Вильнюс, Литва Репутация: нет Всего: нет |
work with child window
Тут есть пример, как работать с детскими окнами. Может поможет... У мениа тоже проблема с этим была, мне помогло... |
|||
|
||||
kurlyak |
|
||||||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 7.11.2007 Репутация: 1 Всего: 3 |
Я так понимаю, что у тебя два диалога CMainDlg предположим и второй дилог CDialog. Я не понимаю, зачем тебе вызывать GetDlgItem(IDD_INNER) в первом диалоге, если указатель на это окно, который ты ищешь уже есть в твоей переменной m_dlg_inner. Сделай ее глобальной, то есть так пишешь в файле .h класса CMainDlg:
Потом пишешь в CMainDlg::InitDialog():
, насколько я правильно понял задачу, и потом пользуешься этой переменной dlg (она у тебя m_dlg_inner) в этом классе как хочешь и где угодно. А вобще есть функция такая, которую используют в главном классе:
Она возвращает все дочерние окна твоего класса CMainDlg в z-поряке. В приведенном примере функция возвращает значение CWnd*, если тебе надо получить HWND то пользуйся ::GetWindow().
Но вобще ты не рассказал, что ты будет потом делать с дочерним окном, может можно было сделать все проще. Если не в падло, расскажи по- подробнее, кали не получиться. Добавлено через 8 минут и 19 секунд Вобще я там неточность допустил, вроде так надо:
Код откомпилируеться, но тебе нужно реальный класс твоего второго диалога указать вместо CDialog. Попробуй... |
||||||||||
|
|||||||||||
kurlyak |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 7.11.2007 Репутация: 1 Всего: 3 |
А вобще замечу что в мсдн написано так как ты говорил:
Но заметь что я выделил "в диалоговом окне", то есть твое диалоговое окно- второе, оно вне твоего первого диалога. Значит тебе нужно делать твою переменную m_dlg_inner только глобальной в классе так:
либо так, скорее всего:
|
||||||
|
|||||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |