函數做用:彈出一個對話框,典型的模態型對話框
函數原型:int WINAPI MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)
windows
參數含義:緩存
hWnd:該消息框的父窗口句柄,若是此參數爲NULL,則該消息框沒有父窗口
lpText:消息框的內容
lpCaption:消息框的標題
uType:對話框的按鈕樣式和圖標
按鈕樣式:函數
MB_OK:默認值,包含一個確認按鈕
MB_OKCANCEL:包含肯定以及取消兩個按鈕
MB_YESNO:包含是以及否兩個按鈕
MB_ABORTRETRYIGNORE:包含終止,重試以及跳過三個按鈕
MB_YESNOCANCEL:包含是,否以及取消三個按鈕
MB_RETRYCANCEL:包含重試以及取消兩個按鈕
圖標樣式:動畫
MB_ICONINFORMATION:藍色i
MB_ICONASTERISK:藍色i
MB_ICONQUESTION:藍色?
MB_ICONWARNING:黃色!
MB_ICONEXCLAMATION:黃色!
MB_ICONSTOP:紅色x
MB_ICONERROR:紅色x
MB_ICONHAND:紅色x
消息返回值:spa
IDYES:點擊是
IDNO:點擊否
IDOK:點擊確認
IDCANCE:點擊取消
IDABORT:點擊終止
IDRETRY:點擊重試
IDIGNORE:點擊忽略
Demo:指針
函數做用:建立窗口實例!一個完整的窗口程序應該先註冊窗口類,建立窗口實例,設置窗口的顯示狀態,最後發送重繪消息以防被其它窗口覆蓋後不能刷新調試
函數原型:HWND CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hlnstance, LPVOID lpParam)
code
參數含義:對象
lpClassName:指向窗口類名
lpWindowName:指定標題或者靜態文本框文本
dwStyle:指定窗口風格(標題,邊框,滾動條...)
x:相對於父窗口的橫座標
y:相對於父窗口的縱座標
nWidth:窗口寬度
nHeight:窗口高度
hWndParent:指向父窗口的句柄
hMenu:該窗口使用的某種類型的菜單的句柄
hlnstance:與窗口相關聯的模塊實例的句柄
lpParam:指向 CREATESTRUCT 結構的指針,傳遞 WM_CREATE 消息
重點說明:
1.通常窗口程序套路是:RegisterClass -> CreateWindow -> ShowWindow -> UpdateWindow
,按照面向對象實現很好理解,先註冊窗口類再實例化窗口,以後的 ShowWindow 是用於設置屬性讓窗口可見(WS_VISIBLE)
或者不可見,UpdateWindow 是用來發送WM_PAINT
消息更新窗口的接口
2.任何控件都屬於窗口,因此建立某個控件也是須要 CreateWindow 函數,傳入不一樣的 style 就表示不一樣的控件,好比:靜態文本static
,按鈕button
,編輯框edit
,複選框Check Box
等
3.CreateWindow 會給普通窗口過程發送一個 WM_CREATE 消息,對於層疊,彈出式和子窗口,CreateWindow 給窗口發送WM_CREATE
,WM_GETMINMAXINFO
和WM_NCCREATE
消息
函數做用:當窗口收到 WM_PAINT 消息時,須要首先調用 BeginPaint 獲取設備環境句柄,在其它狀況下須要使用 GetDC 來獲取設備環境句柄!由於咱們不能直接訪問硬件,因此須要藉助設備環境(Device Context)這個中間層間接訪問鍵盤,顯示器等硬件設備
函數原型:HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint)
參數含義:
hwnd:被重繪窗口的句柄
lpPaint:指向一個用來接收繪畫信息的 PAINTSTRUCT結構
當獲得了設備環境句柄後,咱們就能夠調用圖形設備接口(GDI)中已經封裝好的函數,諸如:TextOut,DrawText,CreateMenu,CreateBitmap,Rectangle,CreatePen等
函數做用:主動發送一條消息給窗口
函數原型:LRESULT SendMessage(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
參數含義:
hWnd:目標窗口的句柄
msg:發送的消息
wParam:附加消息,某些特定的消息須要用到
lParam:附加消息,某些特定的消息須要用到
函數做用:用於將指定窗口的標題文本(若是存在)拷貝到一個緩存區內,若是指定的窗口是一個控件,則拷貝控件的文本
函數原型:Int GetWindowText(HWND hWnd, LPTSTR lpString, Int nMaxCount)
參數含義:
hWnd:窗口或者控件句柄
lpString:指向接收文本的緩衝區指針
nMaxCount:最大的保存長度
函數做用:用於改變指定窗口的標題欄的文本內容(若是窗口有標題欄),若是指定窗口是一個控件,則改變控件的文本內容
函數原型:BOOL SetWindowText(HWND hWnd, LPCTSTR lpString)
參數含義:
hWnd:要改變文本內容的窗口或控件的句柄
lpString:指向改變後的字符串指針
函數做用:從一個對話框資源中建立一個模態對話框,該函數直到指定的回調函數經過調用 EndDialog 函數停止模態的對話框才能返回控制。該函數經過調用 DialogBoxParam 實現
函數原型:int DialogBox(HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc)
參數含義:
hInstance:實例句柄
lpTemplate:對話框模板名
hWndParent:指定擁有對話框的窗口
lpDialogFunc:指向對話框過程的指針
函數做用:建立一個非模態對話框,須要使用 DestroyWindow 結束該對話框。該函數經過調用 CreateDialogParam 實現
函數原型:HWND CreateDialog(HINSTANCE hlnstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC IpDialogFunc)
參數含義:
hInstance:標識該模塊的可執行文件含有對話框模板
lpTemplate:對話框模板名
hWndParent:指定擁有對話框的窗口
lpDialogFunc:指向對話框過程的指針
重點說明:
當關閉非模態對話框或者窗口時,會調用DestroyWindow
,這個函數先發送 WM_DESTROY 消息,接着發送 WM_NCDESTROY 消息
函數做用:從資源里加載字符串資源到 CString 對象裏,參數是資源 ID,同類型的還有LoadIcon
和LoadCursor
函數原型:int WINAPI LoadStringA(HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int nBufferMax)
參數含義:
hInstance:應用程序實例句柄
uID:資源ID
lpBuffer:接收從資源裏拷貝字符串出來的緩衝區
nBufferMax:指明緩衝區大小
函數做用:輸出調式信息到 Debugger
函數原型:void OutputDebugString(LPCTSTR lpOutputString)
參數含義:
lpOutputString:在調試器中調試時,輸出的字符串
函數做用:改變一個子窗口,彈出式窗口或頂層窗口的尺寸,位置或Z序
函數原型:WINUSERAPI BOOL WINAPI SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags)
參數含義:
hWnd:窗口句柄
hWndInsertAfter:窗口的 Z 順序
x:指定窗口新位置的左邊界
y:指定窗口新位置的頂邊界
cx:以像素指定窗口的新的寬度
cy:以像素指定窗口的新的高度
uFlags:窗口尺寸和定位的標誌
函數做用:在窗口列表中尋找與指定條件相符的第一個子窗口
函數原型:HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter, LPCTSTR lpszClass, LPCTSTR lpszWindow)
參數含義:
hwndParent:要查找子窗口的父窗口句柄
hwndChildAfter:子窗口句柄,查找從在Z序中的下一個子窗口開始
lpszClass:指向一個指定了類名的空結束字符串
lpszWindow:指向一個指定了窗口名(窗口標題)的空結束字符串
函數做用:該函數在顯示與隱藏窗口時能產生特殊的效果,有兩種類型的動畫效果:滾動動畫和滑動動畫
函數原型:BOOL AnimateWindow(HWND hWnd, DWORD dwTime, DWORD dwFlags)
參數含義:
hWnd:指定產生動畫的窗口的句柄
dwTime:指明動畫持續的時間
dwFlags:指定動畫類型
函數做用:改變指定窗口的位置和大小
函數原型:BOOL MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint)
參數含義:
hWnd:窗口的句柄
x:指定了CWnd的左邊的新位置
y:指定了CWnd的頂部的新位置
nWidth:指定了CWnd的新寬度
nHeight:指定了CWnd的新高度
bRepaint:指定了是否要重畫CWnd
函數做用:枚舉全部屏幕上的頂層窗口,並將窗口句柄傳送給定義的回調函數。FindWindow 和它相似,只找頂層窗口不找子窗口
函數原型: BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)
參數含義:
lpEnumFunc:指向一個應用程序定義的回調函數指針
lPararm:指定一個傳遞給回調函數的應用程序定義值
回調函數原型:BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
函數做用:判斷目標窗口是否存在
函數原型:BOOL IsWindow(HWND hWnd)
參數含義:
hWnd:目標窗口句柄
函數做用:返回與指定窗口有特定關係(如Z序或全部者)的窗口句柄
函數原型:HWND GetWindow(HWND hWnd, UNIT nCmd)
參數含義:
hWnd:窗口句柄
nCmd:說明指定窗口與要得到句柄的窗口之間的關係
重要說明:Z 序表示窗口層疊時的順序,Z 序越大窗口越靠前,即 Z 序小的窗口會被 Z 序大的窗口遮擋