想通过点击一个按钮,弹出一个对话框,在此对话框中绘制椭圆(对话框弹出时椭圆已绘制完毕,不需要点击按钮触发)。则需要在新建对话框的OnPaint()函数中绘制
1 建立模态对话框
1.1 插入一个新的对话框
1.2 修改对话框ID:选择对话框,Alt+Enter快捷键进入属性表
1.3 对话框关联到 类中
右键对话框 添加类(或者双击窗口也可)
加入类名
1.4 模态创建
xxDlg.h窗口加入模态类头文件
在xx.DIALOG
对话框双击【双缓冲绘制椭圆】按钮,进入xxDlg.cpp窗口
在OnBnClickedButton2()
函数中加入以下代码:
CDlgEllipse dlg;
dlg.DoModal();
运行效果:
1.5 子窗口加入控件
在子窗口中加入一个Group控件,修改ID
2 子窗口中绘制图形
2.1 添加消息映射标志
在子窗口.cpp
文件中添加消息映射标志
ON_WM_PAINT()
2.2 添加函数声明
在子窗口.h
文件中添加OnPaint()
函数声明
afx_msg void OnPaint();
2.3 添加代码
在子窗口.cpp
文件中实现OnPaint()
函数,在else
中添加绘制代码,这样模态对话框弹出的时候,图形就绘制好了
void CDlgEllipse::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc