我在我的对话框 class 中添加了一个 OnPaint() 函数,但它在 dlg.DoModal() 之后没有被调用
I have added an OnPaint() function to my dialog class but its not getting called after dlg.DoModal()
任何人都可以帮助我了解如何为从 CDialog
.
派生的对话框 class 覆盖 OnPaint()
代码如下:
ColorImageDlg *pDlg = NULL;
pDlg = new ColorImageDlg;
pDlg->DoModal();
delete pDlg;
我正在覆盖 OnInitDialog()
并且正在调用它。
但是在覆盖 OnPaint()
时它没有被调用。
谁能帮我解决一下?
首先,在堆上创建对话框的实例有什么意义?你可以简单地做:
ColorImageDlg dlg;
dlg.DoModal();
您需要像这样修改消息映射:
BEGIN_MESSAGE_MAP(ColorImageDlg, CDialog)
ON_WM_PAINT()
END_MESSAGE_MAP()
使用 VS Class 向导 来避免类似的问题。
如果您不能使用Class向导,那么还有另一种方法。这是有关它的资源:
(VS2015版本)https://msdn.microsoft.com/en-us/library/dey7ke4c.aspx
(VS2008版本)https://msdn.microsoft.com/en-us/library/dey7ke4c(v=vs.90).aspx)
但基本上,一旦您定义了 对话资源 并将其 附加 到 新的 class,确保 Class 查看 选项卡是 selected:
接下来,确保您的对话框 class 在 class 视图中 selected:
然后,单击 属性 面板的消息图标:
向下滚动消息列表并找到 WM_PAINT
。然后单击下拉箭头和 select 添加它的选项:
如您所见,它已插入所有需要的代码:
希望这对您有所帮助。
任何人都可以帮助我了解如何为从 CDialog
.
OnPaint()
代码如下:
ColorImageDlg *pDlg = NULL;
pDlg = new ColorImageDlg;
pDlg->DoModal();
delete pDlg;
我正在覆盖 OnInitDialog()
并且正在调用它。
但是在覆盖 OnPaint()
时它没有被调用。
谁能帮我解决一下?
首先,在堆上创建对话框的实例有什么意义?你可以简单地做:
ColorImageDlg dlg;
dlg.DoModal();
您需要像这样修改消息映射:
BEGIN_MESSAGE_MAP(ColorImageDlg, CDialog)
ON_WM_PAINT()
END_MESSAGE_MAP()
使用 VS Class 向导 来避免类似的问题。
如果您不能使用Class向导,那么还有另一种方法。这是有关它的资源:
(VS2015版本)https://msdn.microsoft.com/en-us/library/dey7ke4c.aspx
(VS2008版本)https://msdn.microsoft.com/en-us/library/dey7ke4c(v=vs.90).aspx)
但基本上,一旦您定义了 对话资源 并将其 附加 到 新的 class,确保 Class 查看 选项卡是 selected:
接下来,确保您的对话框 class 在 class 视图中 selected:
然后,单击 属性 面板的消息图标:
向下滚动消息列表并找到 WM_PAINT
。然后单击下拉箭头和 select 添加它的选项:
如您所见,它已插入所有需要的代码:
希望这对您有所帮助。