程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 初級 WINDOWS API C++語言版 編程(1)

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

編輯:C++入門知識

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

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

  為了更好的了解WINDOWS編程,這裡我必須介紹幾個基本的概念:

  1,句柄:它是WINDOWS編程的基礎。一個句柄是指WINDOWS在內存中使用的一個唯一的整數質,是一個4個字節長的數值,用於標識應用程序中不同對象和相同對象的不同實例。

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

  HWND: 標示窗口句柄

  HINSTANCE:標示當前實例句柄

  HCOURSOR:標示光標句柄

  HFONT: 標示字體句柄

  HPEN:標示畫筆句柄

  HBRUSH:標示畫刷句柄

  HDC:標示設備環境句柄

  HBITMP:標示位圖句柄

  HICON:標示圖標句柄

  HMENU:標示菜單句柄

  HFILE:標示文件句柄

  由於WINDOWS應用程序利用WINDOWS消息來與其它的WINDOWS應用程序及WINDOWS系統進行消息交換。所以消息是一個十分重要的對象它的結構如下。

  

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

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

  BM表示按鈕控制消息

  CB表示組合框控制消息

  DM表示默認下壓式按鈕控制消息

  EM表示編輯控制消息

  LB表示列表框控制消息

  SBM表示滾動條控制消息

  WM表示窗口消息

  現在我來對系統常用的一些消息進行說明:

  1,WM_LBUTTONDOWN: 單擊鼠標左鍵時產生

  2,WM_LBUTTONUP: 放開鼠標左鍵時產生

  3,WM_RBUTTONUP: 放開鼠標右鍵時產生

  4,WM_LBUTTONBLCLK: 雙擊鼠標左鍵時產生

  5,WM_RBUTTONBLCLK: 雙擊鼠標右鍵時產生

  6,WM_KEYDOWN: 按下了一個非系統鍵時產生的消息

  7,WM_CHAR: 同上

  8,WM_CREATE: 由CreateWindow函數發出的消息

  9,WM_DESTROY: 消除窗口時發出的消息

  10,WM_QUIT: 退出程序時發送的消息

  11,WM_PAINT: 做任何移動操作時發出的消息

  介紹了以上的這些基礎入門知識,我們就可以簡單的了解一下WINDOWS API 程序的組成基本結構。它是由入口函數WinMain和窗口函數基本框架,並包含各種數據類型、數據結構與函數等應用組建組成的。其中入口函數WinMain和窗口函數是WINDOWS應用程序的主體。

  一個基本的WinMain函數應該具有以下的功能:

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

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

  3,當消息循環檢索到WM_QUIT消息時中止程序運行

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

  (1)函數說明

  

int WINAPI WinMain
(
HINSTANCE hThisInst, //應用程序當前實例句柄
HINSTANCE hPrevInst, //應用程序其它實例句柄
LPSTR lpszCmdLine,  //指向程序命令行參數的指針
int nCmdShow     //應用程序開始執行時窗口顯示方式的整數值標示
)

  (2)初始化

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

  (3)消息循環

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

  它的基本寫法如下:

  

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

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

  本人水平有限請大家見諒。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved