中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

怎么查詢網(wǎng)站是否被收錄百度網(wǎng)址大全設(shè)為主頁(yè)

怎么查詢網(wǎng)站是否被收錄,百度網(wǎng)址大全設(shè)為主頁(yè),國(guó)外網(wǎng)站排行榜,上海哪家做網(wǎng)站(詳解入門(mén))Windows 應(yīng)用程序的 簡(jiǎn)單窗口創(chuàng)建以及關(guān)鍵函數(shù)詳細(xì)解釋。 前言(有必要了解): Windows API就是Windows應(yīng)用程序接口,是針對(duì)Microsoft Windows操作系統(tǒng)家族的系統(tǒng)編程接口,為搭建各種圖形界面提供庫(kù)函數(shù)。實(shí)際上如果我們要…

(詳解入門(mén))Windows 應(yīng)用程序的 簡(jiǎn)單窗口創(chuàng)建以及關(guān)鍵函數(shù)詳細(xì)解釋。


前言(有必要了解):

Windows API就是Windows應(yīng)用程序接口,是針對(duì)Microsoft Windows操作系統(tǒng)家族的系統(tǒng)編程接口,為搭建各種圖形界面提供庫(kù)函數(shù)。實(shí)際上如果我們要開(kāi)發(fā)出更靈活、更實(shí)用、更具效率的應(yīng)用程序,雖然類(lèi)庫(kù)和控件使應(yīng)用程序的開(kāi)發(fā)簡(jiǎn)單的多,但它們只提供Windows的一般功能,對(duì)于比較復(fù)雜和特殊的功能來(lái)說(shuō),使用類(lèi)庫(kù)和控件是非常難以實(shí)現(xiàn)的,這時(shí)就需要采用API函數(shù)來(lái)實(shí)現(xiàn)。

MFC是微軟公司提供的一個(gè)類(lèi)庫(kù),以C++類(lèi)的形式封裝了Windows API,并且包含應(yīng)用程序框架,以減少應(yīng)用程序開(kāi)發(fā)人員的工作量。其中包含大量Windows句柄封裝類(lèi)和很多Windows的內(nèi)建控件和組件的封裝類(lèi)。

其中32位Windows操作系統(tǒng)的編程接口稱為Win32 API,以便與以前16位版本W(wǎng)indows編程接口(16位Windows API)區(qū)別開(kāi)來(lái)。


一、簡(jiǎn)單窗口的創(chuàng)建

1.演示(以Dev C++為例,其他編譯器也差不多)

選擇文件----新建----項(xiàng)目----WindowsApplication----確定
在這里插入圖片描述
在這里插入圖片描述


2.完成以上操作會(huì)自行生成以下代碼(有解釋)

 // 包括頭文件
#include <windows.h>
 // 消息處理函數(shù)
