为什么我的Win32程序不能多次绘制?

时间:2012-09-01 14:04:43

标签: api winapi visual-c++ draw paint

我正在尝试创建一个程序来检测按键并在窗口上绘制相应的字母。一切正常,但它只绘制一次......当我按下另一个键时没有任何反应。

case WM_KEYDOWN:
{ 
   if (GetKeyState(0x41))
   {
      pCtrl->Paint (65);
   }    

Paint函数调用Char函数,该函数使用::Textout绘制角色 所有我无法理解的是为什么它不会多次吸引

1 个答案:

答案 0 :(得分:5)

如果没有Paint的代码很难回答,但我认为你正在接近这个问题。 Win32应用程序只应在处理WM_PAINT消息时修改其显示区域。当收到WM_KEYDOWN消息时,它应使用InvalidateRect()使显示无效并让应用程序重绘自身。为了消除不可避免的闪烁,WM_KEYDOWN处理程序可以记录更改的类型,WM_PAINT处理程序只能更新显示该字符的显示。