在对话框上创建视图的方法总结

作者:朱金灿
来源:http://blog.csdn.net/clever101


       之前有网友问我在对话框上如何创建视图,晚上总结了一些方法。
在VS 2005上创建一个基于对话框的工程:CreateView。然后新建一个视图类:CMyView,派生自CView。


然后在对话框类CCreateViewDlg上定义一个视图类指针:




为了使得视图创建在指定的区域,在对话框上放一个静态文本控件,资源ID为IDC_STATIC_VIEW。


方法一:

     在对话框的OnInitDialog函数里添加如下代码:



为了验证视图效果,在视图类的OnDraw函数添加如下代码:



方法二:

方法二和方法一大同小异,只需改动对话框类的OnInitDialog函数中的代码:



效果图如下:


在对话框上创建视图













  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: 在MFC,可以通过以下步骤在对话框创建一个视图: 1. 首先,打开MFC应用程序的代码。 2. 在对话框资源定义一个静态控件,该控件将用于容纳视图。 3. 在对话框类的头文件添加一个成员变量,用于表示视图对象。 4. 打开对话框类的源文件,并在OnInitDialog()函数进行如下操作: a. 调用基类的OnInitDialog()函数。 b. 创建视图对象,使用CreateView()函数并传入静态控件的ID和对话框指针。 c. 将视图对象指针保存到成员变量。 ```c++ BOOL CMyDialog::OnInitDialog() { CDialog::OnInitDialog(); // 创建视图对象 CRect rect; GetDlgItem(IDC_STATIC_VIEW)->GetWindowRect(&rect); ScreenToClient(&rect); m_pView = new CMyView(); m_pView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE, rect, this, IDC_STATIC_VIEW); return TRUE; } ``` 5. 最后,别忘记在对话框类的析构函数删除视图对象。 ```c++ CMyDialog::~CMyDialog() { if (m_pView != nullptr) { delete m_pView; m_pView = nullptr; } } ``` 通过以上步骤,就可以在对话框成功创建一个视图对象,并将其显示在静态控件。这样就可以在对话框展示自定义的图形、数据等内容,并实现与用户的交互。 ### 回答2: 在MFC,在对话框创建一个视图有两种方法可以实现。 方法一:使用视图类(CView)和文档类(CDocument) 1. 创建一个新的MFC应用程序项目,选择“单文档”或“多文档”模式。 2. 在资源视图,打开对话框资源文件(.rc)。 3. 在对话框上选择插入->ActiveX 控件。 4. 在弹出的对话框,选择“Visual C++ 控件类”,然后点击“添加新控件类…”按钮。 5. 输入控件类名,选择CView作为基类,然后点击“完成”。 6. 给控件设置一个唯一的ID。 7. 在对话框类(CDialog)的代码文件,添加对CView类的成员变量。 8. 在OnInitDialog()函数,使用Create()函数创建视图方法二:使用静态控件(CStatic)和视图类(CView) 1. 创建一个新的MFC应用程序项目。 2. 在资源视图,打开对话框资源文件(.rc)。 3. 在对话框上选择插入->控件->静态文本。 4. 调整静态文本的大小和位置,使其占据你想要的视图区域。 5. 在对话框类(CDialog)的代码文件,添加对CView类的成员变量。 6. 在OnInitDialog()函数,使用Create()函数创建视图,并将其父窗口设置为静态文本的句柄。 无论使用哪种方法创建视图后,需要在对话框类的OnSize()函数调整视图的大小和位置,以保证视图随着对话框的大小改变而调整。 总结:以上是两种在MFC对话框创建视图方法。使用方法一可以使视图和文档类关联,方便进行数据的读写和操作;而方法二则更加简单直接。根据项目需求以及个人偏好,选择合适的方法创建视图即可。 ### 回答3: 在MFC,我们可以在对话框创建一个视图,可以通过以下步骤实现: 1. 首先,在MFC应用程序的资源文件夹打开对话框编辑器,选择一个适当的对话框进行编辑。 2. 在对话框编辑器,将“工具箱”窗口的“控件”组件显示出来。 3. 在“控件”组件找到“ActiveX Control”(“ActiveX 控件”),并在对话框绘制一个合适大小的矩形。 4. 右键单击绘制的矩形,选择“添加变量”。 5. 在“添加变量”对话框,将控件名称设置为适当的名称,选择“值”类型为“Control”(“控件”),然后单击“完成”。 6. 在对话框的头文件,找到对控件变量的声明,并将其类型更改为“CWnd”。 7. 在对话框类的源文件(.cpp),找到OnInitDialog()函数。 8. 在OnInitDialog()函数添加以下代码: ``` // 获取控件指针 CWnd* pWnd = GetDlgItem(IDC_YOUR_CONTROL_ID); // 创建视图对象 CYourViewClass* pView = new CYourViewClass(); // 获取视图的矩形区域 CRect rect; pWnd->GetWindowRect(rect); ScreenToClient(rect); // 创建视图窗口 pView->Create(NULL, NULL, WS_VISIBLE | WS_CHILD | WS_BORDER, rect, this, IDC_YOUR_VIEW_ID); // 调整视图窗口的大小和位置 pView->MoveWindow(rect); ``` 注意:需要将“IDC_YOUR_CONTROL_ID”和“IDC_YOUR_VIEW_ID”替换为适当的控件和视图ID。 9. 编译并运行应用程序,你翻看对话框时将会在指定的位置看到创建的视图。 在对话框创建视图可以实现为用户提供更丰富的交互功能,例如通过绘图或显示图形等。但也需要处理好视图的生命周期和内存管理,防止内存泄漏和其他问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clever101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值