青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Sunshine Alike

半完美主義

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  35 Posts :: 1 Stories :: 56 Comments :: 0 Trackbacks

常用鏈接

留言簿(15)

積分與排名

  • 積分 - 51327
  • 排名 - 451

最新隨筆

最新評(píng)論

Windows 應(yīng)用程序基本結(jié)構(gòu)

一個(gè)完整的 windos 應(yīng)用程序通常由下面五種類(lèi)型的文件組成:

1.???????? 擴(kuò)展名為 .c/.cpp 的C語(yǔ)言程序源文件

2.???????? 擴(kuò)展名為 .h 的頭文件

3.???????? 擴(kuò)展名為 .rc 的資源描述文件

4.???????? 擴(kuò)展名為 .def 的模塊定義文件

5.???????? 擴(kuò)展名為 .mak 的項(xiàng)目文件

前面三種很常見(jiàn)了,不過(guò)后面兩個(gè)就 ……

暫時(shí)不管,以后遇見(jiàn)了再說(shuō)。

源程序組成結(jié)構(gòu)

console 程序相對(duì)應(yīng), windows 應(yīng)用程序也有一個(gè)入口函數(shù) WinMain ,用于完成一系列的定義和初始化工作,并產(chǎn)生消息循環(huán)。消息循環(huán)是整個(gè)程序運(yùn)行的核心。此外,窗口函數(shù) WndProc 是處理接收到的消息的函數(shù)。其中包含了應(yīng)用程序?qū)Ω鞣N可能接收到的消息的處理過(guò)程。

?

WinMain 函數(shù)的功能:

注冊(cè)窗口類(lèi),建立窗口及執(zhí)行其他必要的初始化工作

進(jìn)入消息循環(huán),根據(jù)從應(yīng)用程序消息隊(duì)列接受的消息調(diào)用相應(yīng)的處理過(guò)程。

當(dāng)消息循環(huán)檢測(cè)到 WM_QUIT 消息時(shí)終止程序運(yùn)行。

WinMian 函數(shù)由三個(gè)基本組成部分:函數(shù)說(shuō)明、初始化和消息循環(huán)。

(1)????? 函數(shù)說(shuō)明

int WINAPI WinMain

(

?????? HINSTANCE hThisInst,??????? // 應(yīng)用程序當(dāng)前實(shí)例句柄

?????? HINSTANCE hPrevInst,????????????? // 應(yīng)用程序其它實(shí)例句柄

?????? LPSTR lpszCmdLine,?????????? // 指向程序命令行參數(shù)的指針

?????? Int nCmdShow??????????????????? // 應(yīng)用程序開(kāi)始執(zhí)行時(shí)窗口顯示方式的標(biāo)識(shí)

)

應(yīng)當(dāng)注意到, windows 程序可能并行的進(jìn)行多次執(zhí)行,因而可能出現(xiàn)同一個(gè)應(yīng)用程序的多個(gè)窗口同時(shí)存在的情況。在 windows 中,每執(zhí)行一次稱其為一個(gè)實(shí)例( instance ),并使用一個(gè)實(shí)例句柄進(jìn)行唯一的標(biāo)識(shí)。

?

(2)????? 初始化工作包括:窗口類(lèi)的定義,注冊(cè),創(chuàng)建窗口實(shí)例和顯示窗口四個(gè)部分。

??????????? 窗口類(lèi)的定義

windows 程序中,窗口類(lèi)定義了窗口的形式與功能。窗口類(lèi)定義通過(guò)給窗口類(lèi)數(shù)據(jù)結(jié)構(gòu) WNDCLASS 賦值完成,該數(shù)據(jù)結(jié)構(gòu)中包含窗口類(lèi)的各種屬性。常用函數(shù)有:

LoadIcon 在程序中加載一個(gè)窗口圖標(biāo)

LoadCursor 向程序加載一個(gè)窗口光標(biāo)

GetStockObject  可以獲取各種系統(tǒng)默認(rèn)資源

