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

Sunshine Alike

半完美主義

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  35 Posts :: 1 Stories :: 56 Comments :: 0 Trackbacks

常用鏈接

留言簿(15)

積分與排名

  • 積分 - 51329
  • 排名 - 451

最新隨筆

最新評論

Windows 應用程序基本結構

一個完整的 windos 應用程序通常由下面五種類型的文件組成:

1.???????? 擴展名為 .c/.cpp 的C語言程序源文件

2.???????? 擴展名為 .h 的頭文件

3.???????? 擴展名為 .rc 的資源描述文件

4.???????? 擴展名為 .def 的模塊定義文件

5.???????? 擴展名為 .mak 的項目文件

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

暫時不管,以后遇見了再說。

源程序組成結構

console 程序相對應, windows 應用程序也有一個入口函數 WinMain ,用于完成一系列的定義和初始化工作,并產生消息循環。消息循環是整個程序運行的核心。此外,窗口函數 WndProc 是處理接收到的消息的函數。其中包含了應用程序對各種可能接收到的消息的處理過程。

?

WinMain 函數的功能:

注冊窗口類,建立窗口及執行其他必要的初始化工作

進入消息循環,根據從應用程序消息隊列接受的消息調用相應的處理過程。

當消息循環檢測到 WM_QUIT 消息時終止程序運行。

WinMian 函數由三個基本組成部分:函數說明、初始化和消息循環。

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

int WINAPI WinMain

(

?????? HINSTANCE hThisInst,??????? // 應用程序當前實例句柄

?????? HINSTANCE hPrevInst,????????????? // 應用程序其它實例句柄

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

?????? Int nCmdShow??????????????????? // 應用程序開始執行時窗口顯示方式的標識

)

應當注意到, windows 程序可能并行的進行多次執行,因而可能出現同一個應用程序的多個窗口同時存在的情況。在 windows 中,每執行一次稱其為一個實例( instance ),并使用一個實例句柄進行唯一的標識。

?

(2)????? 初始化工作包括:窗口類的定義,注冊,創建窗口實例和顯示窗口四個部分。

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

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

LoadIcon 在程序中加載一個窗口圖標

LoadCursor 向程序加載一個窗口光標

GetStockObject  可以獲取各種系統默認資源

??????????? 注冊窗口類

Windows 系統本身提供部分預定義的窗口類,程序員也可以自定義窗口類。窗口類必須先用函數 RegisterClass 進行注冊后才能使用。

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

??????????? 創建窗口

窗口創建由函數 CreateWindow 實現,其原型為:

HWND CreateWinodw

(

LPCTSTR lpszClassName,?????????? // 窗口類名,此窗口名必須是已經注冊過

LPCTSTR lpszTitile,??????????????????? // 窗口標題

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

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

int y,???????????????????????????????????????????????? // 窗口左上角坐標

int nWidth,

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

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

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

HINSTANCE hInstance,???????????????????? // 當前應用程序句柄

LPVOID lpParam??????????????????????? // 指向一個傳遞給窗口參數值的指針

)

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

窗口類顯示由 ShowWindow UpdateWindow 函數實現。

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

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

?

(3)????? 消息循環

Windows 應用程序的運行以消息為核心。 Windows 將產生的消息放入應用程序的消息隊列中,而應用程序的 WinMain 函數在消息循環中提取隊列中的消息,并將其傳遞給窗口函數的相應過程處理。

消息循環常見格式為:

MSG?msg;

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

{

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

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

}


只有當

GetMessage 函數返回 0 值,即檢索到 WM_QUIT 消息時,程序結束退出。

?

窗口函數

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

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 ;

}

?

?

??????????? 應用程序舉例  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 ; // 類無擴展

???????wndclass.cbWndExtra?
= ? 0 ; // 窗口無擴展

???????wndclass.hInstance?
= ?hInstance; // 當前句柄實例

???????wndclass.hIcon?
= ?LoadIcon(NULL,IDI_APPLICATION); // 最小化為默認圖標

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

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

???????wndclass.lpszMenuName?
= ?NULL; // 無菜單

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

