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

Sunshine Alike

半完美主義

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

常用鏈接

留言簿(15)

積分與排名

  • 積分 - 51329
  • 排名 - 451

最新隨筆

最新評(píng)論

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

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

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

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

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

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

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

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

暫時(shí)不管,以后遇見了再說。

源程序組成結(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可能接收到的消息的處理過程。

?

WinMain 函數(shù)的功能:

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

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

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

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

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

int WINAPI WinMain

(

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

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

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

?????? Int nCmdShow??????????????????? // 應(yīng)用程序開始執(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)????? 初始化工作包括:窗口類的定義,注冊(cè),創(chuàng)建窗口實(shí)例和顯示窗口四個(gè)部分。

??????????? 窗口類的定義

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

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

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

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

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

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

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

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

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

HWND CreateWinodw

(

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

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ù)值的指針

)

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

窗口類顯示由 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)過程處理。

消息循環(huá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ǔ)句中編寫相應(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 " ;

???????
// ------------窗口類的定義

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

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

???????wndclass.cbClsExtra?
= ? 0 ; // 類無擴(kuò)展

???????wndclass.cbWndExtra?
= ? 0 ; // 窗口無擴(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; // 無菜單

???????wndclass.lpszClassName?
= ?lpszClassName; // 窗口類名

?

???????
// ------------窗口類注冊(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,
// 無父窗口

??????????????????????????????????????????NULL,
// 無主菜單

??????????????????????????????????????????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)  編輯 收藏 引用 所屬分類: 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
@鳴文
唉,說來慚愧,每次學(xué)到一半都不能靜心,最近已經(jīng)很久沒有看書了
以后一起學(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>
            久久久久免费| 欧美a级片一区| 欧美在线视频免费播放| 香蕉久久夜色精品国产| 韩国三级电影久久久久久| 欧美精品黄色| 久久精品国产精品亚洲综合| 亚洲精品一区二区三区蜜桃久| 久久女同互慰一区二区三区| 久久久精品国产一区二区三区| 亚洲男人的天堂在线| 欧美高清视频一区二区三区在线观看 | 亚洲伦理在线| 最新国产乱人伦偷精品免费网站| 欧美一级艳片视频免费观看| 久久久www成人免费精品| 欧美一激情一区二区三区| 亚洲免费在线观看视频| 欧美电影在线免费观看网站| 亚洲女人天堂av| 小嫩嫩精品导航| 亚洲欧美视频| 亚洲欧美日本日韩| 亚洲美女视频在线免费观看| 亚洲一级在线观看| 亚洲一区二区高清| 久久国产精品99精品国产| 免费在线成人| 欧美精品一区三区| 国产精品高精视频免费| 一色屋精品视频在线看| 亚洲毛片在线观看.| 宅男噜噜噜66一区二区66| 性欧美精品高清| 最新日韩在线| 亚洲综合国产激情另类一区| 久久久久久久波多野高潮日日| 欧美日韩国产专区| 国产女主播一区二区| 亚洲国产片色| 欧美三级网址| 在线观看国产精品淫| 99精品福利视频| 乱码第一页成人| 麻豆精品在线视频| 亚洲精品免费在线| 久久亚洲欧美国产精品乐播| 欧美a级一区| 国产欧美婷婷中文| 亚洲精品视频在线观看网站| 香蕉成人啪国产精品视频综合网| 久久精品视频播放| 日韩亚洲不卡在线| 久久精品成人一区二区三区蜜臀 | 亚洲国产成人不卡| 亚洲欧美激情视频在线观看一区二区三区 | 一本久久综合| 噜噜噜久久亚洲精品国产品小说| 亚洲欧美制服中文字幕| 亚洲国产精品va在线看黑人 | 欧美在线国产| 欧美午夜在线| 亚洲天堂网在线观看| 蜜桃视频一区| 一区二区三区久久精品| 亚洲美女黄网| 久久综合亚州| 国产在线精品二区| 亚洲天堂av在线免费观看| 亚洲福利在线视频| 久久精品二区三区| 亚洲欧美日韩一区二区| 欧美一区综合| 欧美国产极速在线| 久久精品中文字幕一区二区三区 | 亚洲欧美日韩精品久久久| 亚洲最新中文字幕| 欧美精品久久久久久久| 欲香欲色天天天综合和网| 亚洲人人精品| 日韩一级免费| 欧美黑人一区二区三区| 一区二区三区在线视频观看| 麻豆精品在线视频| 久久中文精品| 亚洲激情在线激情| 欧美电影在线播放| 欧美黄色小视频| 99精品视频免费观看视频| 99精品视频网| 国产精品亚洲美女av网站| 亚洲午夜激情| 亚洲视频精品| 亚洲电影av| 亚洲三级影院| 国产精品狼人久久影院观看方式| 久久国产高清| 久久久av毛片精品| 亚洲精品1区| 亚洲精选成人| 亚洲电影观看| 日韩视频精品在线观看| 国产精品久久久久久久久| 久久久www免费人成黑人精品| 欧美一区二区三区精品| 有码中文亚洲精品| 亚洲电影免费观看高清完整版在线观看| 欧美日韩在线高清| 久久精品亚洲精品| 免费永久网站黄欧美| 亚洲永久精品国产| 每日更新成人在线视频| 亚洲网站在线观看| 欧美中文字幕| 国产精品你懂的在线| 欧美成人高清视频| 欧美激情第一页xxx| 亚洲一区二区三区免费在线观看 | 亚洲精品免费网站| 欧美v日韩v国产v| 国产精品久久久久9999吃药| 久久精品国产亚洲aⅴ| 久久夜色精品国产亚洲aⅴ| 亚洲高清激情| 久久精品国产亚洲高清剧情介绍| 亚洲国产日韩欧美一区二区三区| 亚洲美女黄网| 亚洲国产成人精品女人久久久 | 乱人伦精品视频在线观看| 在线国产精品播放| 欧美一级视频免费在线观看| 91久久精品美女高潮| 亚洲视频日本| 国产精品一区二区三区观看| av成人老司机| 亚洲国产精品va在线看黑人| 亚洲一区久久久| 亚洲图片欧洲图片日韩av| 麻豆成人精品| 欧美高清视频免费观看| 91久久精品日日躁夜夜躁国产| 久久久久九九九九| 美国三级日本三级久久99| 激情亚洲网站| 免费久久99精品国产自| 欧美国产视频日韩| 日韩图片一区| 欧美午夜美女看片| 亚洲欧美日韩天堂| 久久久综合网| 亚洲精品1区2区| 欧美日韩1区2区| 亚洲一区精品视频| 久久综合九色九九| 最新日韩在线视频| 欧美日本免费| 亚洲在线播放电影| 久久亚洲国产精品一区二区| 亚洲高清自拍| 欧美视频一区二区三区…| 亚洲一区在线看| 欧美v日韩v国产v| 亚洲深夜福利在线| 国产一区二区三区的电影| 蜜臀a∨国产成人精品| 99精品视频免费全部在线| 午夜精品亚洲一区二区三区嫩草| 国产一区二区三区日韩| 欧美成人精品一区二区三区| 一本大道久久精品懂色aⅴ | 日韩午夜在线电影| 国产精品麻豆欧美日韩ww| 久久精品国产999大香线蕉| 亚洲黄页视频免费观看| 午夜伦欧美伦电影理论片| 在线观看视频日韩| 欧美日韩在线大尺度| 久久国产欧美| 一本色道久久| 欧美激情精品久久久久久免费印度| 久久久午夜视频| 中文精品视频一区二区在线观看| 国产精品亚洲аv天堂网 | 亚洲欧美三级伦理| 欧美大片一区二区三区| 亚洲一区二区视频| 1024国产精品| 国产欧美一区二区精品秋霞影院| 女同性一区二区三区人了人一 | 免费成人av| 亚洲女爱视频在线| 亚洲国产一区二区精品专区| 国产伦精品一区二区三区视频孕妇| 暖暖成人免费视频| 欧美一区二区三区在线看| 99成人在线| 亚洲国产精品成人一区二区| 久久久久欧美精品| 欧美一区二区三区在线视频| 一区二区日本视频|