#include <windows.h>
#include "resource.h"
#include <string>
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 = (
LPSTR
)IDR_MENU1;
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;
}
#define IDT_TIMER1 1
LRESULT
CALLBACK MainWndProc(
HWND
hwnd,
UINT
message,
WPARAM
wParam,
LPARAM
lParam)
{
char
szText[56];
static
int
nNum;
static
int
bSetTimer;
HDC
hdc;
PAINTSTRUCT ps;
switch
(message)
{
case
WM_CREATE:
{
::SetWindowText(hwnd,
"定时器"
);
bSetTimer = FALSE;
return
0;
}
case
WM_PAINT:
{
hdc = ::BeginPaint(hwnd,&ps);
::EndPaint(hwnd,&ps);
return
0;
}
case
WM_DESTROY:
{
::PostQuitMessage(0);
return
0;
}
case
WM_COMMAND:
{
switch
(LOWORD(wParam))
{
case
ID_FILE_EXIT:
::SendMessage(hwnd,WM_CLOSE,0,0);
break
;
}
return
0;
}
case
WM_LBUTTONDOWN:
{
if
(bSetTimer)
{
::KillTimer(hwnd,IDT_TIMER1);
bSetTimer = FALSE;
}
else
{
if
(::SetTimer(hwnd,IDT_TIMER1,600,NULL) == 0)
{
::MessageBox(hwnd,
"定时器安装失败"
,
"系统提示"
,MB_OK);
}
else
{
bSetTimer = TRUE;
}
}
break
;
}
case
WM_TIMER:
{
if
(wParam == IDT_TIMER1)
{
hdc = ::GetDC(hwnd);
nNum++;
::wsprintf(szText,
"计数:%d"
,nNum);
::TextOut(hdc,10,10,szText,
strlen
(szText));
::InvalidateRect(hwnd,NULL,0);
::MessageBeep(MB_OK);
}
}
break
;
}
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 接口并集成到在线客服系统