??????????? 注冊(cè)窗口類(lèi)

Windows 系統(tǒng)本身提供部分預(yù)定義的窗口類(lèi),程序員也可以自定義窗口類(lèi)。窗口類(lèi)必須先用函數(shù) RegisterClass 進(jìn)行注冊(cè)后才能使用。

其形式為: ??? BOOL RegisterClass( &wndClass )

??????????? 創(chuàng)建窗口

窗口創(chuàng)建由函數(shù) CreateWindow 實(shí)現(xiàn),其原型為:

HWND CreateWinodw

(

LPCTSTR lpszClassName,?????????? // 窗口類(lèi)名,此窗口名必須是已經(jīng)注冊(cè)過(guò)

LPCTSTR lpszTitile,??????????????????? // 窗口標(biāo)題

DWORD dwStyle,?????????????????????? // 窗口樣式

int x,?????????????????????????????????????????

int y,???????????????????????????????????????????????? // 窗口左上角坐標(biāo)

int nWidth,

int nHeight,???????????????????????????????? // 窗口高寬

HWND hwndParent,??????????????????? // 該窗口父窗口句柄

HMENU hMenu,???????????????????????? // 主菜單句柄

HINSTANCE hInstance,???????????????????? // 當(dāng)前應(yīng)用程序句柄

LPVOID lpParam??????????????????????? // 指向一個(gè)傳遞給窗口參數(shù)值的指針

)

??????????? 顯示窗口

窗口類(lèi)顯示由 ShowWindow UpdateWindow 函數(shù)實(shí)現(xiàn)。

ShowWindow 將窗口顯示在屏幕上,形式為 BOOL ShowWindow( HWND, int )

顯示完窗口后常常使用 UpdateWindow 更新并繪制用戶區(qū),并發(fā)出 WM_PAINT 消息,形式為 UpdateWindow( HWND )

?

(3)????? 消息循環(huán)

Windows 應(yīng)用程序的運(yùn)行以消息為核心。 Windows 將產(chǎn)生的消息放入應(yīng)用程序的消息隊(duì)列中,而應(yīng)用程序的 WinMain 函數(shù)在消息循環(huán)中提取隊(duì)列中的消息,并將其傳遞給窗口函數(shù)的相應(yīng)過(guò)程處理。

消息循環(huán)常見(jiàn)格式為:

MSG?msg;

while (GetMessage( & msg,?NULL,? 0 ,? 0 ))?????? // 讀取一條消息存放在一個(gè)MSG結(jié)構(gòu)中

{

???????TranslateMessage(
& msg);??????????????????? // 將消息的虛擬鍵轉(zhuǎn)換為字符信息

???????DispatchMessage(
& msg);??????????????????? // 將參數(shù)指向的消息傳送到指定的窗口函數(shù)

}


只有當(dāng)

GetMessage 函數(shù)返回 0 值,即檢索到 WM_QUIT 消息時(shí),程序結(jié)束退出。

?

窗口函數(shù)

窗口函數(shù)的主體是消息處理語(yǔ)句,由一系列 case 語(yǔ)句組成。程序員只需要根據(jù)窗口可能收到的消息在 case 語(yǔ)句中編寫(xiě)相應(yīng)的處理程序段即可。一般形式如下:

LRESULT?CALLBACK?WndProc?(HWND?hwnd,?UINT?message,?

WPARAM?wParam,?LPRARM?lParam)

{

???????…

swithch(message)

{

???????
case ?…

??????????????…

???????
case ?WM_DESTROY:

??????????????PostQuitMessage(
0 );

???????
default :

??????????????
return ?DefWindowProc(hwnd,?message,?wParam,?lParam);

}


???????
return ? 0 ;

}

?

?

??????????? 應(yīng)用程序舉例  Hello Windows API

#include? windows.h >

?

LRESULT?CALLBACK?WndProc(HWND?hwnd,?UINT?message,?

???????????????????????????????????????????WPARAM?wParam,?LPARAM?lParam)