LRESULT CALLBACK WndProc(HWND hwnd,           // hwnd是要處理窗口的句柄,UINT Message,        // message是消息ID,代表了不同的消息類(lèi)型WPARAM wParam,       // wParam的值為按下按鍵的虛擬鍵碼LPARAM lParam)       // lParam則存儲(chǔ)按鍵的相關(guān)狀態(tài)信息
{                         switch(Message) {case WM_DESTROY: {           // 處理窗口結(jié)束消息PostQuitMessage(0);break;}default:return DefWindowProc(hwnd, Message, wParam, lParam);}return 0;
}

lParam則存儲(chǔ)按鍵的相關(guān)狀態(tài)信息(比如當(dāng)鼠標(biāo)消息發(fā)出時(shí),wParam值為鼠標(biāo)按鍵的信息,而lParam則儲(chǔ)存鼠標(biāo)的坐標(biāo),高字節(jié)代表y坐標(biāo),低字節(jié)代表x坐標(biāo)。

 // WinMain函數(shù)是應(yīng)用程序的入口,相當(dāng)DOS程序的main函數(shù)
int WINAPI WinMain(HINSTANCE hInstance,         // 當(dāng)前實(shí)例句柄HINSTANCE hPrevInstance,     // 前一個(gè)實(shí)例句柄LPSTR lpCmdLine,             // 指向命令行參數(shù)的指針int nCmdShow)                // 窗口的顯示狀態(tài)
{// 注冊(cè)窗口WNDCLASSEX wc;        // 定義窗口類(lèi)HWND hwnd;            // 窗口句柄MSG msg;              // 定義消息memset(&wc,0,sizeof(wc));              // 為新申請(qǐng)的內(nèi)存做初始化wc.cbSize  = sizeof(WNDCLASSEX);       // WNDCLASSEX的大小wc.lpfnWndProc  = WndProc;             // 指定消息處理函數(shù)wc.hInstance  = hInstance;             // 實(shí)例句柄wc.hCursor = LoadCursor(NULL, IDC_ARROW);        // 光標(biāo)句柄wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);     // 背景畫(huà)刷的句柄wc.lpszClassName = "WindowClass";                // 窗口類(lèi)名wc.hIcon  = LoadIcon(NULL, IDI_APPLICATION);     // 圖標(biāo)句柄wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);    //和窗口類(lèi)關(guān)聯(lián)的小圖標(biāo)if(!RegisterClassEx(&wc)) {           // 注冊(cè)窗口MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);return 0;}// 創(chuàng)建窗口hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Caption",WS_VISIBLE|WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 640,480, NULL,NULL,hInstance,NULL);if(hwnd == NULL) {MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);return 0;}ShowWindow(hwnd,nCmdShow);      // 顯示窗口UpdateWindow(hwnd);             // 更新窗口// 消息循環(huán)while(GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg);       // 翻譯消息DispatchMessage(&msg);        // 將消息發(fā)送給WndProc處理}return msg.wParam;
}

3.代碼運(yùn)行結(jié)果(如圖)

在這里插入圖片描述


二、關(guān)鍵函數(shù)的詳解

1.注冊(cè)窗口 RegisterClassEx

注冊(cè)一個(gè)窗口類(lèi),以便在調(diào)用 CreateWindow或 CreateWindowEx函數(shù)時(shí)使用。
函數(shù)原型:

ATOM WINAPI RegisterClassEx(_In_ const WNDCLASSEX *lpwcx
);

參數(shù)解釋:

參數(shù)
lpwcx [in]
類(lèi)型:const WNDCLASSEX *
指向WNDCLASSEX結(jié)構(gòu)的指針 。在將結(jié)構(gòu)傳遞給函數(shù)之前,必須使用適當(dāng)?shù)念?lèi)屬性填充結(jié)構(gòu)。
注意:RegisterClass 函數(shù)己經(jīng)被 RegisterClassEx 函數(shù)代替。然而,如果你不需要設(shè)置類(lèi)的小圖標(biāo),你仍然可以使用 RegisterClass 函數(shù)。


2.創(chuàng)建窗口 CreateWindowEx

函數(shù)原型 :

HWND CreateWindowEx(DWORD    dwExStyle,     // 窗口的擴(kuò)展風(fēng)格LPCTSTR    lpClassName,   // 已經(jīng)注冊(cè)的窗口類(lèi)名稱LPCTSTR    lpWindowName,  // 窗口標(biāo)題欄的名字DWORD    dwStyle,       // 窗口的基本風(fēng)格int    x,             // 窗口左上角水平坐標(biāo)位置int    y,             // 窗口左上角垂直坐標(biāo)位置int    nWidth,        // 窗口的寬度int    nHeight,       // 窗口的高度HWND    hWndParent,    // 窗口的父窗口句柄HMENU    hMenu,         // 窗口菜單句柄HINSTANCE    hInstance,     // 應(yīng)用程序?qū)嵗浔鶯PVOID    lpParam        // 窗口創(chuàng)建時(shí)附加參數(shù)   
);  // 創(chuàng)建成功返回窗口句柄

參數(shù)解釋 :

參數(shù)一:dwExStyle 指定窗口的擴(kuò)展風(fēng)格

dwExStyle窗口的擴(kuò)展風(fēng)格含義
WS_EX_NODRAG:防止窗口被移動(dòng)
WS_EX_ACCEPTFILES:指定以該風(fēng)格創(chuàng)建的窗口接受一個(gè)拖拽文件。
WS_EX_APPWINDOW:當(dāng)窗口可見(jiàn)時(shí),將一個(gè)頂層窗口放置到任務(wù)條上。
WS_EX_CLIENTEDGE:指定窗口有一個(gè)帶陰影的邊界。
WS_EX_CONTEXTHELP:在窗口的標(biāo)題條包含一個(gè)問(wèn)號(hào)標(biāo)志。當(dāng)用戶點(diǎn)擊了問(wèn)號(hào)時(shí),鼠標(biāo)光標(biāo)變?yōu)橐粋€(gè)問(wèn)號(hào)的指針、如果點(diǎn)擊了一個(gè)子窗口,則子窗口接收到WM_HELP消息。子窗口應(yīng)該將這個(gè)消息傳遞給父窗口過(guò)程,父窗口再通過(guò)HELP_WM_HELP命令調(diào)用WinHelp函數(shù)。這個(gè)Help應(yīng)用程序顯示一個(gè)包含子窗口幫助信息的彈出式窗口。WS_EX_CONTEXTHELP不能與WS_MAXIMIZEBOX和WS_MINIMIZEBOX同時(shí)使用。
WS_EX_CONTROLPARENT:允許用戶使用Tab鍵在窗口的子窗口間搜索。
WS_EX_DLGMODALFRAME:創(chuàng)建一個(gè)帶雙邊的窗口;該窗口可以在dwStyle中指定WS_CAPTION風(fēng)格來(lái)創(chuàng)建一個(gè)標(biāo)題欄。
WS_EX_LEFT:窗口具有左對(duì)齊屬性,這是缺省設(shè)置的。
WS_EX_LEFTSCROLLBAR:如果外殼語(yǔ)言是如Hebrew,Arabic,或其他支持reading order alignment的語(yǔ)言,則標(biāo)題條(如果存在)則在客戶區(qū)的左部分。若是其他語(yǔ)言,在該風(fēng)格被忽略并且不作為錯(cuò)誤處理。
WS_EX_LTRREADING:窗口文本以LEFT到RIGHT(自左向右)屬性的順序顯示。這是缺省設(shè)置的。
WS_EX_MDICHILD:創(chuàng)建一個(gè)MDI子窗口。
WS_EX_NOPATARENTNOTIFY:指明以這個(gè)風(fēng)格創(chuàng)建的窗口在被創(chuàng)建和銷(xiāo)毀時(shí)不向父窗口發(fā)送WM_PARENTNOTFY消息。
WS_EX_OVERLAPPEDWINDOW:WS_EX_CLIENTEDGE和WS_EX_WINDOWEDGE的組合。
WS_EX_PALETTEWINDOW:WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW和WS_WX_TOPMOST風(fēng)格的組合
WS_EX_RIGHT:窗口具有普通的右對(duì)齊屬性,這依賴于窗口類(lèi)。只有在外殼語(yǔ)言是如Hebrew,Arabic或其他支持讀順序?qū)R(reading order alignment)的語(yǔ)言時(shí)該風(fēng)格才有效,否則,忽略該標(biāo)志并且不作為錯(cuò)誤處理。
WS_EX_RIGHTSCROLLBAR:垂直滾動(dòng)條在窗口的右邊界。這是缺省設(shè)置的。
WS_EX_RTLREADING:如果外殼語(yǔ)言是如Hebrew,Arabic,或其他支持讀順序?qū)R(reading order alignment)的語(yǔ)言,則窗口文本是一自左向右)RIGHT到LEFT順序的讀出順序。若是其他語(yǔ)言,在該風(fēng)格被忽略并且不作為錯(cuò)誤處理。
WS_EX_STATICEDGE:為不接受用戶輸入的項(xiàng)創(chuàng)建一個(gè)3一維邊界風(fēng)格
WS_EX_TOOLWINDOW:創(chuàng)建工具窗口,即窗口是一個(gè)游動(dòng)的工具條。工具窗口的標(biāo)題條比一般窗口的標(biāo)題條短,并且窗口標(biāo)題以小字體顯示。工具窗口不在任務(wù)欄里顯示,當(dāng)用戶按下alt+Tab鍵時(shí)工具窗口不在對(duì)話框里顯示。如果工具窗口有一個(gè)系統(tǒng)菜單,它的圖標(biāo)也不會(huì)顯示在標(biāo)題欄里,但是,可以通過(guò)點(diǎn)擊鼠標(biāo)右鍵或Alt+Space來(lái)顯示菜單。
WS_EX_TOPMOST:指明以該風(fēng)格創(chuàng)建的窗口應(yīng)放置在所有非最高層窗口的上面并且停留在其L,即使窗口未被激活。使用函數(shù)SetWindowPos來(lái)設(shè)置和移去這個(gè)風(fēng)格。
WS_EX_TRANSPARENT:指定以這個(gè)風(fēng)格創(chuàng)建的窗口在窗口下的同屬窗口已重畫(huà)時(shí),該窗口才可以重畫(huà)。由于其下的同屬窗口已被重畫(huà),該窗口是透明的。

