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

首頁 > 學院 > 開發設計 > 正文

Windows編程入門——從一個簡單的窗口說起

2019-11-06 08:15:09
字體:
來源:轉載
供稿:網友
#include <windows.h>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPRevInstance, LPSTR lpCmdLine, int nCmdShow){    MessageBox(NULL,"茍利國家生死以,豈因禍福避趨之","念詩",MB_OK);    return 0;}

這就是最簡單的一個Win32程序,里面有很多聲明都是以前在C/C++學習中沒有見到過的。

WinMain():是和以往編程中的main()等價的東西.這是程序開始執行的入口;

HINSTANCE hInstance:程序可執行模塊的句柄;

HINSTANCE hPrevInstance:總是為NULL;

LPSTR lpCmdLine:命令行參數組成的一個單字符串,不包括程序名;

int nCmdShow:要傳遞給ShowWindow()的一個整數。

主程序中出現的MessageBox()原型為:int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType)

其實是根據Unicode的定義來的:

WINUSERAPI int WINAPI MessageBoxA( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);  WINUSERAPI int WINAPI MessageBoxW( HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);  #ifdef UNICODE #define MessageBox MessageBoxW//如果啟用Unicode庫,就用MessageBoxW #else #define MessageBox MessageBoxA//否則,就用MessageBoxA #endif

單單只有一個窗口未免也太low了,我們可以增加一些互動元素,比如對于鼠標點擊的處理。

這時我們可以嘗試著把WM_LBUTTONDOWN添加到WndProc()中,看看能夠發生什么

WndProc()部分的完整代碼如下:

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){    switch(msg)    {    case WM_LBUTTONDOWN:    {        char szFileName[MAX_PATH];        HINSTANCE hInstance=GetModuleHandle(NULL);        GetModuleFileName(hInstance, szFileName, MAX_PATH);        MessageBox(hwnd, "窗口彈出成功", "新消息", MB_OK|MB_ICONINFORMATION);    }    break;    case WM_CLOSE:        DestroyWindow(hwnd);        break;    case WM_DESTROY:        PostQuitMessage(0);        break;    default:        return DefWindowProc(hwnd, msg, wParam, lParam);    }    return 0;}

在程序中加入這樣一段代碼之后,在程序窗口中點擊一下,便會彈出一個新的窗口。具體效果如下圖所示:

深入研究WndProc函數:

WinProc是窗口回調過程。Windows通過它將事件傳遞給程序。回調函數是被調用回來的函數。這個函數處理所有發送給主程序窗口的消息。所以,通常WinProc是主程序源代碼文件中最長的函數。

需要了解這個函數,因為它是通向初始化Direct3D的鑰匙。它的參數既簡單又直白,它們代表Windows程序的真實“引擎”。據前述,這一信息是早先在WinMain中由GetMessage函數獲取的。不要將InitInstance和WinProc混淆在一起。InitInstance只運行一次,對選項進行設置。而后就由WinProc接管,接收并處理消息。

有關于WinProc的參數:

HWND hWnd:在游戲中,通常要使用hWnd作為參數創建一個新的設備環境句柄,也就是一個hDC。在DirectX到來之前,必須要保留好窗口句柄,因為只要引用一個窗口或控件就必須使用到它。在DirectX程序中,窗口句柄僅在開始時用于創建窗口。

UINT messgae:發送給窗口回調過程的消息。消息可以是任何東西,甚至是無需使用的消息。由于這個原因,有一個將消息傳遞給默認消息處理器的方法。

WPARAM wParam和LPARAM lParam:與特定命令消息一起傳遞過來的參數值的高位和低位。

關于按鍵消息捕捉的參數:

MK_CONTROL:鍵盤上Ctrl鍵被按下;

MK_LBUTTON:鼠標左鍵被按下;

MK_MBUTTON:鼠標中鍵被按下;

MK_RBUTTON:鼠標右鍵被按下;

MK_SHIFT:鍵盤Shift鍵被按下;

...其他跟此類似


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卓资县| 霍邱县| 名山县| 江北区| 南华县| 通州市| 修武县| 普兰县| 西盟| 静安区| 武宁县| 磐安县| 调兵山市| 托克逊县| 阿瓦提县| 连城县| 固阳县| 永登县| 保山市| 丰城市| 道孚县| 石林| 即墨市| 西乌| 翼城县| 玉山县| 阜新市| 手游| 宕昌县| 札达县| 固镇县| 读书| 定边县| 永平县| 台江县| 法库县| 华容县| 南澳县| 临江市| 金溪县| 乌拉特后旗|