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

C++ MFC&x2B+;从WM_KEYDOWN处理程序获取在OnDraw()中编辑的CDC pDC句柄,c++,mfc,C++,Mfc,单文档,最简单的MFC应用程序 其思想是通过onDraw()函数以某种方式编辑(着色)默认CDC pDC。当用户单击某个数字时,我希望它使用pDC中的颜色显示 如果我对WM_KEYPRESS使用默认的处理函数OnKeyDown,我就不会得到我编辑的pDC的指针 我的问题是如何访问已编辑的pDC? 我确信有一个简单的解决方案我没有,请帮助。我不是100%确定我正确理解了这个问题,但让我试试 在MFC中,我认为您需要的通常和推荐的方法是只处理onDraw()中的所有绘图 因此,在onKeyDown(

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

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

如果我对WM_KEYPRESS使用默认的处理函数OnKeyDown,我就不会得到我编辑的pDC的指针

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

我不是100%确定我正确理解了这个问题,但让我试试

在MFC中,我认为您需要的通常和推荐的方法是只处理
onDraw()
中的所有绘图

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

也可以在
onDraw()
之外创建一个
CPaintDC
,并在此基础上进行绘制。但如前所述,通常在MFC应用程序中,所有图形都保存在一个位置。Windows可能会随时请求您的应用程序重新绘制,并通过
WM_PAINT
消息来执行此操作