參數(shù)二:lpClassName 已經(jīng)注冊(cè)的窗口類(lèi)名稱

  1. 窗口類(lèi)名稱,可以是一個(gè)指向 NULL 結(jié)束的字符串或一個(gè)整型數(shù)值
  2. 如果是字符串,它指定了窗口的類(lèi)名。這個(gè)類(lèi)名可以是任何用函數(shù) RegisterClass 注冊(cè)的類(lèi)名,或是任何預(yù)定義的控制類(lèi)名
  3. 如是一個(gè)整型量,它是由此前調(diào)用 theGlobalAddAtom 函數(shù)產(chǎn)生的全局量。這個(gè)小于 0xC000 的 16 位數(shù)必須是 lpClassName 參數(shù)字的低 16 位,該參數(shù)的高位必須是 0

參數(shù)三:lpWindowName 窗口標(biāo)題欄的名字

  1. 窗口標(biāo)題,一個(gè)指向 NULL 結(jié)束的字符串指針
  2. 如果窗口風(fēng)格指定了標(biāo)題條,由 lpWindowName 指向的窗口標(biāo)題將顯示在標(biāo)題條上
  3. 當(dāng)使用 Createwindow 函數(shù)來(lái)創(chuàng)建控制例如按鈕,選擇框和靜態(tài)控制時(shí),可使用 lpWindowName 來(lái)指定控制文本

參數(shù)四:dwStyle 窗口的基本風(fēng)格

