国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

初級 WINDOWS API C++語言版 編程(1)

2019-09-06 23:33:35
字體:
供稿:網(wǎng)友

                    當(dāng)我們使用著漂亮的界面,方便快捷的應(yīng)用程序的時候。我們才會發(fā)現(xiàn),以前曾編寫的程序是多么的粗糙(TC編寫的程序)。簡單的界面,16色的顯示系統(tǒng),大大的落后于計算機的發(fā)展。簡單的說就是殺雞用牛刀。如何該改變這種情況呢?Microsoft公司在推出windows操作系統(tǒng)的時候給出了簡單易行的解決方案。這就是WINDOWS平臺API應(yīng)用程序接口。當(dāng)然API也是發(fā)展的,它從WIN 16 API發(fā)展到了現(xiàn)在普遍使用的WIN 32 API。只有充分理解API函數(shù)功能和用法,才能深入到WINDOWS系統(tǒng)的內(nèi)部,才能充分挖掘出操作系統(tǒng)給我們提供的強大功能。現(xiàn)在就讓我們放棄那DOS應(yīng)用程序,進入WINDOWS編程的海洋之中吧。

要想了解WINDOWS API那么我們必須先了解WINDOWS下的程序是如何進行驅(qū)動的。同學(xué)們可以很清楚的發(fā)現(xiàn)到,當(dāng)你在使用WINDOWS記事本的時候,當(dāng)鍵盤輸入字符的時候字就會出現(xiàn)在屏幕上。當(dāng)你移動鼠標(biāo)的時候,光標(biāo)就會在屏幕上移動。雙擊鼠標(biāo)、單擊鼠標(biāo)就會有相應(yīng)的事件發(fā)生。這些都是由于WINDOWS具有的事件驅(qū)動的屬性造成的。比如說當(dāng)你按下鍵盤的字符鍵的時候,消息隊列就會向程序發(fā)送WM_CHAR的消息,如果你所寫的程序中含有處理這個消息的函數(shù),程序就會執(zhí)行它。

為了更好的了解WINDOWS編程,這里我必須介紹幾個基本的概念:
1,句柄:它是WINDOWS編程的基礎(chǔ)。一個句柄是指WINDOWS在內(nèi)存中使用的一個唯一的整數(shù)質(zhì),是一個4個字節(jié)長的數(shù)值,用于標(biāo)識應(yīng)用程序中不同對象和相同對象的不同實例。

這里我列出幾種WINDOWS常用的句柄:

HWND: 標(biāo)示窗口句柄
HINSTANCE:標(biāo)示當(dāng)前實例句柄
HCOURSOR:標(biāo)示光標(biāo)句柄
HFONT: 標(biāo)示字體句柄
HPEN:標(biāo)示畫筆句柄
HBRUSH:標(biāo)示畫刷句柄
HDC:標(biāo)示設(shè)備環(huán)境句柄
HBITMP:標(biāo)示位圖句柄
HICON:標(biāo)示圖標(biāo)句柄
HMENU:標(biāo)示菜單句柄
HFILE:標(biāo)示文件句柄

由于WINDOWS應(yīng)用程序利用WINDOWS消息來與其它的WINDOWS應(yīng)用程序及WINDOWS系統(tǒng)進行消息交換。所以消息是一個十分重要的對象它的結(jié)構(gòu)如下。

typedef struct{
 HWND hwnd;     //檢索消息的窗口句柄
 UNIT message;  //代表一個消息的消息質(zhì)
 WPARAM wParam; //消息附加信息的字參數(shù)
 LPARAM lParam; //消息附加信息的長字參數(shù)
 DWORD time;    //消息入隊時間
 POINT pt;      //消息發(fā)送時鼠標(biāo)的位置 point.x;point.y;
} tagMSG;

2,消息:VC++中消息都用前綴標(biāo)示消息所屬的分類,下面我來介紹一下這些前綴

