任何人都可以帮助我了解如何覆盖从OnPaint()
派生的对话框类的CDialog
。
以下是代码:
ColorImageDlg *pDlg = NULL;
pDlg = new ColorImageDlg;
pDlg->DoModal();
delete pDlg;
我覆盖OnInitDialog()
并且它被调用了。
但是,当覆盖OnPaint()
时,它不会被调用。
任何人都可以帮我修理一下吗?
答案 0 :(得分:2)
首先,在堆上创建对话框实例的重点是什么?你可以这样做:
ColorImageDlg dlg;
dlg.DoModal();
您需要像这样修改您的消息地图:
BEGIN_MESSAGE_MAP(ColorImageDlg, CDialog)
ON_WM_PAINT()
END_MESSAGE_MAP()
使用 VS类向导以避免此类问题。
答案 1 :(得分:2)
如果你不能使用 ClassWizard ,那么还有另外一种方法。这是一个关于它的资源:
( VS2015 版本)https://msdn.microsoft.com/en-us/library/dey7ke4c.aspx
( VS2008 版本)https://msdn.microsoft.com/en-us/library/dey7ke4c(v=vs.90).aspx)
但基本上,一旦您将对话框资源和附加定义为新类,请确保类视图标签已选中:
接下来,确保在班级视图中选择对话框类
然后,点击属性面板的消息图标:
向下滚动消息列表并找到WM_PAINT
。然后单击下拉箭头并选择要添加的选项:
如您所见,它已插入所有需要的代码:
希望这有帮助。