WIN32创建一个窗口

这篇博客展示了如何使用C++和Windows API创建一个基本的窗口应用。通过注册窗口类,创建窗口,并处理WM_DESTROY、WM_QUIT和WM_SIZE消息,实现了窗口的显示、关闭及大小调整功能。
摘要由CSDN通过智能技术生成
#include<Windows.h>
#include <iostream>
#include <atlstr.h>

using namespace std;

LRESULT CALLBACK
MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    if (msg == WM_DESTROY)
    {
        PostQuitMessage(0);
    }
    else if (msg == WM_QUIT)
    {
        DestroyWindow(hwnd);
    }
    else if (msg == WM_SIZE)
    {
        MessageBox(0, L"你在改变大小", L"提示", MB_OK);
    }
    return DefWindowProc(hwnd, msg, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance,
    PSTR cmdLine, int showCmd)
{
    CString str;

    WNDCLASS wc;
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.lpszMenuName = 0;
    wc.hIcon = LoadIcon(0, IDI_APPLICATION);
    wc.hCursor = LoadCursor(0, IDC_ARROW);
    wc.lpfnWndProc = MainWndProc;
    wc.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH);
    wc.lpszClassName = L"WindowClass";
    
    if (!RegisterClass(&wc))
    {
        MessageBox(0, L"RegisterClass Failed.", 0, 0);
        return false;
    }

    HWND hd = CreateWindow(L"WindowClass", L"测试窗口", WS_OVERLAPPEDWINDOW, 0, 0, 800, 800, nullptr, nullptr, hInstance, nullptr);
    ShowWindow(hd, showCmd);
    UpdateWindow(hd);
    //cout << "能够打印" << endl;
    str.Format(_T("HWND = 0x%x\n"), hd);
    MessageBox(nullptr, str, L"title", MB_OK);

    MSG msg;
    while (GetMessage(&msg, 0, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessageW(&msg);
    }
    //
    return 0;

    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值