{

???????
switch (message)

???????
{

???????
case ?WM_DESTROY:

??????????????PostQuitMessage(
0 );

??????????????
break ;

???????
default :

??????????????
return ?DefWindowProc(hwnd,?message,?wParam,?lParam);

???????}


???????
return ? 0 ;

}


?

int ?WINAPI?WinMain(HINSTANCE?hInstance,

?????????????????????HINSTANCE?hPrevInstance,

?????????????????????LPSTR?????lpCmdLine,

?????????????????????
int ???????nCmdShow)

{

???????HWND?hwnd;

???????MSG?msg;

???????WNDCLASS?wndclass;

???????
char ?lpszClassName[]? = ? " hello " ;

???????
char ?lpszTitle[]? = ? " Hello?Windows?API " ;

???????
// ------------窗口類(lèi)的定義

???????wndclass.style?
= ? 0 ;

???????wndclass.lpfnWndProc?
= ?WndProc;

???????wndclass.cbClsExtra?
= ? 0 ; // 類(lèi)無(wú)擴(kuò)展

???????wndclass.cbWndExtra?
= ? 0 ; // 窗口無(wú)擴(kuò)展

???????wndclass.hInstance?
= ?hInstance; // 當(dāng)前句柄實(shí)例

???????wndclass.hIcon?
= ?LoadIcon(NULL,IDI_APPLICATION); // 最小化為默認(rèn)圖標(biāo)

???????wndclass.hCursor?
= ?LoadCursor(NULL,IDC_ARROW); // 箭頭光標(biāo)

???????wndclass.hbrBackground?
= ?(HBRUSH)GetStockObject(BLACK_BRUSH); // 黑色背景

???????wndclass.lpszMenuName?
= ?NULL; // 無(wú)菜單

???????wndclass.lpszClassName?
= ?lpszClassName; // 窗口類(lèi)名

?

???????
// ------------窗口類(lèi)注冊(cè)

???????
if ( ! RegisterClass( & wndclass))

???????
{

??????????????MessageBeep(
0 ); // 如果失敗發(fā)出警告音

??????????????
return ?FALSE;

???????}


???????
// 創(chuàng)建窗口

???????hwnd?
= ?CreateWindow(lpszClassName,?lpszTitle,

??????????????????????????????????????????WS_SYSMENU,
// 窗口風(fēng)格

??????????????????????????????????????????CW_USEDEFAULT,
// 左上角坐標(biāo)為默認(rèn)值

??????????????????????????????????????????CW_USEDEFAULT,

??????????????????????????????????????????
400 , // 窗口高寬

??????????????????????????????????????????
300 ,

??????????????????????????????????????????NULL,
// 無(wú)父窗口

??????????????????????????????????????????NULL,
// 無(wú)主菜單

??????????????????????????????????????????hInstance,
// 創(chuàng)建窗口程序的當(dāng)前句柄

??????????????????????????????????????????NULL);
// 不使用該值

???????ShowWindow(hwnd,?nCmdShow);

???????UpdateWindow(hwnd);

?

???????
// -------------消息循環(huán)

???????
while (GetMessage( & msg,?NULL,? 0 ,? 0 ))

???????
{

??????????????TranslateMessage(
& msg);

??????????????DispatchMessage(
& msg);

???????}


?

???????
return ?msg.wParam;

}

posted on 2009-03-10 12:42 Sunshine Alike 閱讀(1140) 評(píng)論(6)  編輯 收藏 引用 所屬分類(lèi): WinAPI應(yīng)用程序

Feedback

# re: WindowsAPI學(xué)習(xí)筆記一 2009-03-10 14:16 擇日而亡
關(guān)注中。。。  回復(fù)  更多評(píng)論
  

# re: WindowsAPI學(xué)習(xí)筆記一 2009-03-10 20:42 Sunshine Alike
@擇日而亡
謝謝,你也有興趣學(xué)這個(gè)么?  回復(fù)  更多評(píng)論
  