dwStyle窗口的基本風(fēng)格含義
WS_BORDER:創(chuàng)建一個(gè)帶邊框的窗口。
WS_CAPTION:創(chuàng)建一個(gè)有標(biāo)題框的窗口(包括WS_BODER風(fēng)格)。
WS_CHILD:創(chuàng)建一個(gè)子窗口。這個(gè)風(fēng)格不能與WS_POPUP風(fēng)格合用。
WS_CHILDWINDOW:與WS_CHILD相同。
WS_CLIPCHILDREN:當(dāng)在父窗口內(nèi)繪圖時(shí),排除子窗口區(qū)域。在創(chuàng)建父窗口時(shí)使用這個(gè)風(fēng)格。
WS_CLIPSIBLINGS:排除子窗口之間的相對(duì)區(qū)域,也就是,當(dāng)一個(gè)特定的窗口接收到WM_PAINT消息時(shí),WS_CLIPSIBLINGS 風(fēng)格將所有層疊窗口排除在繪圖之外,只重繪指定的子窗口。如果未指定WS_CLIPSIBLINGS風(fēng)格,并且子窗口是層疊的,則在重繪子窗口的客戶區(qū)時(shí),就會(huì)重繪鄰近的子窗口。
WS_DISABLED:創(chuàng)建一個(gè)初始狀態(tài)為禁止的子窗口。一個(gè)禁止?fàn)顟B(tài)的窗口不能接受來(lái)自用戶的輸入信息。
WS_DLGFRAME:創(chuàng)建一個(gè)帶對(duì)話框邊框風(fēng)格的窗口。這種風(fēng)格的窗口不能帶標(biāo)題條。
WS_GROUP:指定一組控制的第一個(gè)控制。這個(gè)控制組由第一個(gè)控制和隨后定義的控制組成,自第二個(gè)控制開(kāi)始每個(gè)控制,具有WS_GROUP風(fēng)格,每個(gè)組的第一個(gè)控制帶有WS_TABSTOP風(fēng)格,從而使用戶可以在組間移動(dòng)。用戶隨后可以使用光標(biāo)在組內(nèi)的控制間改變鍵盤(pán)焦點(diǎn)。
WS_HSCROLL:創(chuàng)建一個(gè)有水平滾動(dòng)條的窗口。
WS_ICONIC:創(chuàng)建一個(gè)初始狀態(tài)為最小化狀態(tài)的窗口。與WS_MINIMIZE風(fēng)格相同。
WS_MAXIMIZE:創(chuàng)建一個(gè)初始狀態(tài)為最大化狀態(tài)的窗口。
WS_MAXIMIZEBOX:創(chuàng)建一個(gè)具有最大化按鈕的窗口。該風(fēng)格不能與WS_EX_CONTEXTHELP風(fēng)格同時(shí)出現(xiàn),同時(shí)必須指定WS_SYSMENU風(fēng)格。
WS_OVERLAPPED:產(chǎn)生一個(gè)層疊的窗口。一個(gè)層疊的窗口有一個(gè)標(biāo)題條和一個(gè)邊框。與WS_TILED風(fēng)格相同。
WS_OVERLAPPEDWINDOW:創(chuàng)建一個(gè)具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU - WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX風(fēng)格的層疊窗口,與WS_TILEDWINDOW風(fēng)格相同。
WS_POPUP:創(chuàng)建一個(gè)彈出式窗口。該風(fēng)格不能與WS_CHILD風(fēng)格同時(shí)使用。
WS_POPUPWINDOW:創(chuàng)建一個(gè)具有WS_BORDER,WS_POPUP,WS_SYSMENU風(fēng)格的窗口,WS_CAPTION和WS_POPUPWINDOW必須同時(shí)設(shè)定才能使窗口某單可見(jiàn)。
WS_SIZEBOX:創(chuàng)建一個(gè)可調(diào)邊框的窗口,與WS_THICKFRAME風(fēng)格相同。
WS_SYSMENU:創(chuàng)建一個(gè)在標(biāo)題條上帶有窗口菜單的窗口,必須同時(shí)設(shè)定WS_CAPTION風(fēng)格。
WS_TABSTOP:創(chuàng)建一個(gè)控制,這個(gè)控制在用戶按下Tab鍵時(shí)可以獲得鍵盤(pán)焦點(diǎn)。按下Tab鍵后使鍵盤(pán)焦點(diǎn)轉(zhuǎn)移到下一具有WS_TABSTOP風(fēng)格的控制。
WS_THICKFRAME:創(chuàng)建一個(gè)具有可調(diào)邊框的窗口,與WS_SIZEBOX風(fēng)格相同。
WS_TILED:產(chǎn)生一個(gè)層疊的窗口。一個(gè)層疊的窗口有一個(gè)標(biāo)題和一個(gè)邊框。與WS_OVERLAPPED風(fēng)格相同。
WS_TILEDWINDOW:創(chuàng)建一個(gè)具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU, WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX風(fēng)格的層疊窗口。與WS_OVERLAPPEDWINDOW風(fēng)格相同。
WS_VISIBLE:創(chuàng)建一個(gè)初始狀態(tài)為可見(jiàn)的窗口。
WS_VSCROLL:創(chuàng)建一個(gè)有垂直滾動(dòng)條的窗口。

參數(shù)五:x 初始窗口左上角水平坐標(biāo)位置

  1. 指定窗口的初始水平位置(x 坐標(biāo))
  2. 對(duì)一個(gè)層疊或彈出式窗口,x 參數(shù)是屏幕坐標(biāo)系的窗口的左上角的初始 x 坐標(biāo)
  3. 對(duì)于子窗口,x 是子窗口左上角相對(duì)父窗口客戶區(qū)左上角的初始 x 坐標(biāo)
  4. 如果該參數(shù)被設(shè)為 CW_USEDEFAULT 則系統(tǒng)為窗口選擇缺省的左上角坐標(biāo)并忽略 y 參數(shù),CW_USEDEFAULT 只對(duì)層疊窗口有效,如果為彈出式窗口或子窗口設(shè)定,則 x 和 y 參數(shù)被設(shè)為零。

參數(shù)六: y 初始窗口左上角垂直坐標(biāo)位置

  1. 指定窗口的初始垂直位置(y 坐標(biāo))
  2. 對(duì)一個(gè)層疊或彈出式窗口,y 參數(shù)是屏幕坐標(biāo)系的窗口的左上角的初始 y 坐標(biāo)
  3. 對(duì)于子窗口,y 是子窗口左上角相對(duì)父窗口客戶區(qū)左上角的初始 y 坐標(biāo)
  4. 對(duì)于列表框,y 是列表框客戶區(qū)左上角相對(duì)父窗口客戶區(qū)左上角的初始 y 坐標(biāo)
  5. 如果層疊窗口是使用 WS_VISIBLE 風(fēng)格位創(chuàng)建的并且 x 參數(shù)被設(shè)為 CW_USEDEFAULT,則系統(tǒng)將忽略 y 參數(shù)

