-1

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

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

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

4

1 回答 1

5

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

于 2012-09-01T14:08:50.957 回答