2012-12-02 21 views
3

只是想學習一點Win API。我試圖做一個基本的繪圖應用程序,有點像MS Paint。WIn API Basic Paint程序

暫時我試圖讓一個函數工作,也就是說,當你點擊鼠標左鍵並在屏幕上拖動鼠標時,會在鼠標後面畫一條線。下面是我到目前爲止,但由於某種原因:

1)該線開始畫直線,而不是等待左鍵點擊 2)線不固定其非常dotty。

case WM_MOUSEMOVE: 
{ 


    if(MK_LBUTTON){ 
    hdc = GetDC(hwnd); 
    hPen = CreatePen(PS_SOLID,5,RGB(0, 0, 255)); 
    SelectObject(hdc, hPen); 

    int x = LOWORD(lParam); 
    int y = HIWORD(lParam); 

    MoveToEx(hdc,x,y,NULL); 
    LineTo(hdc, LOWORD(lParam), HIWORD(lParam)); 
    ReleaseDC(hwnd,hdc); 
    } 
    else 
     break; 

} 

}

感謝您的幫助!

回答

1

WM_LBUTTONDOWN你在你的程序中設置一個變量來true(「是鼠標是目前下跌),在您的WM_MOUSEMOVE你再檢查變量,只畫它,它是true。在WM_LBUTTONUP你然後設置變量(變量應該初始化爲false)

+0

對不起,我沒有按照你的說法,你能解釋一下嗎?謝謝你的回覆 –

+0

當然,當WM_MOUSEMOVE觸發時,不僅在移動時按下一個按鈕,所以只有在按下按鈕的時候,你首先必須讓你的程序「記住」它是否關閉。 –

+0

so使用WM_LBUTTONDOWN與布爾或東西,當這個等於true然後觸發WM_MOUSEMOVE? –