參數(shù)七:nWidth 初始窗口的寬度

  1. 以設(shè)備單元指明窗口的寬度
  2. 對(duì)于層疊窗口,nWidth 的值或是屏幕坐標(biāo)的窗口寬度或是 CW_USEDEFAULT
  3. 若 nWidth 是 CW_USEDEFAULT,則系統(tǒng)為窗口選擇一個(gè)默認(rèn)的高度和寬度(默認(rèn)寬度為從初始 x 坐標(biāo)開(kāi)始到屏幕的右邊界,缺省高度為從初始 y 坐標(biāo)開(kāi)始到目標(biāo)區(qū)域的頂部。),CW_USEDEFAULT 只對(duì)層疊窗口有效,如果為彈出式窗口和子窗口設(shè)定 CW_USEDEFAULT 標(biāo)志則 nWidth 和 nHeight 被設(shè)為零

參數(shù)八:nHeight 初始窗口的高度

  1. 以設(shè)備單元指明窗口的高度
  2. 對(duì)于層疊窗口,nHeight 是屏幕坐標(biāo)的窗口寬度
  3. 若 nWidth 被設(shè)為 CW_USEDEFAULT,則系統(tǒng)忽略 nHeight 參數(shù),自動(dòng)為 nWidth 和 nHeight 設(shè)置默認(rèn)參數(shù)

參數(shù)九: hWndParent 窗口的父窗口句柄

  1. 指向被創(chuàng)建窗口的父窗口或所有者窗口的句柄
  2. 若要?jiǎng)?chuàng)建一個(gè)子窗口或一個(gè)從屬窗口,需提供一個(gè)有效的窗口句柄
  3. 創(chuàng)建一個(gè)單純的消息窗口,可以提供 HWND_MESSAGE 或提供一個(gè)己存在的消息窗口的句柄

參數(shù)十: hMenu 窗口菜單句柄

  1. 指向窗口菜單句柄,或依據(jù)窗口風(fēng)格指明一個(gè)子窗口標(biāo)識(shí)
  2. 對(duì)于層疊或彈出式窗口,hMenu 指定窗口使用的菜單:如果使用了菜單類(lèi),則 hMenu 可以為 NULL
  3. 對(duì)于子窗口,hMenu 指定了該子窗口標(biāo)識(shí)(一個(gè)整型量),一個(gè)對(duì)話框使用這個(gè)整型值將事件通知父類(lèi)。應(yīng)用程序確定子窗口標(biāo)識(shí),這個(gè)值對(duì)于相同父窗口的所有子窗口必須是唯一的

參數(shù)十一: hInstance 應(yīng)用程序?qū)嵗浔?/strong>

  1. 與窗口相關(guān)聯(lián)的模塊實(shí)例的句柄

參數(shù)十二:lpParam窗口創(chuàng)建時(shí)附加參數(shù)

  1. 指向一個(gè)值的指針,該值傳遞給窗口 WM_CREATE 消息。該值通過(guò)在 IParam 參數(shù)中的 CREATESTRUCT 結(jié)構(gòu)傳遞
  2. 如果應(yīng)用程序調(diào)用 CreateWindow 創(chuàng)建一個(gè) MDI 客戶窗口,則 lpParam 必須指向一個(gè) CLIENTCREATESTRUCT 結(jié)構(gòu)

3.顯示窗口 ShowWindow

函數(shù)原型:

BOOL WINAPI ShowWindow(_In_ HWND hWnd,_In_ int  nCmdShow
);

參數(shù)解釋:

hWnd [in]
類(lèi)型:HWND
窗戶的句柄。
nCmdShow [in]
輸入:int
控制窗口的顯示方式。如果啟動(dòng)應(yīng)用程序的程序提供STARTUPINFO結(jié)構(gòu),則在 應(yīng)用程序第一次調(diào)用ShowWindow時(shí)會(huì)忽略此參數(shù)。否則,第一次調(diào)用ShowWindow時(shí),該值應(yīng)該是WinMain函數(shù)在其nCmdShow參數(shù)中獲取的值 。在后續(xù)調(diào)用中,此參數(shù)可以是以下值之一。

返回值:

返回值
類(lèi)型:BOOL
如果窗口先前可見(jiàn),則返回值為非零。
如果窗口先前已隱藏,則返回值為零。

nCmdShow值含義
SW_FORCEMINIMIZE 11最小化窗口,即使擁有窗口的線程沒(méi)有響應(yīng)。僅在最小化來(lái)自不同線程的窗口時(shí)才應(yīng)使用此標(biāo)志。
SW_HIDE 0隱藏窗口并激活另一個(gè)窗口。
SW_MAXIMIZE 3最大化指定的窗口。
SW_MINIMIZE 6最小化指定的窗口并激活Z順序中的下一個(gè)頂級(jí)窗口。
SW_RESTORE 9激活并顯示窗口。如果窗口最小化或最大化,系統(tǒng)會(huì)將其恢復(fù)到原始大小和位置。應(yīng)用程序應(yīng)在還原最小化窗口時(shí)指定此標(biāo)志。
SW_SHOW 5激活窗口并以當(dāng)前大小和位置顯示它。
SW_SHOWDEFAULT 10根據(jù)啟動(dòng)應(yīng)用程序的程序傳遞給CreateProcess函數(shù)的STARTUPINFO結(jié)構(gòu)中 指定的SW_值設(shè)置show狀態(tài) 。
SW_SHOWMAXIMIZED 3激活窗口并將其顯示為最大化窗口。
SW_SHOWMINIMIZED 2激活窗口并將其顯示為最小化窗口。
SW_SHOWMINNOACTIVE 7將窗口顯示為最小化窗口。此值類(lèi)似于SW_SHOWMINIMIZED,但窗口未激活。
SW_SHOWNA8以當(dāng)前大小和位置顯示窗口。此值類(lèi)似于SW_SHOW,但窗口未激活。
SW_SHOWNOACTIVATE 4顯示最近大小和位置的窗口。此值類(lèi)似于SW_SHOWNORMAL,但窗口未激活。
SW_SHOWNORMAL 1激活并顯示一個(gè)窗口。如果窗口最小化或最大化,系統(tǒng)會(huì)將其恢復(fù)到原始大小和位置。應(yīng)用程序應(yīng)在首次顯示窗口時(shí)指定此標(biāo)志。

