Дочернее диалоговое окно внутри диалогового окнаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Дочернее диалоговое окно внутри диалогового окна

Сообщение Anonymous »

Я хочу создать 2 диалоговых окна, одно из которых является дочерним по отношению к другому. Ниже приведена часть кода.
Когда я нажимаю пункт меню «Родительский», создается два диалога и один из них становится дочерним по отношению к другому, как показано на рисунке:

Изображение


Проблема в том, что они оба невидимы. Их размер указан Spy++.
Даже если я использую ShowWindow и UpdateWindow, это не помогает.

Вот мой первый вопрос:

How to fix this?

Теперь причина, по которой я хочу создать дочерние диалоговые окна: Посмотрите на следующее изображение:

Изображение


у него есть диалог предпочтений, содержащий дочерние диалоги (прямоугольник, ограниченный черной линией). Эти дочерние диалоговые окна используются для группировки связанных параметров. Поэтому, если пользователь выбирает элемент в левой части TreeView, дочернее диалоговое окно скрывается и отображается другое дочернее диалоговое окно с различными параметрами.

Теперь второй вопрос:< /p>

Is my code is the correct way to achieve such work?



Обновление 2:

Здесь это решение!

http://msdn.microsoft.com/en-us/library ... 85%29.aspx < /p>



Обновление: < /p>

Спасибо, ребята. < / p>

После использования CreateDialog (для дочернего диалога) вместо DialogBox(...), используя DS_CONTROL вместо WS_CHILD, и удалил кнопку ОК (и соответствующий ей wndproc) из дочернего диалогового окна, я получил

[img]https: //i.stack.imgur.com/8GZqq.png[/img]


Я могу даже переместить дочерний диалог внутри родительского диалога. Удаление CAPTION «Дочерний диалог» в файле сценария ресурсов не помогает.
  • Как (какие флаги должны можно использовать), чтобы дочерний диалог легко вписывался в родительский диалог? Это означает, что: Нет строки заголовка, нет границы... и т. д. (Использовать SetWindowLong и WS_BORDER после создания дочернего диалога? Или что-то особенное для диалога?)
  • Кнопка ОК родительского диалога больше не работает. Как это исправить? Я не понимаю, как управлять диалоговыми процедурами в этом случае диалога родитель-потомок. Есть ли ссылка на это?


Вот мой код:< /p>

1. Message handler for dialogs:

INT_PTR CALLBACK Child(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
{
hChild = hDlg;
return (INT_PTR)TRUE;
}
case WM_COMMAND:
if (LOWORD(wParam) == IDOK)
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}

INT_PTR CALLBACK Parent(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
{
hParent = hDlg;
DialogBox(hInst, MAKEINTRESOURCE(IDD_CHILD), hParent, Child);
SetParent(hChild, hParent);
return (INT_PTR)TRUE;
}
case WM_COMMAND:
if (LOWORD(wParam) == IDOK)
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}

2. Dialog Templates in resource file

IDD_CHILD DIALOGEX 0, 0, 70, 50

STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
CAPTION "Child Dialog"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Child Dialog",IDC_STATIC,10,5,35,8,SS_NOPREFIX
DEFPUSHBUTTON "OK",IDOK,10,25,50,14,WS_GROUP
END

IDD_DIALOG_PARENT DIALOGEX 0, 0, 250, 150
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Parent Dialog"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Parent",IDC_STATIC,42 - 20,14,35,8,SS_NOPREFIX
DEFPUSHBUTTON "OK",IDOK,188, 126,50,14,WS_GROUP
END


Подробнее здесь: https://stackoverflow.com/questions/140 ... log-window
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»