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

Sunshine Alike

半完美主義

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

常用鏈接

留言簿(15)

積分與排名

  • 積分 - 51326
  • 排名 - 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
@鳴文
唉,說來慚愧,每次學到一半都不能靜心,最近已經很久沒有看書了
以后一起學習 ?。海?nbsp; 回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            香蕉亚洲视频| 久久久在线视频| 国产一区二区三区高清在线观看| 欧美1级日本1级| 免费观看亚洲视频大全| 欧美成人中文字幕在线| 欧美另类在线播放| 国产精品乱人伦中文| 国产中文一区二区| 91久久精品国产91久久性色| 亚洲视频在线播放| 久久精品视频99| 欧美福利视频网站| 亚洲视频精选在线| 久久av最新网址| 欧美成人中文字幕| 国产精品婷婷| 亚洲精品四区| 久久精品国产第一区二区三区最新章节 | 欧美日韩视频一区二区| 国产精品久久久久久户外露出| 国产欧美日本| 亚洲精品字幕| 久久精品日产第一区二区三区| 欧美激情一区二区三区全黄| 一区二区三区欧美成人| 久久一区二区三区超碰国产精品| 欧美日本高清视频| 激情成人亚洲| 亚洲欧洲99久久| 亚洲激情婷婷| 欧美一区二区三区在| 欧美日韩国产不卡在线看| 国内精品久久久久久久97牛牛| 亚洲午夜性刺激影院| 欧美激情久久久久久| 午夜欧美理论片| 欧美视频一区二区| 亚洲精品欧美日韩专区| 久久日韩粉嫩一区二区三区| 亚洲美女在线观看| 麻豆精品精华液| 国产一区二区高清| 亚洲欧美日韩中文播放| 亚洲久久成人| 久久人91精品久久久久久不卡| 亚洲免费成人av电影| 乱人伦精品视频在线观看| 国产亚洲欧美日韩精品| 亚洲欧美中文日韩在线| 日韩视频永久免费观看| 欧美黑人多人双交| 亚洲高清网站| 麻豆成人精品| 久久久久久久一区二区| 国内精品久久久久影院优| 欧美一区二区三区啪啪| 亚洲一区二区在线观看视频| 欧美午夜一区| 亚洲欧美在线另类| 亚洲天堂免费观看| 国产精品久久久久久久久久久久久 | 国产精品久久久久影院亚瑟| 亚洲视频一区在线观看| 日韩亚洲视频| 欧美视频日韩视频在线观看| 亚洲免费在线观看视频| 中文日韩在线| 国产欧美一区二区三区视频| 欧美在线观看一区二区三区| 亚洲欧美高清| 伊人成年综合电影网| 欧美激情成人在线| 欧美日本中文字幕| 亚洲欧美久久久| 久久国产精品久久久久久久久久| 国产专区欧美专区| 免费日本视频一区| 免费在线播放第一区高清av| 999在线观看精品免费不卡网站| 亚洲人被黑人高潮完整版| 欧美日韩精品二区第二页| 欧美一级淫片播放口| 久久se精品一区精品二区| 最新69国产成人精品视频免费| 亚洲精品视频二区| 国产亚洲一区二区在线观看| 欧美成人精品一区二区| 欧美日韩亚洲另类| 久久亚洲欧美| 欧美日韩国产高清视频| 欧美亚洲在线播放| 免费不卡视频| 午夜激情综合网| 久久亚洲精品伦理| 亚洲一区二区三区久久| 久久福利视频导航| 在线亚洲欧美| 久久久久久网址| 亚洲伊人观看| 免费亚洲电影在线| 久久精品国产69国产精品亚洲| 欧美激情精品久久久久久免费印度| 亚洲欧美日韩在线高清直播| 亚洲成人在线视频网站| 国产精品video| 欧美国产日韩一区二区在线观看| 欧美午夜影院| 欧美激情一区二区三级高清视频| 国产精品久久久999| 欧美激情第六页| 国产日韩欧美精品综合| av成人免费| 亚洲日本久久| 久久久人成影片一区二区三区观看| 亚洲一区二区三区中文字幕在线 | 国产精品综合av一区二区国产馆| 亚洲第一精品在线| 国产一区二区久久精品| 亚洲色诱最新| 亚洲视频你懂的| 欧美成人免费全部观看天天性色| 久久人人97超碰国产公开结果 | 国产亚洲一区二区三区在线播放| 亚洲免费观看高清完整版在线观看熊| 激情综合自拍| 久久av资源网| 久久久久久9| 国产精品一区二区a| 中国成人黄色视屏| 亚洲免费在线精品一区| 国产精品多人| 一区二区三区免费网站| 亚洲一区在线看| 国产精品国产三级国产a| 一本一本久久a久久精品牛牛影视| 日韩视频不卡| 欧美人与性禽动交情品| 亚洲免费激情| 在线亚洲欧美| 国产精品久久久久久久久久直播 | 一区二区三区国产精华| 亚洲一级电影| 国产一区二区成人| 欧美一区二区视频在线观看2020 | 美国三级日本三级久久99| 美日韩丰满少妇在线观看| 激情亚洲一区二区三区四区| 久热这里只精品99re8久| 欧美大片专区| 99综合电影在线视频| 欧美午夜精品理论片a级大开眼界| 一区二区三区日韩欧美| 欧美在线观看网站| 在线看欧美日韩| 欧美激情中文不卡| 一区二区三区日韩欧美| 国产欧美1区2区3区| 欧美一区二区三区婷婷月色| 蜜桃av久久久亚洲精品| 亚洲精品日韩激情在线电影 | 欧美性色综合| 亚欧美中日韩视频| 欧美激情国产日韩| 亚洲嫩草精品久久| 狠狠88综合久久久久综合网| 欧美成人在线影院| 亚洲午夜免费视频| 欧美成人国产va精品日本一级| 日韩一级黄色av| 国产在线观看一区| 欧美欧美全黄| 久久精品国产综合精品| 亚洲免费观看在线视频| 毛片基地黄久久久久久天堂| 亚洲性视频网址| 亚洲福利视频二区| 国产精品乱子久久久久| 久久综合给合| 亚洲影音先锋| 亚洲国产日韩欧美综合久久| 久久精品国产99| 艳女tv在线观看国产一区| 国产亚洲精久久久久久| 欧美日韩视频在线观看一区二区三区| 亚洲摸下面视频| 亚洲精品国久久99热| 久久久青草婷婷精品综合日韩| 一区二区三区视频在线播放| 精品成人在线| 国产精品自拍一区| 欧美日韩a区| 老司机免费视频久久| 亚洲免费视频在线观看| 亚洲精品综合| 亚洲电影中文字幕| 久久先锋资源| 久久久久在线观看| 欧美在线观看一区| 亚洲欧美视频一区二区三区|