4.更新窗口 UpdateWindow

如果窗口的更新區(qū)域不為空,則UpdateWindow函數(shù)通過(guò)向窗口發(fā)送WM_PAINT消息來(lái)更新指定窗口的客戶區(qū)域 。該函數(shù)將WM_PAINT消息直接發(fā)送到指定窗口的窗口過(guò)程,繞過(guò)應(yīng)用程序隊(duì)列。如果更新區(qū)域?yàn)榭?#xff0c;則不發(fā)送任何消息。

函數(shù)原型:

BOOL UpdateWindow(_In_ HWND hWnd
);

參數(shù)解釋:

參數(shù)
hWnd [in]
處理要更新的窗口。

返回值:

如果函數(shù)成功,則返回值為非零值。
如果函數(shù)失敗,則返回值為零。


5.顯示模式對(duì)話框MessageBox

顯示模式對(duì)話框,其中包含系統(tǒng)圖標(biāo),一組按鈕和簡(jiǎn)要的特定于應(yīng)用程序的消息,例如狀態(tài)或錯(cuò)誤信息。消息框返回一個(gè)整數(shù)值,指示用戶單擊的按鈕。

函數(shù)原型:

int WINAPI MessageBox(_In_opt_ HWND    hWnd,_In_opt_ LPCTSTR lpText,_In_opt_ LPCTSTR lpCaption,_In_     UINT    uType
);

參數(shù)解釋:

參數(shù)
hWnd
要?jiǎng)?chuàng)建的消息框的所有者窗口的句柄。如果此參數(shù)為NULL,則消息框沒(méi)有所有者窗口。
lpText
要顯示的消息。如果字符串由多行組成,則可以使用每行之間的回車(chē)符和/或換行符分隔行。
lpCaption
對(duì)話框標(biāo)題。如果此參數(shù)為NULL,則默認(rèn)標(biāo)題為“ 錯(cuò)誤”。
uType
對(duì)話框的內(nèi)容和行為。此參數(shù)可以是來(lái)自以下標(biāo)志組的標(biāo)志的組合。

消息框中顯示的按鈕值含義
MB_ABORTRETRYIGNORE 0x00000002L消息框包含三個(gè)按鈕:Abort,Retry和Ignore。
MB_CANCELTRYCONTINUE 0x00000006L消息框包含三個(gè)按鈕:取消,再試一次,繼續(xù)。使用此消息框類(lèi)型而不是MB_ABORTRETRYIGNORE。
MB_HELP 0x00004000L在消息框中添加“ 幫助”按鈕。當(dāng)用戶單擊“ 幫助”按鈕或按F1時(shí),系統(tǒng)會(huì)向所有者發(fā)送 WM_HELP消息。
MB_OK 0x00000000L消息框包含一個(gè)按鈕:確定。這是默認(rèn)值。
MB_OKCANCEL 0x00000001L消息框包含兩個(gè)按鈕:確定和取消。
MB_RETRYCANCEL 0x00000005L消息框包含兩個(gè)按鈕:重試和取消。
MB_YESNO 0x00000004L消息框包含兩個(gè)按鈕:是和否。
MB_YESNOCANCEL 0x00000003L消息框包含三個(gè)按鈕:是,否和取消。
消息框中顯示圖標(biāo)含義
MB_ICONEXCLAMATION 0x00000030L消息框中會(huì)出現(xiàn)一個(gè)驚嘆號(hào)圖標(biāo)。
MB_ICONWARNING 0x00000030L消息框中會(huì)出現(xiàn)一個(gè)驚嘆號(hào)圖標(biāo)。
MB_ICONINFORMATION 0x00000040L消息框中將出現(xiàn)一個(gè)由圓圈中的小寫(xiě)字母i組成的圖標(biāo)。
MB_ICONASTERISK 0x00000040L消息框中將出現(xiàn)一個(gè)由圓圈中的小寫(xiě)字母i組成的圖標(biāo)。
MB_ICONQUESTION0x00000020L消息框中會(huì)出現(xiàn)一個(gè)問(wèn)號(hào)圖標(biāo)。不再推薦使用問(wèn)號(hào)消息圖標(biāo),因?yàn)樗荒芮宄乇硎咎囟?lèi)型的消息,并且因?yàn)樽鳛閱?wèn)題的消息的措辭可以應(yīng)用于任何消息類(lèi)型。此外,用戶可以將消息符號(hào)問(wèn)號(hào)與幫助信息混淆。因此,請(qǐng)勿在消息框中使用此問(wèn)號(hào)消息符號(hào)。系統(tǒng)繼續(xù)支持其僅包含向后兼容性。
MB_ICONSTOP 0x00000010L消息框中會(huì)出現(xiàn)一個(gè)停止標(biāo)志圖標(biāo)。
MB_ICONERROR 0x00000010L消息框中會(huì)出現(xiàn)一個(gè)停止標(biāo)志圖標(biāo)。
MB_ICONHAND 0x00000010L消息框中會(huì)出現(xiàn)一個(gè)停止標(biāo)志圖標(biāo)。
默認(rèn)按鈕含義
MB_DEFBUTTON1 0x00000000L第一個(gè)按鈕是默認(rèn)按鈕。MB_DEFBUTTON1是默認(rèn)值,除非指定了MB_DEFBUTTON2,MB_DEFBUTTON3或MB_DEFBUTTON4。
MB_DEFBUTTON2 0x00000100L第二個(gè)按鈕是默認(rèn)按鈕。
MB_DEFBUTTON3 0x00000200L第三個(gè)按鈕是默認(rèn)按鈕。
MB_DEFBUTTON4 0x00000300L第四個(gè)按鈕是默認(rèn)按鈕。

