gpt4 book ai didi

c++ - 将 CView 转换为 CFormView

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:48 31 4
gpt4 key购买 nike

我有一个 CView,我一直在上面画东西,效果很好。然后我意识到我需要向我的 CView 添加一些控件,如文本框和组合框。所以我试图将我的 CView 转换为没有默认构造函数的 CFormView。但是我需要此行的默认构造函数 IMPLEMENT_DYNCREATE(CMyView, CFormView) 所以我创建了一个像这样的默认构造函数 CMyView::CMyView():CFormView( ( UINT )666 ) { 。 .. 。那个 666 是因为我不知道我应该在那里传递哪个参数。我猜我需要传递我的 CMyView 类的 ID。我找不到最初由 Visual Studio 项目向导自动创建的 CMyView 类的 ID。我应该在哪里寻找它?当我运行该程序时出现此错误:myapp.exe 中 0x75AEC41F 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x003CF134 处的 CInvalidArgException。
检测到严重错误 c0000374
myapp.exe 已触发断点。
它停在 free.c 的第 51 行所以我的问题是:我该如何解决这个问题?另外我想保留我以前在我以前的 CView 中绘制的东西,现在是 CFormView。 CFormView 是否能够像 CView 一样进行绘制?如果不是,我应该在我的 CMainFrame 中使用拆分 Pane 并使用 CView 和 CFormView 吗?我可能使用了特定于 Java swing 的术语,对此我深表歉意。我是 MFC 和 C++ 的新手。先感谢您,科尼利乌

最佳答案

CFormView 构造函数需要传入表单对话框模板的 ID。即您在可视化编辑器中创建的模板。您可以通过使用 CFormView 创建一个小测试项目来了解这是如何工作的,使您的声明看起来像测试项目中的 MFC 声明。

CFormView 可以像 CView 一样绘制(在 OnDraw 中),但是如果您对 View 进行任何缩放或滚动,则可能会对控件产生不良影响。

将控件与绘制输出混合的其他替代方法是 (1) 使用 CControlBar 将控件放在 View 的边缘或 (2) 将 CStatic 放在 CFormView 上并在 CStatic 中进行绘制。

关于c++ - 将 CView 转换为 CFormView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19897357/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com