WINDOWS程式設計 複習(2)

2021-06-22 01:54:20 字數 4044 閱讀 9265

可選mm_anisotropic

任意( x = y )可選可選

上面這個圖我是從這個部落格轉過來的。

至於有什麼區別了,我覺得說不清楚,直接給上測試**吧

#include

lresult callback wndproc (hwnd, uint, wparam, lparam) ;

int winapi winmain (hinstance hinstance, hinstance hprevinstance,

pstr szcmdline, int icmdshow)

cw_usedefault, cw_usedefault,

cw_usedefault, cw_usedefault,

null, null, hinstance, null) ;

showwindow (hwnd, icmdshow) ;

updatewindow (hwnd) ;

while (getmessage (&msg, null, 0, 0))

return msg.wparam ;

}void show (hwnd hwnd, hdc hdc, int xtext, int ytext, int imapmode,

tchar * szmapmode)

lresult callback wndproc (hwnd hwnd, uint message, wparam wparam, lparam lparam)

return defwindowproc (hwnd, message, wparam, lparam) ;

}

我覺得上面解釋的也比較含糊,可以看上面的鏈結。但是很多函式都可以在上面看到。

再就是具體的繪製函式

setpixel(hdc,x,y,crcolor)//設定畫素點的特定顏色

getpixel(hdc,x,y)//返回指定座標位置的畫素顏色;

lineto//畫直線

polyline和polylineto//畫一條由多條首尾相連的直線構成的折線

polypolyline//畫多條折線

arc//畫橢圓弧線

polybezier和polybezierto//畫貝塞爾樣曲線

arcto和anglearc//畫橢圓弧線

polydraw//畫多條貝塞爾樣條曲線或者一條由多條首尾相連直線構成的折線

rectangle//畫矩形

ellipse//畫橢圓

roundrect//畫圓角矩形

pie//畫橢圓的一部分,使其看起來像乙個扇形

chord//畫出由弦割出的部分橢圓,形狀呈弓形

使用畫筆(支援3種預設顏色實心白色,實心黑色和沒有畫筆)

hpen hpen;

hpen=getstockobject(white_pen);

selectobejct(hdc,hpen);//selectobject(hdc,getstockobject(white_pen))把畫筆顏色選入裝置上下文

建立畫筆(不滿足那些預設畫筆)

hpen=createpen(ipenstyle,iwidth,crcolor);//ipenstyle決定是實線,虛線或者點線 iwidth是畫筆寬度  crcolor是決定顏色

填充空隙setbkcolor(hdc,crcolor);//改變windows填充空隙的背景顏色

由乙個方法可以阻止填充顏色,就是將背景設定為透明

setbkmode(hdc,transparent);

對於畫刷的操作就是hpen改為hbrush。

polygon填充有乙個特別的規則,就是填充的時候有些特別,不影響大概就不用考慮,哈哈。

嗯還是複習下,就是分為alternate和windig模式。

setpolyfillmode(hdc,imode);//imode就是模式

alternate模式,是否被填充,設想從區域內乙個點畫乙個無窮遠的射線,奇數填充,偶數不填。

windig模式,要確定乙個區域十分應該被填充,設想從區域內的乙個點畫一條伸向無窮遠的射線,奇數填充,偶數要考慮邊框方向,不同方向的邊框線的數目相等,不填充,否則就填充。

好啦好啦,來複習鍵盤和滑鼠啦啦啦啦。

鍵盤肯定有鍵盤訊息啦,接受到這個鍵盤事件的視窗稱為有輸入焦點的視窗

鍵盤訊息分為擊鍵和字元兩種。//擊鍵就是按下與釋放,或者說一些組合鍵產生的訊息

非系統擊鍵 wm_keydown wm_keyup(按下與釋放)

系統擊鍵 wm_syskeydown wm_syskeyup

wparam引數包含了虛擬鍵**,lparam引數包含了幫助理解擊鍵的其他有用訊息

通過getkeystate();//可以知道釋放有轉義鍵

可以用senmessage(hwnd,message,wparam,lparam);//他攜帶了傳給視窗過程的引數

如果我要寫乙個個性化的txt程式了,如何捕捉字元了

這個時候就出來了字元訊息

非系統字元 wm_char

wm_deadchar

系統字元    wm_syschar      wm_sysdeadchar

getgetkeynametext(long lparam,lptstr  lpstring,int size);

//lparam指定被處理的鍵盤訊息(例如wm_keydown)的第二個引數

//lpstring:指向接受鍵名的緩衝區的指標。

//nsize:指定鍵名的最大字元長度,包括空結束符。(該引數值應與lpstring引數指定的緩衝區的大小相等)。

還有一些插入符號函式

createcaret//建立和視窗關聯的插入符號

setcarepos//設定視窗內的插入符號的位置

showcaret//顯示插入符號

hidecaret//隱藏插入符號

destroycaret//銷毀插入符號

嗯繼續滑鼠

客戶區滑鼠訊息

左鍵wm_lbuttondown

wm_lbuttonup

wm_lbuttondblclk

中鍵wm_mbuttondown

wm_mbuttonup

wm_mbuttondblclk

右鍵wm_rbuttondown

wm_rbuttonup

wm_rbuttondblclk

移動會產生wm_mousemove來獲取然後使用lowrod(lparam)和hiword(lparam)來得到滑鼠地點

雙擊可以再wndclass.style=cs_dblclks就會改變一些訊息

wm_lbuttondown

wm_lbuttondown

wm_lbuttonup

wm_lbuttonup

wm_lbuttondown

wm_lbuttondblclk

wm_lbuttonup

wm_lbuttonup

非客戶的訊息幾乎與其全部對應

左鍵wm_nclbuttondown

wm_nclbuttonup

wm_nclbuttondblclk

中鍵wm_ncmbuttondown

wm_ncmbuttonup

wm_ncmbuttondblclk

右鍵wm_ncrbuttondown

wm_ncrbuttonup

wm_ncrbuttondblclk

其他照舊***

還有乙個showcursor(true);//有乙個計數就是當計數非0才會顯示滑鼠,預設初始化為0,。引數為true為+1引數為false-1

getcursorpos(&pt)//可以獲取滑鼠位置

setcursorpos(x,y);//設定滑鼠位置

當你從客戶區或者非客戶區到視窗外的時候,你怎麼判斷訊息了

這裡要用捕獲滑鼠函式了

setcapture(hwnd);//捕獲到滑鼠

releasecapture()//釋放滑鼠

嗯,我會

windows程式設計之C 的複習!

列舉型別的宣告形式 enum 列舉型別名 值得注意的是 列舉元素按常量處理,不能賦值 列舉元素具有預設的值,依次為 0,1,2,3,例如 enum gameresult 而 enum gameresult omit cancel 則是定義了乙個列舉型的變數omit並給其賦值為cancel 例如以下 ...

Windows程式設計筆記2

1.關於hdc hdc hdc hdc getdc hwnd for int i 0 i 20 i releasedc hwnd,hdc getdc 與releasedc 一起使用。不能用於beginpain hdc beginpaint hwnd,ps textout hdc,0,0,paintd...

網路程式設計複習 Exp2

1.工程檔案需鏈結套接字動態鏈結庫,我用的是ws2 32.dll 也可以靜態鏈結,但應該增加了編譯代價。2.源 server general main.cpp include include void main void client general main.cpp include include...