返回值:

返回代碼/值描述
IDABORT 3的中止按鈕被選中。
IDCANCEL 2“ 取消”按鈕已被選中。
IDCONTINUE 11該繼續(xù)按鈕被選中。
IDIGNORE 5“ 忽略”按鈕已被選中。
IDNO 7在沒(méi)有按鈕被選中。
IDOK 1在OK按鈕被選中。
IDRETRY 4選擇了“ 重試”按鈕。
IDTRYAGAIN 10選中了“ 再試一次”按鈕。
IDYES 6該是按鈕被選中。

6.檢索消息GetMessage

從調(diào)用線程的消息隊(duì)列中檢索消息。該函數(shù)調(diào)度傳入的已發(fā)送消息,直到發(fā)布的消息可供檢索。
與GetMessage不同, PeekMessage函數(shù)不會(huì)在返回之前等待發(fā)布消息。

函數(shù)原型:

BOOL WINAPI GetMessage(_Out_    LPMSG lpMsg,_In_opt_ HWND  hWnd,_In_     UINT  wMsgFilterMin,_In_     UINT  wMsgFilterMax
);

參數(shù)解釋:

lpMsg
指向MSG結(jié)構(gòu)的指針,該 結(jié)構(gòu)從線程的消息隊(duì)列接收消息信息。


hWnd
要檢索其消息的窗口句柄。該窗口必須屬于當(dāng)前線程。
如果hWnd為NULL,則GetMessage將檢索屬于當(dāng)前線程的任何窗口的消息,以及當(dāng)前線程的消息隊(duì)列中hwnd值為NULL的任何消息(請(qǐng)參閱 MSG結(jié)構(gòu))。因此,如果hWnd為NULL,則處理窗口消息和線程消息。
如果hWnd為-1,則GetMessage僅檢索當(dāng)前線程的hwnd值為NULL的消息隊(duì)列中的消息,即PostMessage發(fā)布的線程消息 (當(dāng)hWnd參數(shù)為NULL時(shí))或PostThreadMessage。

wMsgFilterMin
要檢索的最低消息值的整數(shù)值。使用WM_KEYFIRST(0x0100)指定第一個(gè)鍵盤(pán)消息或使用WM_MOUSEFIRST(0x0200)指定第一個(gè)鼠標(biāo)消息。
在此處和wMsgFilterMax中使用 WM_INPUT僅指定WM_INPUT消息。
如果wMsgFilterMin和wMsgFilterMax都為零,則GetMessage將返回所有可用消息(即,不執(zhí)行范圍過(guò)濾)。

wMsgFilterMax
要檢索的最高消息值的整數(shù)值。使用WM_KEYLAST指定最后一個(gè)鍵盤(pán)消息,或使用WM_MOUSELAST指定最后一條鼠標(biāo)消息。
在此處和wMsgFilterMin中使用 WM_INPUT僅指定WM_INPUT消息。
如果wMsgFilterMin和wMsgFilterMax都為零,則GetMessage將返回所有可用消息(即,不執(zhí)行范圍過(guò)濾)。

返回值:

類(lèi)型:BOOL
如果函數(shù)檢索WM_QUIT以外的消息 ,則返回值為非零值。
如果函數(shù)檢索 WM_QUIT消息,則返回值為零。
如果有錯(cuò)誤,則返回值為-1。


7.翻譯消息TranslateMessage

將虛擬密鑰消息轉(zhuǎn)換為字符消息。字符消息被發(fā)布到調(diào)用線程的消息隊(duì)列,以便在線程下次調(diào)用GetMessage或 PeekMessage函數(shù)時(shí)讀取 。

函數(shù)原型:

BOOL WINAPI TranslateMessage(_In_ const MSG *lpMsg
);

參數(shù)解釋:

lpMsg
類(lèi)型:const MSG *
指向MSG結(jié)構(gòu)的指針,該 結(jié)構(gòu)包含使用GetMessage或 PeekMessage函數(shù)從調(diào)用線程的消息隊(duì)列中檢索的消息信息 。

返回值:

類(lèi)型:BOOL
如果消息被轉(zhuǎn)換(即,字符消息被發(fā)布到線程的消息隊(duì)列中),則返回值非零。
如果消息是 WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN或 WM_SYSKEYUP,則無(wú)論轉(zhuǎn)換如何,返回值都是非零的。
如果消息未被轉(zhuǎn)換(即,字符消息未發(fā)布到線程的消息隊(duì)列中),則返回值為零。


