MFC C ++从WM_KEYDOWN处理程序获取在OnDraw()中编辑的CDC pDC的句柄

时间:2016-05-04 03:10:06

标签: c++ mfc

单个文档,最简单的MFC应用程序。

这个想法是默认的CDC pDC以某种方式从onDraw()函数编辑(着色)。当用户点击数字时,我希望使用pDC中的颜色显示它。

如果我使用WM_KEYPRESS的默认处理函数OnKeyDown,我没有得到我编辑过的pDC的指针。

我的问题是如何访问已编辑的pDC? 我确信有一个我想念的简单解决方案,请帮助。

1 个答案:

答案 0 :(得分:2)

我并非100%确定我正确理解了这个问题,但让我试试......

MFC中通常和推荐的方式来做我认为你想要的只是处理onDraw()中的所有绘图。

因此,在onKeyDown()处理程序中,您将按下的键存储到成员变量(或者甚至可以将其推送到要绘制的vectorlist个键,并且然后拨打Invalidate(false)。这会导致Windows向您的窗口生成WM_PAINT消息,最终会在onDraw()中处理,您现在可以根据当前的成员变量值绘制正确的内容。

也可以在CPaintDC之外创建onDraw()并在其上绘制。但正如所说,通常在MFC应用程序中,所有绘图都保存在一个地方。 Windows可以随时请求您的应用重绘,并使用WM_PAINT消息执行此操作。