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

Sunshine Alike

半完美主義

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

常用鏈接

留言簿(15)

積分與排名

  • 積分 - 51327
  • 排名 - 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>
            香蕉成人伊视频在线观看| 一区二区三区国产盗摄| 国产伦精品免费视频| 美国成人直播| 欧美伊人久久| 欧美成ee人免费视频| 亚洲自拍啪啪| 国产亚洲观看| 国产精品美女诱惑| 免费观看一级特黄欧美大片| 一区二区三区视频免费在线观看| 亚洲电影免费在线| 久久久亚洲国产美女国产盗摄| **欧美日韩vr在线| 影音先锋中文字幕一区| 欧美成人精品一区| 国内一区二区三区| 国产亚洲精品aa| 免费在线观看日韩欧美| 99视频一区二区| 免费视频亚洲| 国产午夜一区二区三区| 国产精品啊v在线| 嫩草伊人久久精品少妇av杨幂| 亚洲欧美另类久久久精品2019| 亚洲电影有码| 9人人澡人人爽人人精品| 99在线精品视频| 欧美专区日韩视频| 欧美激情小视频| 久热精品在线视频| 欧美在线视频导航| 美女任你摸久久| 欧美一区2区视频在线观看| 国产精品家教| 国产亚洲欧洲一区高清在线观看| 国内精品伊人久久久久av一坑| 亚洲综合清纯丝袜自拍| 久久精品在线播放| 欧美精品 日韩| 欧美成人dvd在线视频| 欧美日韩在线看| 国产一区二区高清视频| 国产一区二区在线免费观看 | 欧美精品二区| 国产精品乱人伦一区二区| 国产伦精品一区二区三区照片91| 国内外成人免费激情在线视频| 欧美a级理论片| 国产精品超碰97尤物18| 国产精品毛片大码女人| 亚洲毛片在线| 欧美在线亚洲| 欧美日韩国产小视频| 亚洲欧美一区二区三区极速播放| 噜噜噜久久亚洲精品国产品小说| 欧美网站在线| 久热精品在线视频| 国产欧美一区视频| 国内成人精品2018免费看| 在线日韩av永久免费观看| 午夜视频在线观看一区| 亚洲欧洲日本在线| 亚洲午夜久久久久久尤物| 欧美va天堂| 久久免费的精品国产v∧| 美女图片一区二区| 欧美激情精品久久久久久| 午夜视频一区| 蜜桃av久久久亚洲精品| 99热免费精品在线观看| 免费观看在线综合色| 国产日韩精品一区| 久久九九全国免费精品观看| 亚洲资源av| 免费欧美视频| 欧美一区二区三区视频| 国产精品video| 亚洲破处大片| 在线观看成人av| 久久天天躁狠狠躁夜夜爽蜜月| 一区二区欧美视频| 久久国产精品一区二区| 久久久久国产精品www| 欧美日韩午夜精品| 亚洲深夜福利网站| 91久久精品美女高潮| 欧美a一区二区| 国产情侣一区| 久久久综合香蕉尹人综合网| 亚洲六月丁香色婷婷综合久久| 男女激情久久| 久久久亚洲一区| 欧美日韩亚洲精品内裤| 久久国产主播精品| 性亚洲最疯狂xxxx高清| 欧美伦理91| 中文在线资源观看视频网站免费不卡| 亚洲国产日韩精品| 欧美激情 亚洲a∨综合| 欧美三区视频| 一区二区三区四区蜜桃| 午夜视频精品| 久久亚洲视频| 亚洲日本成人| 伊人色综合久久天天五月婷| 国产欧美午夜| 香蕉久久夜色精品| 在线视频你懂得一区二区三区| 99re8这里有精品热视频免费| 欧美高清日韩| 国产精品久久久久免费a∨| 久久久www| 蜜臀久久99精品久久久久久9 | 亚洲视频欧美在线| 国产精品爱啪在线线免费观看| 午夜在线不卡| 99国产精品久久久久久久久久| 影音先锋日韩资源| 国产精品午夜久久| 国产精品女主播| 国产区在线观看成人精品| 久久免费观看视频| 欧美国产精品一区| 国产欧美日韩视频一区二区三区 | 99精品欧美一区| 欧美精品成人一区二区在线观看 | 亚洲一区免费网站| 老司机午夜免费精品视频 | 亚洲国产精品一区二区www在线| 欧美激情二区三区| 国产精品都在这里| 欧美中文字幕| 老鸭窝91久久精品色噜噜导演| 中文亚洲视频在线| 久久综合九色综合欧美就去吻| 日韩一二三区视频| 国产精品激情电影| 国产欧美短视频| 久久一综合视频| 欧美女同视频| 两个人的视频www国产精品| 欧美精品在线一区| 1024国产精品| 亚洲一区二区三区四区在线观看| 久久欧美中文字幕| 欧美高清你懂得| 国产欧美不卡| 欧美激情一区在线| 国产精品高潮呻吟视频| 亚洲精品国产日韩| 欧美一区二区三区日韩| 亚洲制服丝袜在线| 欧美日韩国产一级| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美岛国激情| 国产精品毛片a∨一区二区三区| 久久美女性网| 亚洲国产精品欧美一二99| 亚洲一区www| 国产精品普通话对白| 久久亚洲高清| 国内精品久久久久伊人av| 亚洲欧美激情视频| 99在线精品视频在线观看| 免费在线看一区| 欧美国产三区| 免费久久99精品国产自在现线| 欧美在线精品免播放器视频| 欧美大片一区二区| 国产精品久久午夜夜伦鲁鲁| 亚洲精品乱码久久久久久| 欧美在线视频一区| 在线亚洲精品| 欧美大片在线观看| 亚洲韩国日本中文字幕| 91久久久亚洲精品| 亚洲午夜一区二区| 午夜精品福利视频| 国产日本欧美在线观看 | 在线亚洲电影| 欧美极品一区| 亚洲国产精品免费| 亚洲欧洲精品一区二区三区不卡 | 亚洲电影在线免费观看| 亚洲综合色噜噜狠狠| 亚洲一区二区三区中文字幕在线| 国产精品久久久久9999高清| 夜夜爽av福利精品导航| 久久久青草婷婷精品综合日韩| 欧美一级久久久| 亚洲视频一区二区| 国产视频久久久久| 久久尤物电影视频在线观看| 美女国产一区| 国产伦精品一区二区三区高清版| 久久精品国产亚洲精品 | 欧美一级一区| 国产精品稀缺呦系列在线| 亚洲综合社区|