SDK中窗口调用

存在窗口A和B的win32程序 , 当点击窗口A中的按钮后会弹出窗口B

#include <windows.h>

// 窗口 B 的窗口过程
LRESULT CALLBACK WindowProcB(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    return 0;
}

// 窗口 A 的窗口过程
LRESULT CALLBACK WindowProcA(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
    case WM_COMMAND:
        if (LOWORD(wParam) == 1) { // 按钮 ID 为 1
            // 注册窗口类 B
            WNDCLASS wcB = {};
            wcB.lpfnWndProc = WindowProcB;
            wcB.hInstance = GetModuleHandle(NULL);
            wcB.lpszClassName = L"WindowClassB";
            RegisterClass(&wcB);

            // 创建窗口 B
            HWND hwndB = CreateWindow(wcB.lpszClassName, L"Window B", WS_OVERLAPPEDWINDOW,
                CW_USEDEFAULT, CW_USEDEFAULT, 300, 200, NULL, NULL, GetModuleHandle(NULL), NULL);

            // 显示窗口 B
            ShowWindow(hwndB, SW_SHOW);
            UpdateWindow(hwndB);
        }
        break;
    case WM_CREATE: {
        // 创建按钮
        CreateWindow(L"BUTTON", L"Open Window B", WS_VISIBLE | WS_CHILD,
            10, 10, 120, 30, hwnd, (HMENU)1, GetModuleHandle(NULL), NULL);
        break;
    }
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    // 注册窗口类 A
    WNDCLASS wcA = {};
    wcA.lpfnWndProc = WindowProcA;
    wcA.hInstance = hInstance;
    wcA.lpszClassName = L"WindowClassA";
    RegisterClass(&wcA);

    // 创建窗口 A
    HWND hwndA = CreateWindow(wcA.lpszClassName, L"Window A", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, NULL, NULL, hInstance, NULL);

    // 显示窗口 A
    ShowWindow(hwndA, nCmdShow);
    UpdateWindow(hwndA);

    // 消息循环
    MSG msg = {};
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return (int)msg.wParam;
}    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值