# re: WindowsAPI學(xué)習(xí)筆記一 — Windows應(yīng)用程序基本結(jié)構(gòu) 2009-03-11 13:28 擇日而亡
@Sunshine Alike
有興趣,都收藏了。  回復(fù)  更多評(píng)論
  

# re: WindowsAPI學(xué)習(xí)筆記一 — Windows應(yīng)用程序基本結(jié)構(gòu) 2009-03-11 16:28 Sunshine Alike
@擇日而亡
3Q,大家一起學(xué)習(xí)!呵呵  回復(fù)  更多評(píng)論
  

# re: WindowsAPI學(xué)習(xí)筆記一 - Windows應(yīng)用程序基本結(jié)構(gòu) 2009-05-10 16:55 鳴文
你也在學(xué)win32 SDK 和MFC吧……關(guān)注中  回復(fù)  更多評(píng)論
  

# re: WindowsAPI學(xué)習(xí)筆記一 - Windows應(yīng)用程序基本結(jié)構(gòu) 2009-05-10 21:34 Sunshine Alike
@鳴文
唉,說(shuō)來(lái)慚愧,每次學(xué)到一半都不能靜心,最近已經(jīng)很久沒(méi)有看書(shū)了
以后一起學(xué)習(xí)  :)  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产精品嫩草影院| 国产人妖伪娘一区91| 久久国产手机看片| 蜜臀久久99精品久久久久久9 | 亚洲欧洲日韩在线| 香蕉久久久久久久av网站| 亚洲国产导航| 女人色偷偷aa久久天堂| 亚洲影视综合| 欧美视频二区36p| 亚洲欧美日韩精品久久亚洲区| 久久国产福利国产秒拍| 欧美国产一区二区三区激情无套| 欧美色图首页| 久久婷婷久久| 国产自产2019最新不卡| 亚洲专区一二三| 夜夜嗨av一区二区三区免费区| 欧美欧美在线| 久久国产88| 欧美在线在线| 亚洲一区二区三区在线| 亚洲国产91色在线| 狂野欧美性猛交xxxx巴西| 亚洲日本在线视频观看| 久久久久久伊人| 羞羞色国产精品| 欧美成人综合网站| 亚洲欧洲精品一区二区三区不卡 | 欧美国产精品久久| 午夜在线a亚洲v天堂网2018| 欧美日韩在线视频一区二区| 欧美一区影院| 国产亚洲欧美日韩日本| 亚洲精选国产| 欧美一区二区三区视频| 亚洲福利专区| 欧美激情视频网站| 欧美成人亚洲| 亚洲精品久久久久久一区二区| 欧美一进一出视频| 亚洲精品国偷自产在线99热| 午夜精品一区二区三区在线视| 亚洲第一黄网| 中文日韩在线| 国产一级一区二区| 国产日韩欧美一区在线| 欧美sm重口味系列视频在线观看| 欧美综合二区| 亚洲欧美影院| 亚洲高清在线播放| 欧美一区二区观看视频| 欧美怡红院视频| 亚洲国产精品久久91精品| 亚洲高清激情| 精品成人久久| 欧美激情按摩| 亚洲国产aⅴ天堂久久| 黄色国产精品| 国产精品日本一区二区| 久久综合中文字幕| 欧美一级午夜免费电影| 亚洲欧美另类在线| 一本一道久久综合狠狠老精东影业| 免费观看成人| 亚洲伦理自拍| 亚洲电影免费观看高清完整版| 亚洲欧美成人一区二区在线电影| 一区二区三区四区国产精品| 黑丝一区二区三区| 国产综合久久久久影院| 在线观看三级视频欧美| 亚洲国产精品第一区二区| 欧美视频一区在线观看| 欧美女人交a| 国产精品国产三级国产专播品爱网 | 国产日韩精品视频一区| 亚洲一区二区精品在线| 久久成人免费日本黄色| 久久er精品视频| 蜜臀av一级做a爰片久久| 男人的天堂亚洲| 亚洲国产欧美在线人成| 久久久夜精品| 韩国美女久久| 蜜桃av一区二区在线观看| 亚洲精品九九| 欧美一区二区网站| 欧美成人免费小视频| 国产精品美女久久福利网站| 亚洲精品一区二区三区蜜桃久| 亚洲影院色在线观看免费| 亚洲免费中文字幕| 午夜国产一区| 亚洲高清视频一区二区| 一区二区久久久久久| 香蕉亚洲视频| 欧美激情在线播放| 欧美成人蜜桃| 久久频这里精品99香蕉| 亚洲欧洲日本国产| 亚洲第一二三四五区| 国产有码一区二区| 亚洲一区二区三区午夜| 欧美99久久| 亚洲人在线视频| 亚洲日本欧美在线| 欧美精品在线观看一区二区| 一区二区三区四区五区视频 | 欧美在线观看天堂一区二区三区| 免费观看日韩| 欧美怡红院视频| 国产精品自在线| 亚洲电影在线免费观看| 欧美激情亚洲激情| 亚洲国产综合在线看不卡| 欧美国产亚洲视频| 日韩午夜在线| 久久天堂av综合合色| 久久国产精彩视频| 欧美日韩国产小视频在线观看| 在线播放精品| 一区二区三区欧美视频| 夜夜嗨网站十八久久| 欧美激情第一页xxx| 欧美日韩不卡合集视频| 99在线视频精品| 欧美人体xx| 日韩网站在线观看| 亚洲视频国产视频| 久久爱www久久做| 日韩一级成人av| 亚洲欧美国内爽妇网| 日韩午夜电影| 欧美一区二区精美| 亚洲精品视频一区| 午夜久久福利| 亚洲第一精品夜夜躁人人躁 | 国产亚洲综合精品| 一本色道久久综合亚洲91| 亚洲免费一区二区| 国内精品久久久久久久影视蜜臀| 中国女人久久久| 蜜臀av一级做a爰片久久| 欧美体内谢she精2性欧美| 一区二区欧美精品| 欧美成人视屏| 久久激情五月激情| 久久综合九色综合久99| 亚洲第一成人在线| 免费在线观看精品| 免播放器亚洲一区| 午夜精品久久久久久久久久久久 | 亚洲视频一区在线| 欧美搞黄网站| 亚洲一区二区三区免费视频| 欧美在线观看一区二区三区| 亚洲毛片在线| 欧美激情一区二区三级高清视频| 亚洲永久在线| 激情国产一区| 亚洲日本一区二区| 国产日韩欧美制服另类| 久久精品视频免费观看| 亚洲电影在线看| 久久精品日产第一区二区三区| 最新国产精品拍自在线播放| 久久精品国产999大香线蕉| 亚洲精品乱码久久久久| 狠狠色伊人亚洲综合成人| 亚洲五月婷婷| 久久性天堂网| 性欧美大战久久久久久久久| 亚洲二区在线视频| 欧美日韩一区二区三| 久久综合激情| 欧美精品在线极品| 欧美午夜精品理论片a级按摩| 欧美二区在线| 欧美绝品在线观看成人午夜影视 | 久久久久久91香蕉国产| 欧美亚洲综合在线| 日韩午夜电影| 亚洲少妇一区| 国产精品国产一区二区| 伊人成综合网伊人222| 久久久久久久高潮| 欧美一区二区视频在线| 亚洲国产一区二区三区在线播| 欧美一区二区三区四区在线| 久久国产福利国产秒拍| 欧美一级专区| 欧美日韩亚洲一区三区| 亚洲成在人线av| 久久国产精品电影| 欧美成人一区在线| 亚洲视频在线看| 亚洲主播在线| 国产亚洲欧美日韩一区二区| 亚洲高清自拍|