#include <windows.h>
LRESULT
CALLBACK MainWndProc(
HWND
,
UINT
,
WPARAM
,
LPARAM
);
int
APIENTRY WinMain(
HINSTANCE
hInstance,
HINSTANCE
hPrevInstance,
LPSTR
lpCmdLine,
int
nCmdShow
)
{
char
szClassName[] =
"MainClass"
;
WNDCLASSEX wndclass;
wndclass.cbSize =
sizeof
(wndclass);
wndclass.style = CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc = MainWndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = ::LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = ::LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (
HBRUSH
)::GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szClassName;
wndclass.hIconSm = NULL;
::RegisterClassEx(&wndclass);
HWND
hwnd = ::CreateWindowEx(
0,
szClassName,
"My First Window"
,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
if
(hwnd == NULL)
{
::MessageBox(NULL,
"创建窗口出错"
,
"系统提示"
,MB_OK);
}
::ShowWindow(hwnd,nCmdShow);
::UpdateWindow(hwnd);
MSG msg;
while
(::GetMessage(&msg,NULL,0,0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
return
msg.wParam;
}
LRESULT
CALLBACK MainWndProc(
HWND
hwnd,
UINT
message,
WPARAM
wParam,
LPARAM
lParam)
{
char
szText[] =
"最简单的窗口程序"
;
switch
(message)
{
case
WM_PAINT:
{
HDC
hdc;
PAINTSTRUCT ps;
hdc = ::BeginPaint(hwnd,&ps);
::TextOut(hdc,10,10,szText,
strlen
(szText));
::EndPaint(hwnd,&ps);
return
0;
}
case
WM_DESTROY:
{
::PostQuitMessage(0);
return
0;
}
}
return
::DefWindowProc(hwnd,message,wParam,lParam);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统