1
我正在試圖製作一個程序來控制箭頭鍵的方框的移動。我在我的代碼中遇到問題。是否可以通過SendMessage向WM_PAINT發送消息以繪製一個新的矩形按下左鍵? 以下是我的代碼發送消息到WM_PAINT
case WM_KEYDOWN:
switch(wParam)
{
case VK_LEFT: //LEFT MOVEMENT
SendMessage(hwnd,WM_PAINT,VK_LEFT,0);
break;
case VK_ESCAPE:
//FOR ENDING THE GAME WITH ESCAPE KEY
SendMessage(hwnd,WM_DESTROY,VK_ESCAPE,0);
break;
}
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
Rectangle(hdc,x,600,x1,700);
if(wParam==VK_LEFT)
{ Rectangle(hdc,x-50,600,x1-50,700);
}
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
where
x1=550;
x=500
當按下左鍵,然後就控制進行到WM_PAINT
因爲當我寫
if(wParam==VK_LEFT)
{ Rectangle(hdc,x-50,600,x1-50,700);
}
什麼也不會發生,但是當我寫
if(wParam==VK_ESCAPE)
PostQuitMessage(0);
return 0;
該窗口以退出鍵退出 它不是最終的代碼。我只是想明白,爲什麼VK_LEFT
不執行?
+1 This。雖然你可以發送'WM_PAINT',但它不會像預期的那樣工作(例如'WM_TIMER')。 – Damon
它是專門用於WM_PAINT嗎? – Freedom911
@Damon如果你發送了'WM_PAINT',或者甚至發佈了它,當處理該消息的窗口過程調用'BeginPaint'時會發生什麼? –