1)api函式方法用
hdc
hdc
hdc;
hdc=::getdc(m_hwnd);
movetoex(hdc,m_ptorigin.x,m_ptorigin.y,null);
lineto(hdc,point.x,point.y);
::releasedc(m_hwnd,hdc);
//必須成對使用
這裡獲得getdc()函式需要跟releasedc()函式成對使用
2)用cdc類成員函式。此時別忘記releasedc
cdc *pdc=getdc();
pdc->moveto(m_ptorigin);
pdc->lineto(point);
releasedc(pdc);
//必須成對使用
同樣需要成對使用手動釋放dc
3)用cclientdc
cclientdc dc(
this
);
//cclientdc dc(getparent());
dc.moveto(m_ptorigin);
dc.lineto(point);
//此處不需要releasedc,因為cclientdc會自動釋放dc
cclientdc建構函式傳遞乙個視窗類的物件。其在用完後自動釋放dc,不需要顯式的呼叫releasedc()
4)用cwindowdc,用它甚至可以整個螢幕區域畫線
cwindowdc dc(
this
);
//cwindowdc dc(getparent());
/*cwindowdc dc(getdesktopwindow());//此時可以在整個螢幕上畫線。
dc.moveto(m_ptorigin);
dc.lineto(point);*/
cpen pen(ps_dot,1,rgb(0,255,0));
cclientdc dc(
this
);
cpen *poldpen=dc.selectobject(&pen);
dc.moveto(m_ptorigin);
dc.lineto(point);
dc.selectobject(poldpen);
同樣cwindowdc建構函式也需要傳遞乙個視窗類的物件。與cclientdc的區別是該物件可以訪問整個視窗區域,包括框架視窗(選單欄,工具欄)。而cclientdc只能訪問的是客戶區。
這裡同時可以初步了解一下
cpen *poldpen=dc.selectobject(&pen);函式,同時注意一下其返回值!
這是gdi畫圖的特點,當給dc執行一次selectobject,它將返回前一次selectobject的內容,繪圖完畢,執行dc.selectobject(poldpen)。
就相當於你在畫布上畫圖,你手裡本來預設拿著乙隻白色的畫筆,現在你要畫藍色線條,所以你選了乙個藍色畫筆,畫圖完畢,你還要恢復你手裡預設拿著的白色畫筆。
this的四種用法
js 中的this是比較難理解的。這裡將介紹this的具體用法。主要是下面的四種方法 1.作為物件的方法 2.作為普通函式中 3.作為構造函式呼叫 一 作為物件的方法使用,this指向這個物件 for example var adou a 1,getadou function console.log...
typedef的四種用法
用途一 定義一種型別的別名,而不只是簡單的巨集替換。可以用作同時宣告指標型的多個物件。比如 char pa,pb 這多數不符合我們的意圖,它只宣告了乙個指向字元變數的指標,和乙個字元變數 以下則可行 typedef char pchar 一般用大寫 pchar pa,pb 雖然 char pa,pb...
指標的四種用法
用指標變數儲存記憶體位址 通過指標訪問它所儲存的記憶體位址上的資料 對指標進行計算,使指標發生偏移 在函式間傳遞指標,達到傳遞資料的效果 如果指標指向某個函式,我們可以通過呼叫指標來呼叫它所指向的函式 通過這個函式輸入三十個分數,並列印出大於60分的成績。includetypedef void fu...