中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

使用CreateWindowEx創建窗體時如何使用lParam參數

小云
108
2023-08-05 21:08:07
欄目: 編程語言

在使用CreateWindowEx函數創建窗體時,可以使用lParam參數來傳遞一個指針或一個數值給窗口過程函數。lParam參數在窗口過程函數中可以用來存儲和訪問與窗口相關的額外數據。

下面是一個示例代碼,演示了如何使用lParam參數:

#include <windows.h>
// 窗口過程函數
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CREATE:
{
// 從lParam參數中獲取傳遞的指針
LPCREATESTRUCT lpCreateStruct = (LPCREATESTRUCT)lParam;
// 從指針中獲取傳遞的數據
int data = *(int*)lpCreateStruct->lpCreateParams;
// 使用data進行一些操作,這里只是簡單地顯示一個消息框
char buffer[50];
sprintf_s(buffer, "Received data: %d", data);
MessageBox(hwnd, buffer, "Message", MB_OK);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
// 主函數
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 注冊窗口類
const char* className = "MyWindowClass";
WNDCLASSEX wc = {};
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = className;
RegisterClassEx(&wc);
// 創建窗口
int data = 123; // 傳遞的數據
HWND hwnd = CreateWindowEx(0, className, "My Window", WS_OVERLAPPEDWINDOW, 100, 100, 400, 300, NULL, NULL, hInstance, &data);
if (hwnd == NULL)
{
MessageBox(NULL, "Failed to create window", "Error", MB_OK);
return 0;
}
// 顯示窗口
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// 消息循環
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}

在上面的示例代碼中,我們在CreateWindowEx函數的最后一個參數中傳遞了一個指向整數的指針(&data)。然后在窗口過程函數的WM_CREATE消息處理中,使用強制類型轉換將lParam參數轉換為指向CREATESTRUCT結構體的指針,然后再從該結構體的lpCreateParams字段中獲取到傳遞的整數值。

在這個示例中,我們只是簡單地將整數值顯示到一個消息框中。實際的應用中,你可以根據需要使用lParam參數來傳遞和訪問其他類型的數據。

0
德令哈市| 河间市| 石楼县| 清远市| 梅河口市| 吴桥县| 南通市| 曲靖市| 渝中区| 吴川市| 佛教| 琼结县| 克山县| 岐山县| 任丘市| 宜章县| 察哈| 濮阳市| 惠来县| 乐东| 吴江市| 古田县| 东兴市| 绥宁县| 忻城县| 德阳市| 巧家县| 新化县| 大邑县| 民县| 扬中市| 平和县| 正镶白旗| 辽阳市| 马尔康县| 晋宁县| 新野县| 益阳市| 延庆县| 通山县| 张北县|