Как правильно показать немодальный дочерний диалог в MFC (VS2005)? - PullRequest
3 голосов
/ 14 апреля 2010

Вместо того, чтобы иметь все в одном большом диалоге, я смотрю на возможность отображения дочерних диалогов для отдельных групп элементов управления. Идея состоит в том, что они не являются свободно плавающими дочерними диалогами, такими как плавающие панели инструментов, но будут отображаться без заголовка, их положение привязано к родительскому диалогу ... так что при перетаскивании родительского диалога перетаскивается любой открытый дочерний элемент. 1001 *

ПРИМЕЧАНИЕ: эти дочерние окна не находятся внутри родительского диалога, они обычно «приклеиваются» к его краю.

Как лучше всего это сделать в MFC / VC ++ 2005? Для тестирования у меня в настоящее время есть стандартная настройка приложения на основе диалога MFC с CMainDlg, а затем я создал «диалог виджетов» CWidgetDlg. Пока что у меня есть переменная-член CWidgetDlg MainDlg::m_Widget и кнопка на CMainDlg с обработчиком типа

CMainDlg::OnDisplayWidgetBtn()
{
 m_Widget.ShowWindow(TRUE);
}

Но, конечно, у m_Widget нет настроек HWND, и я пытаюсь вспомнить правильный способ сделать это? Для управления диалогами я могу использовать DDX, но как насчет дочерних диалогов?

И это разумный подход, или есть более хороший, более автоматизированный способ?

Ответы [ 3 ]

3 голосов
/ 14 апреля 2010

Попробуйте:

// IDD_WIDGET is the resource id for your widget dialog
m_Widget.Create(IDD_WIDGET, this);

Не забудьте установить для свойства style значение child.

0 голосов
/ 14 апреля 2010

Вы можете пойти с диалоговым окном вкладки. Здесь приведен пример кода ... http://www.codeproject.com/KB/dialog/embedded_dialog.aspx

0 голосов
/ 14 апреля 2010

Вместо того, чтобы иметь все в одном большом диалог, я смотрю на возможность отображать дочерние диалоги для отдельных группы управления. Идея состоит в том, не являются свободно плавающими дочерними диалогами как плавающие панели инструментов, но будет показано без заголовка, их положение привязано к родителю диалог ... так как вы перетащите родителя В диалоговом окне также перетаскивается любой открытый дочерний элемент.

Полагаю, вы могли бы использовать Multi-Document Interface. Вы можете создать свои собственные диалоги, добавить шаблон документа и использовать их для соответствующих функций. Дочерний элемент останется внутри одного основного родительского фрейма и будет перемещаться вдоль родительского элемента при каждом перетаскивании родительского элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...