?

???????
// ------------窗口類注冊

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

???????
{

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

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

???????}


???????
// 創建窗口

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

??????????????????????????????????????????WS_SYSMENU,
// 窗口風格

??????????????????????????????????????????CW_USEDEFAULT,
// 左上角坐標為默認值

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

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

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

??????????????????????????????????????????NULL,
// 無父窗口

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

??????????????????????????????????????????hInstance,
// 創建窗口程序的當前句柄

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

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

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

?

???????
// -------------消息循環

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

???????
{

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

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

???????}


?

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

}

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

Feedback

# re: WindowsAPI學習筆記一 2009-03-10 14:16 擇日而亡
關注中。。。  回復  更多評論
  

# re: WindowsAPI學習筆記一 2009-03-10 20:42 Sunshine Alike
@擇日而亡
謝謝,你也有興趣學這個么?  回復  更多評論
  

# re: WindowsAPI學習筆記一 — Windows應用程序基本結構 2009-03-11 13:28 擇日而亡
@Sunshine Alike
有興趣,都收藏了。  回復  更多評論
  

# re: WindowsAPI學習筆記一 — Windows應用程序基本結構 2009-03-11 16:28 Sunshine Alike
@擇日而亡
3Q,大家一起學習!呵呵  回復  更多評論
  

# re: WindowsAPI學習筆記一 - Windows應用程序基本結構 2009-05-10 16:55 鳴文
你也在學win32 SDK 和MFC吧……關注中  回復  更多評論
  