8.傳遞消息 DispatchMessage

該函數(shù)分發(fā)一個(gè)消息給窗口程序。通常消息從GetMessage函數(shù)獲得或者TranslateMessage函數(shù)傳遞的。消息被分發(fā)到回調(diào)函數(shù)(過(guò)程函數(shù)),作用是消息傳遞給操作系統(tǒng),然后操作系統(tǒng)去調(diào)用我們的回調(diào)函數(shù),也就是說(shuō)我們?cè)诖绑w的過(guò)程函數(shù)中處理消息。

函數(shù)原型:

LONG DispatchMessage(CONST MSG*lpmsg);

參數(shù)解釋:

lpmsg:指向含有消息的MSG結(jié)構(gòu)的指針。

返回值:

返回值是窗口程序返回的值。盡管返回值的含義依賴于被調(diào)度的消息,但返回值通常被忽略。


三、補(bǔ)充

1. WIndow API 函數(shù)大全(方便查找):

鏈接:https://blog.csdn.net/qq_27361833/article/details/78192526

2.CreateWindowEx和CreateWindow的區(qū)別

鏈接:https://blog.csdn.net/ohmygol/article/details/6135897


作者說(shuō):

從中午一直寫(xiě)到現(xiàn)在,晚飯都還沒(méi)有呢,我發(fā)現(xiàn)自己總結(jié)再寫(xiě)出來(lái)后,這樣記得更牢固,效率高了很多。最大的好處就是方便自己以后查找相關(guān)知識(shí)。
這篇知識(shí)總結(jié)是windows 應(yīng)用程序編程和win32的敲門(mén)磚,認(rèn)真看完理解后,能很快進(jìn)入windows 應(yīng)用程序的編程。
注:下一篇將是VS的Win32 應(yīng)用程序創(chuàng)建,用于補(bǔ)充這篇未涉及的內(nèi)容。


參考1:Win32學(xué)習(xí)筆記 - CreateWindowEx()函數(shù)
參考2:CreateWindow函數(shù)詳解
參考3:msdn官網(wǎng)
參考4:《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)編程實(shí)例----基于Win32 API編程 厲旭杰、趙漢理編著

http://www.risenshineclean.com/news/10733.html

相關(guān)文章:

  • 江蘇省徐州市建設(shè)銀行網(wǎng)站a站
  • iis發(fā)布網(wǎng)站慢常州seo排名收費(fèi)
  • 深圳建網(wǎng)站的專業(yè)公司百度廣告投放平臺(tái)
  • 網(wǎng)絡(luò)傳奇重慶seo什么意思
  • 上海手機(jī)網(wǎng)站建設(shè)電話青島網(wǎng)站seo公司
  • 網(wǎng)站建設(shè)自學(xué)百度運(yùn)營(yíng)怎么做
  • 南寧做網(wǎng)站找哪家好小說(shuō)風(fēng)云榜
  • 外包服務(wù)屬于什么行業(yè)百度seo排名360
  • 做網(wǎng)站的收獲及感想宣傳推廣計(jì)劃怎么寫(xiě)
  • 福州企業(yè)網(wǎng)站seo服務(wù)銷(xiāo)售招聘
  • 不同網(wǎng)站建設(shè)特點(diǎn)全網(wǎng)網(wǎng)站快速排名推廣軟件
  • 登陸建設(shè)銀行官方網(wǎng)站韓國(guó)網(wǎng)站
  • 高密住房和城鄉(xiāng)建設(shè)局網(wǎng)站百度收錄提交入口網(wǎng)址
  • 建設(shè)一個(gè)視頻網(wǎng)站北京首頁(yè)關(guān)鍵詞優(yōu)化
  • 網(wǎng)站建設(shè)產(chǎn)品話術(shù)無(wú)錫網(wǎng)站優(yōu)化公司
  • 最優(yōu)網(wǎng)站建設(shè)百度指數(shù)如何分析數(shù)據(jù)
  • 家里面的服務(wù)器可以做網(wǎng)站嗎免費(fèi)網(wǎng)絡(luò)推廣網(wǎng)址
  • 網(wǎng)站建設(shè)待遇推廣計(jì)劃方案
  • 建設(shè)網(wǎng)站盈利2015互動(dòng)營(yíng)銷(xiāo)公司
  • 利辛做網(wǎng)站網(wǎng)站的營(yíng)銷(xiāo)策略
  • 做網(wǎng)站要哪些技術(shù)長(zhǎng)沙線上引流公司
  • visualstudio網(wǎng)頁(yè)設(shè)計(jì)作業(yè)青島網(wǎng)站優(yōu)化
  • 網(wǎng)站404怎么做搜索廣告是什么
  • 化妝品品牌推廣方案成都seo培訓(xùn)班
  • 企業(yè)外貿(mào)網(wǎng)站百度關(guān)鍵詞點(diǎn)擊
  • 網(wǎng)站留言板漏洞廈門(mén)seo公司到1火星
  • 深圳網(wǎng)站維護(hù)鎮(zhèn)江網(wǎng)站制作公司
  • 小程序訂貨系統(tǒng)seo店鋪描述
  • 哈爾濱網(wǎng)站建設(shè)還不如網(wǎng)站seo優(yōu)化運(yùn)營(yíng)
  • iis7.5 網(wǎng)站打不開(kāi)2021年度關(guān)鍵詞有哪些