BM表示按鈕控制消息
CB表示組合框控制消息
DM表示默認(rèn)下壓式按鈕控制消息
EM表示編輯控制消息
LB表示列表框控制消息
SBM表示滾動條控制消息
WM表示窗口消息

現(xiàn)在我來對系統(tǒng)常用的一些消息進行說明:
1,WM_LBUTTONDOWN: 單擊鼠標(biāo)左鍵時產(chǎn)生
2,WM_LBUTTONUP: 放開鼠標(biāo)左鍵時產(chǎn)生
3,WM_RBUTTONUP: 放開鼠標(biāo)右鍵時產(chǎn)生
4,WM_LBUTTONBLCLK: 雙擊鼠標(biāo)左鍵時產(chǎn)生
5,WM_RBUTTONBLCLK: 雙擊鼠標(biāo)右鍵時產(chǎn)生
6,WM_KEYDOWN: 按下了一個非系統(tǒng)鍵時產(chǎn)生的消息
7,WM_CHAR: 同上
8,WM_CREATE: 由CreateWindow函數(shù)發(fā)出的消息
9,WM_DESTROY: 消除窗口時發(fā)出的消息
10,WM_QUIT: 退出程序時發(fā)送的消息
11,WM_PAINT: 做任何移動操作時發(fā)出的消息

介紹了以上的這些基礎(chǔ)入門知識,我們就可以簡單的了解一下WINDOWS API 程序的組成基本結(jié)構(gòu)。它是由入口函數(shù)WinMain和窗口函數(shù)基本框架,并包含各種數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)與函數(shù)等應(yīng)用組建組成的。其中入口函數(shù)WinMain和窗口函數(shù)是WINDOWS應(yīng)用程序的主體。

一個基本的WinMain函數(shù)應(yīng)該具有以下的功能:
1,注冊窗口類,建立窗口及執(zhí)行其他必要的初始化工作
2,進入消息循環(huán),根據(jù)從應(yīng)用程序消息隊列接受的消息,調(diào)用相應(yīng)的處理過程。
3,當(dāng)消息循環(huán)檢索到WM_QUIT消息時中止程序運行
WinMain函數(shù)有三個基本組成部分:函數(shù)說明、初始化和消息循環(huán)。

(1)函數(shù)說明

int WINAPI WinMain
(
HINSTANCE hThisInst, //應(yīng)用程序當(dāng)前實例句柄
HINSTANCE hPrevInst, //應(yīng)用程序其它實例句柄
LPSTR lpszCmdLine,   //指向程序命令行參數(shù)的指針
int nCmdShow/t //應(yīng)用程序開始執(zhí)行時窗口顯示方式的整數(shù)值標(biāo)示
)

(2)初始化
初始化包括窗口類的定義、注冊、創(chuàng)建窗口實例和顯示窗口四部分。(在以后的程序中我將詳細(xì)的介紹它們具體的實現(xiàn)方法)

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

它的基本寫法如下:

MSG Meg;//定義消息
//(...)省略了一些內(nèi)容
while (GetMessage(&Meg,NULL,0,0)
{
 TranslanteMessage(&Meg);
 DispatchMessage(&Meg);
}

本章完成(下一章我將向大家介紹窗口函數(shù),并教大家實現(xiàn)自己的第一個WINDOWS API 程序)

本人水平有限請大家見諒。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 新蔡县| 普宁市| 许昌市| 阿鲁科尔沁旗| 抚顺县| 赣州市| 皮山县| 延长县| 朝阳区| 郓城县| 康乐县| 衢州市| 三河市| 始兴县| 寻乌县| 凤山市| 务川| 岳普湖县| 千阳县| 梅州市| 承德市| 芒康县| 玛曲县| 惠安县| 平陆县| 基隆市| 项城市| 龙门县| 巨野县| 信丰县| 永平县| 广西| 墨竹工卡县| 施甸县| 锡林浩特市| 亳州市| 夏河县| 凤山市| 祁东县| 新乐市| 南充市|