# re: WindowsAPI學習筆記一 - Windows應用程序基本結構 2009-05-10 21:34 Sunshine Alike
@鳴文
唉,說來慚愧,每次學到一半都不能靜心,最近已經很久沒有看書了
以后一起學習  :)  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品主播| 毛片精品免费在线观看| 欧美激情一区二区三区全黄| 国产在线日韩| 六月丁香综合| 亚洲一二三区精品| 国产精品护士白丝一区av| 99精品国产高清一区二区| 欧美亚洲一区| 亚洲国产精品va在线观看黑人| 欧美日韩日本视频| 欧美一区二区国产| 日韩一区二区高清| 亚洲电影成人| 欧美日韩中文字幕在线| 欧美在线一区二区| 亚洲图片欧美日产| 亚洲一区二区三区久久 | 99国产一区| 国产午夜精品理论片a级大结局| 免费中文日韩| 久久久久久久国产| 午夜久久影院| 午夜视频一区在线观看| 久久嫩草精品久久久精品一| 欧美在线亚洲综合一区| 免费在线成人av| 国产精品理论片| 欧美日韩精品伦理作品在线免费观看| 久久亚洲精品中文字幕冲田杏梨 | 男人的天堂成人在线| 久久国产一区| 性8sex亚洲区入口| 欧美成人综合网站| 欧美sm视频| 在线天堂一区av电影| 亚洲视频网在线直播| 久久久精品视频成人| 美女黄网久久| 国产欧美一区二区精品秋霞影院 | 国产麻豆91精品| 国产精品一区免费视频| 亚洲国产欧美在线人成| 亚洲精品久久久久久久久久久久久| 红杏aⅴ成人免费视频| 黑人一区二区| 亚洲一区二区三区高清| 亚洲免费影视第一页| 欧美一区二区三区精品电影| 校园激情久久| 夜夜嗨av一区二区三区| 免费的成人av| 一区在线免费观看| 91久久精品一区二区三区| 91久久亚洲| 国产一区二区三区奇米久涩| 在线播放不卡| 亚洲黄色尤物视频| 久久久久久穴| 欧美第一黄网免费网站| 香港成人在线视频| 国产精品一区二区久久久| 中国女人久久久| 欧美一级欧美一级在线播放| 亚洲欧洲综合| 午夜精品网站| 国产日本欧美视频| 久久不见久久见免费视频1| 欧美成人亚洲| 免费欧美高清视频| 亚洲啪啪91| 亚洲精品乱码| 久久国产精彩视频| 欧美日韩视频| 亚洲制服丝袜在线| 欧美91大片| 欧美96在线丨欧| 日韩午夜激情av| 亚洲美女网站| 国产精品视频自拍| 亚洲欧洲精品一区二区三区不卡 | 蜜桃久久精品乱码一区二区| 亚洲精品国产精品国自产在线 | 欧美国产成人在线| 欧美国产日本| 黄色欧美成人| 亚洲国产综合91精品麻豆| 性久久久久久久| 一区二区三区在线免费观看| 亚洲第一综合天堂另类专| 欧美日韩视频一区二区三区| 亚洲欧美一区二区三区久久| 亚洲日本欧美| 国产精品老女人精品视频| 久久夜色撩人精品| 欧美一区二区三区啪啪| 亚洲高清成人| 日韩天堂av| 狠狠爱综合网| 99国产精品久久久久久久久久| 国产日韩欧美二区| 亚洲国产小视频| 国产日本欧美一区二区三区在线| 免费成人黄色片| 久久久国产视频91| 一区二区三区产品免费精品久久75 | 亚洲天堂av在线免费| 国内精品久久久久伊人av| 亚洲高清成人| 国产一区二区三区在线观看网站 | 最新成人av在线| 亚洲在线观看免费| 日韩一级精品| 久久亚洲一区二区三区四区| 午夜久久电影网| 欧美精品一区二区三区蜜桃 | 欧美特黄一级| 亚洲电影激情视频网站| 国产一区二区黄色| 亚洲图中文字幕| 99精品视频免费观看视频| 欧美综合国产| 亚洲欧美日韩在线高清直播| 欧美国产精品人人做人人爱| 卡一卡二国产精品| 国产在线观看精品一区二区三区| 一区二区三区四区精品| 国产欧美视频一区二区三区| 在线一区欧美| 亚洲午夜羞羞片| 欧美日韩成人综合| 亚洲国产精品嫩草影院| 亚洲第一精品夜夜躁人人爽| 亚洲日本中文字幕免费在线不卡| 136国产福利精品导航网址应用| 午夜欧美不卡精品aaaaa| 欧美一区二区高清| 国产精品久久久久久一区二区三区 | 亚洲午夜精品国产| 亚洲免费人成在线视频观看| 欧美人与禽猛交乱配视频| 亚洲国产精品一区制服丝袜| 亚洲国产cao| 欧美不卡激情三级在线观看| 午夜一级在线看亚洲| 国产精品激情电影| 在线一区视频| 久久久av水蜜桃| 在线播放亚洲| 欧美国产日韩一区二区在线观看| 亚洲高清资源综合久久精品| 亚洲最新在线| 久久久亚洲成人| 欧美高清在线| 99视频有精品| 欧美天天影院| 亚洲男人的天堂在线| 日韩网站在线看片你懂的| 欧美剧在线免费观看网站| 99国产精品视频免费观看一公开| 一区二区三区福利| 国产欧美一二三区| 乱人伦精品视频在线观看| 亚洲国产日韩美| 亚洲欧美日韩一区二区| 黄网站免费久久| 99精品视频免费| 欧美资源在线观看| 亚洲国产91| 国产乱码精品一区二区三区五月婷| 久久精品成人一区二区三区| 欧美肥婆bbw| 亚洲欧美欧美一区二区三区| 韩国精品一区二区三区| 欧美日韩国产精品成人| 欧美亚洲在线视频| 91久久久亚洲精品| 久久国产精品黑丝| 日韩视频在线一区二区三区| 国产视频自拍一区| 欧美久久久久中文字幕| 午夜精品福利在线观看| 午夜天堂精品久久久久| 极品尤物av久久免费看| 欧美日韩网站| 久久亚洲美女| 国产精品视频一区二区高潮| 久久黄金**| 99在线精品观看| 男女视频一区二区| 欧美在线观看www| 日韩一二在线观看| 尤物精品在线| 国产精品中文字幕在线观看| 老司机精品福利视频| 欧美大片免费观看| 性欧美长视频| 亚洲视频一区二区免费在线观看| 激情综合久久| 国产三级欧美三级|