MFC 滑鼠畫線總結

2021-07-10 05:34:39 字數 500 閱讀 6079

使用mfc滑鼠畫線,主要使用滑鼠左鍵單擊,滑鼠移動,滑鼠右鍵單擊等響應函式完成。

在mfc畫線是主要要注意以下幾點:

1、座標系問題:在滑鼠左鍵單擊的響應函式中獲取的滑鼠座標為裝置座標(螢幕座標),而畫線使moveto,lineto函式使用的是邏輯座標(客戶區座標),因此在獲取滑鼠單擊座標時需要進行座標系的轉換。

同時,如果是在對話方塊的某個控制項上畫線,還需要獲取控制項和對話方塊視窗的相對座標。

座標轉換相關知識參見:

2、滑鼠移動時畫線的擦除問題:

2-1、在滑鼠移動響應函式中使用反色繪圖模式ddd.setrop2(r2_not);擦除上一條臨時線。

2-2、在滑鼠移動結束後,最終畫線是需要擦除滑鼠移動時最後一次繪製的臨時線,否則有可能出現繪製兩條直線的結果。

具體做法為:在左鍵彈起響應函式(或者左鍵第二次單擊判斷函式)中,先使用ddd.setrop2(r2_not)擦除最後一條臨時線,再使用ddd.setrop2(r2_copyen)繪製要求的固定直線。參考資料:

例項107滑鼠畫線

控制項的mousedown事件處理過程青兩個引數,乙個是sender,乙個是mouseeventargs類的事件。mouseeventargs類是定義在system windows forms中的乙個類,它由同乙個命名空間下的eventargs繼承而來。mouseeventargs類的主要屬性有 g...

MFC 滑鼠訊息

1 客戶區滑鼠 滑鼠基本分三種 單擊,雙擊,移動 wm lbuttondown 客戶區中按下滑鼠左鍵 wm leuttonup 客戶區中鬆開滑鼠左鍵 wm lbuttondblclk 客戶區中雙擊滑鼠左鍵 wm mbuttondown 客戶區中按下滑鼠中鍵 wm mbuttonup 客戶區中鬆開滑鼠...

MFC在兩控制項間畫線

cpen pen ps dot,1,rgb 0,0,0 建立乙個畫筆工具,也可用其他型別工具,如cbrush等,第乙個引數線段樣式,ps dot為點虛線,第二個引數為線寬度 cwnd pwnd getdlgitem idc static 獲取畫線所在控制項 cclientdc dc pwnd ccl...