一区二区国产高清视频在线_真人性做爰A片免费_强伦人妻BD在线电影_亚洲熟妇无码AV_免费人成视频在线观看网站_亚洲欧美精品午睡沙发_在线观看无码的免费网站_中文字幕无码A片久久_日韩欧美国产一区精品_久久精品女人天堂av
重慶醫(yī)科大學(xué)論壇
標(biāo)題:
win32學(xué)習(xí)初級(jí)三
[打印本頁(yè)]
作者:
重新來(lái)過(guò)
時(shí)間:
2006-12-2 14:30
標(biāo)題:
win32學(xué)習(xí)初級(jí)三
靠,最近天天加班,忙得頭疼,連續(xù)3天沒(méi)睡好覺(jué)。一天就睡4個(gè)小時(shí),慘!!!
今天給大家寫點(diǎn)東西。
呵呵同事光驅(qū)壞了,底下這段代碼挺長(zhǎng),我慢慢敲,有錯(cuò)的地方大家可以提出來(lái)。呵呵
#cinlude <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPre,PSTR szCmdLine,int iCmdshow)
{
static TCHAR szAppName[] = TEXT("窗口");
//大家想想 上面可不可以這么些 static TCHAR* psAppName = TEXT("窗口");
HWND hwnd;//定義窗口句炳
MSG msg;//定義消息結(jié)構(gòu)體變量
WINDCLASS wndclass;//定義窗體類變量基于窗體的所有信息基本上封裝在這個(gè)類里
wndclass.style = CS_HREDRAW | CS_VREDRAW;/窗體的模式定義,左右改變窗體
//大小時(shí),重新繪制客戶區(qū)
wndclass.lpfnWndProc = WndProc;//這里是把函數(shù)地址付給類的成員變量,我向大家沒(méi)忘記
//函數(shù)名和類名數(shù)組名一樣是一個(gè)指針吧,
//還有就是不是程序運(yùn)行到這個(gè)點(diǎn)時(shí),啟動(dòng)事件驅(qū)動(dòng)函數(shù)
wndclass.cbClsExtra = 0; //這個(gè)成員變量基本上等于被廢棄,一般很少用它,也可以將其賦
//值為NULL
wndclass.cbWndExtra = 0;//同上,在以后我會(huì)給大家舉例子說(shuō)明如何使用上面的成員變量
//暫且把他們認(rèn)為是保留字
wndclass.hInstance = hInstance; // 程序運(yùn)行時(shí)唯一標(biāo)志符
wndclass.hInon = LoadIcon(NULL,IDI_APPLICATION);//這里是控制窗體左上角顯示的小圖
//表。這里使用的是默認(rèn)圖表,如果想用自己做的,可以把第二個(gè)參數(shù)改變
//同時(shí)第一個(gè)參數(shù)相應(yīng)的改變?yōu)閔Instance
wndclass.hCursor = LoadCursor(NULL,IDI_ARROW)//這里是設(shè)置光標(biāo)圖案,其他同上。
// 窗體客戶區(qū)背景色的設(shè)置 ---- 白色
wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL; //菜單設(shè)置-------無(wú)
wndclass.lpszClassName = szAppName; //類名的設(shè)置
//下面就是注冊(cè)窗口類,說(shuō)白了 就是想系統(tǒng)申請(qǐng)資源
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,"123","123456",NULL);
}
// 接下來(lái)就得創(chuàng)建窗體
hwnd = CreateWindow(
類名,
窗口標(biāo)題,
窗口樣式,
橫向坐標(biāo)起始點(diǎn),//就是窗口左上角在屏幕中的位置
縱向坐標(biāo)起始點(diǎn),//就是窗口左上角在屏幕中的位置
橫向坐標(biāo)末端點(diǎn),//就是窗口右下角在屏幕中的位置
縱向坐標(biāo)末端點(diǎn)//就是窗口右下角在屏幕中的位置
);
// 顯示窗口
ShowWindow(hwnd,iCmdShow);
// 更新窗口
UpdateWindow(hwnd);
//消息循環(huán)(略)
//程序返回
}
呵呵 省略不少東西,不過(guò)大致的意思大家應(yīng)該能看懂,個(gè)人感覺(jué)注釋夠詳細(xì)了。
上面的代碼中,我們要的關(guān)鍵東西就是 hInstance,和 hwnd ,只要我們擁有這兩個(gè)變量,我們就可以在其他的程序里對(duì)上面的資源為所欲為
程序的主體時(shí)消息循環(huán),別的只是資源的初始化
消息循環(huán)其實(shí)是個(gè)“死”循環(huán)。除非我們單擊關(guān)閉按鈕,向系統(tǒng)發(fā)送關(guān)系信息,這是GetMesage函數(shù)的返回值是假,這樣程序就結(jié)束。那么程序如何來(lái)處理消息
消息循環(huán)如下
if(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);//這里我們分析與解析消息
DispatchMessage(&msg); //這里我們發(fā)送消息
// 我們通過(guò)lpfnWndProc 來(lái)調(diào)用WndProc函數(shù),因?yàn)樵谏厦嫖覀儼押瘮?shù)WndProc的地址賦
//值給lpfnWndProc ,所以這里就可以直接用lpfnWndProc來(lái)替代函數(shù)名WndProc,注意這
//里沒(méi)有宏的概念,只是簡(jiǎn)單的指針操作。
}
下面是消息處理函數(shù)。更多人看到的是用switch,其實(shí)多一樣,個(gè)人感覺(jué)這樣更便于理解,有人說(shuō),你這樣做不對(duì),很有可能兩個(gè)消息的值是一樣的,如果這有這種情況,用switch也是錯(cuò)的,因?yàn)閷?huì)有個(gè)消息無(wú)法得到啟動(dòng)
LRESULT CALLBACK WndProc(HWND,UINT msg,WPARAM,LPARAM)
{
//略
if(msg == WM_CREATE)
{
//
調(diào)用CreateWindow函數(shù)成功時(shí),啟動(dòng)這個(gè)消息
return ;
}
if(msg == WM_PAINT)
{
//當(dāng)窗體的一部分無(wú)效時(shí),我們會(huì)自己去觸發(fā)這個(gè)消息,重新繪制窗口,否則無(wú)效區(qū)域
//將是一片空白
return ;
}
if(msg == WM_DESTROY)
{
//程序結(jié)束時(shí)我們觸發(fā)這個(gè)消息
return;
}
}
我靠 終于講完這篇,不知道兄弟們有沒(méi)有理解,呵呵,下次咱做個(gè)能跑起來(lái)并且能做點(diǎn)東西的東東
作者:
ptnotree
時(shí)間:
2006-12-3 21:07
如果想讓別人跟著你的教程來(lái)學(xué)習(xí),就得更多的考慮初學(xué)者的狀態(tài)和學(xué)習(xí)過(guò)程!
另外:2怎么沒(méi)看到?
作者:
重新來(lái)過(guò)
時(shí)間:
2006-12-4 19:32
呵呵 師兄 2 早就寫過(guò)了 至于教程嘛 ,我沒(méi)有,
不過(guò)我寫的不是很深吧,初學(xué)者應(yīng)該能看懂 ,還有啊 上面的我感覺(jué)寫的已經(jīng)是超級(jí)簡(jiǎn)單了,我當(dāng)初學(xué)習(xí)win32的時(shí)候,可沒(méi)有這么詳細(xì)解釋的代碼.
win32的入門篇應(yīng)該是這樣,至于其他的一些基礎(chǔ)鋪墊我感覺(jué)可以自己去看書,我沒(méi)必要寫出來(lái).多是死的東西.自己稍微看看就夠了
至于教程我準(zhǔn)備先自己寫著,然后在做遺漏補(bǔ)充.等過(guò)幾天我給大家推薦一本書,自己參考著看
師兄說(shuō)考慮初學(xué)者的狀態(tài),這個(gè)我不太好把握.我想初學(xué)者迷惑的地方應(yīng)該是程序的運(yùn)行流程,這個(gè)我下次寫的時(shí)候給補(bǔ)上,其他的沒(méi)什么難的地方
作者:
showcan112233
時(shí)間:
2006-12-9 20:28
標(biāo)題:
hehe
我來(lái)過(guò)了
哥哥下次給講一下鉤子函數(shù)吧
作者:
重新來(lái)過(guò)
時(shí)間:
2006-12-10 10:45
工作找到?jīng)]有
這個(gè)等我元旦放假寫,最近挺忙活
歡迎光臨 重慶醫(yī)科大學(xué)論壇 (http://www.espacio12.com/)
Powered by Discuz! X3.4