我有一台CView,我在上面画的东西还不错。然后我意识到我需要在我的CView中添加一些控件,比如文本框和组合框。因此,我试图将我的CView转换为没有默认构造函数的CFormView。但是我需要这行IMPLEMENT_DYNCREATE(CMyView, CFormView)的默认构造函数,所以我已经创建了一个类似于这个CMyView::CMyView():CFormView( ( UINT )666 ) { ... }的默认构造函数。那666是因为我不知道我应该通过哪个论点。我猜我需要传递我的CMyView类的ID。我找不到最初由Visual项目向导自动创建的CMyView类的id。我应该在哪儿找呢?当我运行这个程序时,我得到了一个错误: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.,它停在free.c中的第51行,所以我的问题是:如何修复这个问题?此外,我还想保留我以前在我以前的CView,现在的CFormView中画的东西。CFormView能像CView那样作画吗?如果不是,我是否应该在CMainFrame中使用拆分窗格,并有一个CView和一个CFormView?我可能使用了特定于Java的术语,对此我表示歉意。我是新来的MFC和C++。预先谢谢你,科尼利乌
发布于 2013-11-11 02:02:39
CFormView构造函数需要传递表单对话框模板的ID。这是在可视化编辑器中创建的模板。您可以通过使用一个CFormView创建一个小测试项目来使您的声明看起来像测试项目中的MFC声明,从而了解这是如何工作的。
CFormView可以像CView那样绘制(在OnDraw中),但是如果对视图进行缩放或滚动,则可能会对控件产生意想不到的影响。
将控件与已绘制输出混合的其他替代方法是:(1)使用CControlBar将控件放置在视图的边缘,或(2)在CFormView上放置CStatic并在CStatic中进行绘制。
发布于 2016-04-07 13:24:20
看看Resources.rc。
您可以尝试添加如下内容:
IDD_DIALOG1 DIALOG 0, 0, 400, 400
STYLE DS_SETFONT | WS_CHILD
FONT 8, "MS Sans Serif"
BEGIN
ENDhttps://stackoverflow.com/questions/19897357
复制相似问题