преобразование CView в CFormView

У меня есть CView, и я прекрасно рисую на нем. Затем я понял, что мне нужно добавить некоторые элементы управления, такие как текстовые поля и поля со списком в мой CView. Поэтому я пытаюсь преобразовать мой CView в CFormView, который не имеет конструктора по умолчанию. Но мне нужен конструктор по умолчанию для этой строки IMPLEMENT_DYNCREATE(CMyView, CFormView) поэтому я создал конструктор по умолчанию, как это CMyView::CMyView():CFormView( ( UINT )666 ) { ... }, Это 666, потому что я не знаю, какой аргумент я должен передать там. Я предполагаю, что мне нужно передать идентификатор моего класса CMyView. Я не могу найти идентификатор моего класса CMyView, который изначально был создан мастером проекта Visual Studio автоматически. Где мне это искать? Когда я запускаю программу, я получаю эту ошибку: First-chance exception at 0x75AEC41F in myapp.exe: Microsoft C++ exception: CInvalidArgException at memory location 0x003CF134.
Critical error detected c0000374
myapp.exe has triggered a breakpoint.

И он останавливается на строке 51 в free.c
Итак, мой вопрос: как я могу это исправить? Также я хочу сохранить материал, который я ранее рисовал в моем прежнем CView, теперь CFormView. Может ли CFormView рисовать как CView? Если нет, должен ли я использовать разделенную панель в моем CMainFrame и иметь CView и CFormView? Я мог бы использовать термины, специфичные для Java swing, и я прошу прощения за это. Я новичок в MFC и C ++.
Заранее спасибо,
Корнелиу

1

Решение

Конструктор CFormView нуждается в передаче идентификатора диалогового шаблона формы. Это шаблон, который вы создаете в визуальном редакторе. Вы можете увидеть, как это работает, создав небольшой тестовый проект с CFormView, чтобы ваши объявления выглядели как объявления MFC в тестовом проекте.

CFormView может быть нарисован как CView (в OnDraw), но вы можете иметь нежелательные эффекты для элементов управления, если вы выполняете масштабирование или прокрутку представления.

Другие альтернативы для смешивания элементов управления с нарисованным выводом: (1) Использование CControlBar для размещения элементов управления на краю вида или (2) Поместите CStatic в CFormView и выполните рисование в CStatic.

1

Другие решения

Проверять, выписываться Resources.rc,

Вы можете попробовать добавить что-то вроде этого:

IDD_DIALOG1 DIALOG  0, 0, 400, 400
STYLE DS_SETFONT | WS_CHILD
FONT 8, "MS Sans Serif"BEGIN
END
0

По вопросам рекламы [email protected]