我想通過點擊並從點移動光標以,我剛纔複製下面的代碼我的任何WindowProcedure看起來像畫一條線:圖Line WINAPI
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
//PAINTSTRUCT ps;
HDC hdc;
bool draw = false;
int x = 0, y=0;
//InvalidateRect(hwnd, NULL, true);
switch (uMsg)
{
case WM_LBUTTONDOWN:
draw = true;
x = LOWORD(lParam);
y = HIWORD(lParam);
return 0;
case WM_LBUTTONUP:
if (draw)
{
hdc = GetDC(hwnd);
MoveToEx(hdc, x, y, NULL);
LineTo(hdc, LOWORD(lParam), HIWORD(lParam));
ReleaseDC(hwnd, hdc);
}
draw = FALSE;
return 0;
case WM_MOUSEMOVE:
if (draw)
{
hdc = GetDC(hwnd);
MoveToEx(hdc, x, y, NULL);
LineTo(hdc, x = LOWORD(lParam), y = HIWORD(lParam));
ReleaseDC(hwnd, hdc);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
但是當我點擊沒有任何反應,它就像只有一個案件可以處理,是正確的嗎?當我評論前兩種情況時,它會畫出線條,所以它進入切換狀態,但它不是我想要做的。任何建議?
這不是繪畫的工作原理。根據WM_PAINT做繪畫。 –
好,我不喜歡的東西: 情況WM_PAINT: \t \t如果(繪製) \t \t { \t \t \t HDC =的GetDC(HWND);設置像素(hdc,x,y,RGB(50,50,50));以及其中, \t \t \t ReleaseDC(hwnd,hdc); \t \t \t \t } \t \t 返回\t 0; 並且它仍然不起作用。 @編輯,我想我不能添加代碼來評論... – Ravo
不,那不是如何做到這一點。不要猜測。不要這樣做。研究這個話題。沒有人學會通過猜測來編程Win32。 –