初級Windows API C++語言版編程(3)

來源:互聯網
上載者:User

由於上一章的文章中我沒有向大家介紹清楚初試化的具體實現,造成很多的讀者無法很好的理解,這是我的失誤。本人現在補上,請大家原諒。

一個Windows API程式的初始化主要分為為四個部分。1、視窗類別的定義2、視窗類別的註冊3、建立視窗執行個體4、顯示視窗

①視窗類別定義

在Windows應用程式中,視窗類別定義了視窗的形式與功能。它的定義過程通過給視窗類別資料結構WNDCLASS賦值來完成,這個資料結構包含視窗類別的各個屬性。視窗類別的定義常用到以下幾個函數,在這裡一一介紹。

1、LoadIcon函數

LoadIcon函數的作用是在應用程式中載入一個視窗表徵圖。它的原型為:

HICON LoadIcon
(
   HINSTANCE hInstance, //表徵圖資源所在的模組控制代碼;
               //如果使用NULL,就會使用系統預定義的表徵圖
   LPCTSTR lpIconName //表徵圖資源名或系統預定義的表徵圖標識名
)
2、LoadCursor函數
LoadCursor函數作用是在應用程式中載入一個視窗游標。它的原型為:
HCURSOR LoadCursor
(
   HINSTANCE hInstance,//游標資源所在的模組控制代碼;
              //如果使用NULL,它就會使用系統預定義的游標
   LPCTSTR lpCursorName//表徵圖資源名或系統預定義的游標標識名
)

3、GetStockObject函數

應用程式通過調用GetStockObject函數來擷取系統提供的背景刷,它的原型為:

HBRUSH GetStockObject(int nBrush);

//nBrush 為系統提供的背景刷標示名

②註冊視窗類別

Windows系統本身提供部分預定義的視窗類別,我們也可以自己定義視窗類別,視窗類別必須先註冊後使用。視窗類別註冊使用的函數是RegisterClass()實現。它的原型為:

RegisterClass(&wndclass);

//wndclass為視窗的類結構(前面第二篇文章已經介紹過了)

③建立視窗

視窗註冊之後就要把它執行個體化,簡單的說就是建立一個視窗的執行個體。它是由函數CreateWindow()實現,函數的原型為:

HWND CreateWindow
(
   LPCTSTR lpszClassName,//視窗執行個體的類的名字
   LPCTSTR lpszTitle,    //視窗標題名
   DWORD dwStyle,    //新建立的視窗的樣式(後面將會詳細介紹)
   int x,          //視窗左上方的橫座標
   int y,          //視窗左上方的縱座標
   int nWidth,        //視窗的寬度
   int nHeight,       //視窗的高度
   HWND hwndParent,   //該視窗的父視窗的控制代碼
   HMENU hMenu,     //視窗主菜單控制代碼
   HINSTANCE hInstance, //建立視窗的應用程式當前控制代碼
   LPVOID lpParam     //指向一個傳遞給視窗的參數值的指標
)

那麼視窗的樣式有哪些呢?

標識 說明

WS_BORDER 建立一般帶邊框的視窗

WS_CAPTION 建立一個帶標題列的視窗

WS_HSCROLL 建立一個帶水平捲軸的視窗

WS_MAXIMIZEBOX 建立一個帶最大化按鈕的視窗

WS_MINIMIZEBOX 建立一個帶最小化按鈕的視窗

WS_OVERLAPPED 建立一個帶邊框和標題列的視窗

WS_OVERLAPPEDWINDOW 建立一個帶邊框、標題列、系統功能表及最大化、最小化按鈕的視窗

WS_POPUP 建立一彈出式視窗

WS_POPUPWINDOW 建立一帶邊框和系統功能表的彈出式視窗

WS_SYSMENU 建立一帶系統功能表的視窗

WS_VSCROLL 建立一帶垂直捲軸的視窗

當然為了實現具有多種風格的視窗,WINAPI提供了“|”來表示並(∪)的意思。例如我們要實現一個即具有垂直捲軸又具有水平捲軸的彈出式視窗時可以輸入:WS_BSCOLL|WS_VSCROLL|WM_POPUP

④顯示視窗

以上的操作均由函數實現,顯示視窗當然也不例外。視窗類別的顯示由ShowWindow和UpdateWindow函數實現。應用程式調用ShowWindow函數在螢幕上顯示視窗,其形式為:

BOOL ShowWindow(hwnd,nCmdShow)

//其中hwnd為視窗控制代碼,nCmdShow為視窗顯示形式標識

nCmdShow共有六個可選值

標識 說明

SW_HIDE 隱藏視窗

SW_SHOWNORMAL 顯示並啟用視窗

SW_SHOWMINIMIZE 顯示並已最小化的視窗

SW_SHOWMAXIMIZE 顯示並已最大化的視窗

SW_SHOWNOACTIVE 顯示但不啟用視窗

SW_RESTORE 恢複視窗原來的位置及尺寸

在視窗顯示之後,應用程式應使用UpdateWindow函數更新並繪製使用者區,並發出WM_PAINT訊息。它的形式為:

BOOL UpdataWindow(hwnd);

//hwnd為視窗控制代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.