Как отобразить CFormView в мэйнфрейме? - PullRequest
0 голосов
/ 24 декабря 2009

Я создал приложение SDI MFC без поддержки doc / view. Шаблон MFC дает мне приложение с пустым окном (и меню и т. Д.)

Я хочу показать свой объект CFormView в этом главном окне. (На основе dlg, сделанного в графическом редакторе)

Как мне это сделать? CreateWindow и showwindow не все, что нужно. Все веб-страницы, которые я нахожу, говорят о MDI и других вещах, которых нет в моем приложении.

  • Это представление никогда не изменится. У него будет один элемент управления списком, и это все. Как получить новый вид формы для отображения?

  • Кроме того, как мне получить плавающее окно с одним элементом управления? (Ящики DLG и DoModal () здесь не будут работать.)

1 Ответ

1 голос
/ 24 декабря 2009
  • Придайте вашему CFormView стиль WS_CHILD
  • Создайте его как диалоговое окно MODELESS с окном приложения в качестве родительского окна
  • измените размер, чтобы он соответствовал клиентской области родителя, или измените размер родителя, чтобы он соответствовал этому.

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

Возможно, вы также захотите добавить вызов к IsDialogMessage() в ваш насос сообщений. Это необходимо, чтобы заставить клавишу TAB вести себя так, как вы ожидаете, в диалоге.

Редактировать ---- Я не программист MFC, поэтому я могу только догадываться, как бы вы поступили об этом в MFC.

Предположительно, у вас все еще есть шаблоны диалогов, поэтому вы должны войти в свой файл .RC и удалите WS_POPUP и добавьте стиль WS_CHILD в ваше объявление шаблона. как это:

IDD_WHATEVER DIALOG DISCARDABLE  0, 0, 275, 217
STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE
CAPTION "General"
FONT 8, "MS Sans Serif"
BEGIN
   // etc
END

Немодальные диалоги создаются в Win32 с использованием CreateDialog вместо DialogBox в MFC с использованием Create() вместо DoModal().

...