亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

使用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
开鲁县| 禹城市| 广安市| 崇左市| 扎赉特旗| 南丹县| 印江| 丰台区| 石楼县| 太保市| 郁南县| 罗定市| 新安县| 昆山市| 玉屏| 班戈县| 廉江市| 金溪县| 乡宁县| 义乌市| 富蕴县| 大新县| 兴隆县| 醴陵市| 兰西县| 兴安县| 喀喇| 盐城市| 大同市| 福安市| 大渡口区| 阿拉善右旗| 夏邑县| 万源市| 通许县| 民县| 平顶山市| 阳谷县| 吉安县| 浮山县| 托里县|