MFC練習1 通過視類與使用者進行簡單互動

2021-06-05 22:15:03 字數 2004 閱讀 6602

ⅰ、在視中響應滑鼠輸入與畫圖

1>建立乙個簡單的文件;

2>建立變數

bool m_bmousedown; //記錄滑鼠左鍵按下

hcursor m_hcross; //十字型滑鼠控制代碼

hcursor m_harrow; //標準型滑鼠控制代碼

cpoint m_ptold; //畫線臨時點

cpoint m_ptstart; //畫線起點

3>新增滑鼠動作響應函式

按下ctrl+w,新增wm_lbuttondown(滑鼠左鍵按下訊息處理函式)

void csdiview::onlbuttondown(uint nflags, cpoint point) 

說明:

a.當在視察口內按下左鍵時,就會執行此函式,point即為當前滑鼠位置,nflags識別ctrl與shift鍵是否按下;

b.setcapture()把以後的滑鼠輸入訊息送到此視窗中;

c.crect是乙個矩形類。

按下ctrl+w,新增wm_mousemove(滑鼠移動訊息處理函式)

void csdiview::onmousemove(uint nflags, cpoint point) 

cview::onmousemove(nflags, point);

}

說明:

a.當滑鼠在視窗移動時,此函式以一定的時間間隔被呼叫;

b.由於滑鼠的移動,而此函式又在不斷的呼叫,要擦除許多多餘的畫線;

c.moveto()將畫筆移到指定的位置,liveto()從當前位置到指定點畫直線,setrop2()設定繪圖方式,r2_not表示用該位置的相反顏色。

按下ctrl+w,新增wm_lbuttonup(滑鼠左鍵放開訊息處理函式)

void csdiview::onlbuttonup(uint nflags, cpoint point) 

cview::onlbuttonup(nflags, point);

}

ⅱ、在視中響應鍵盤輸入與顯示字元

1>建立乙個簡單的文件;

2>建立變數

int m_nline;//記錄已經輸入字元的行數

cstring m_strdisplay;//字串

3>新增鍵盤訊息響應函式

按下ctrl+w,新增wm_char(鍵盤訊息處理函式)

void csdiview::onchar(uint nchar, uint nrepcnt, uint nflags) 

else if(m_strdisplay.getlength()<64)m_strdisplay+=nchar;//限定一行只顯示64個字元,將按下的字元的acsii碼值加在後面

cclientdc dc(this);

textmetric tm; //包含顯示字元的尺寸資訊的結構體

dc.gettextmetrics(&tm);//獲得字元尺寸的具體數值

int nlineheight=tm.tmheight+tm.tmexternalleading;//tmheight為字元高度,tmexternalleading為行間距

dc.textout(0,m_nline*nlineheight,m_strdisplay); //起始點x座標,終點y座標,字串

cview::onchar(nchar, nrepcnt, nflags);

}

說明:

a.當按下某鍵時,onchar()就被呼叫,引數nchar為按下鍵的ascii碼值,nrepcnt是重複次數,nflags為一些標誌

b.textout()用於輸出字串。

Flex Modules通訊 1 通過介面

flex modules通訊方式有很多種 通過繼續介面 引數傳遞 定義事件通訊。這裡討論通過繼續介面通訊。模組是獨立,通過繼承介面,允許外部應用程式與他們通訊。首先,定義介面icommunicaton.as 1 package 2 9 建立module繼承icommunicaton介面 1 2 xm...

練習題1 通過函式生成52張撲克牌

練習題要求 1.寫函式,返回乙個撲克牌列表,裡面有52項,每一項是乙個元組.例如 紅心 2 草花 2 黑桃a 分析步驟 1.52張牌不包括大小王.我們可以先定義乙個臨時空列表,然後把2 10的數字新增進去,再用列表的extend 方法把jqka也新增到臨時列表中 2.迴圈獲取撲克牌型別 黑桃 紅桃 ...

服務架構調整1 通過nginx灰度發布應用

隨著公司業務規模擴大,傳統的架構已無法支撐業務量階梯式的增長,應用發布也必須迎來調整。之前的發布方式,需要通過指令碼切換nginx,然後通過ansible進行批量發布 由於業務的特殊性質,原有方案一旦上線 出現bug或者人為出現操作失誤,將導致大面積應用無法提供服務,為了避免故障發生造成毀滅性的後果...