#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;
}
WIN32创建一个窗口
最新推荐文章于 2024-10-04 20:45:38 发布
这篇博客展示了如何使用C++和Windows API创建一个基本的窗口应用。通过注册窗口类,创建窗口,并处理WM_DESTROY、WM_QUIT和WM_SIZE消息,实现了窗口的显示、关闭及大小调整功能。
摘要由CSDN通过智能技术生成