孙鑫VC_001_创建窗口
孙鑫的教程视频网址是http://www.sunxin.org/
先把孙鑫老师的VC++教程学一遍。算是VC++入门吧。
所有的代码在vs2008下调试通过。
下面是第一课内容:创建一个窗口。
//vs2008
#include <TCHAR.h>//长字符
#include<windows.h>
#include <stdio.h>
LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);//windows程序入口函数
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd
)
{
WNDCLASS wndcls; //设计一个窗口类
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);
wndcls.hIcon=LoadIcon(NULL,IDI_WINLOGO);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName=_T("study_01");//注意这里_T("study_01")转换为长字符集。
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls); //注册窗口类
HWND hwnd; //创建窗口
hwnd=CreateWindow(_T("study_01"),_T("Study 01"),WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL,CW_USEDEFAULT,CW_USEDEFAULT,600,400,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL); //显示窗口
UpdateWindow(hwnd); //更新窗口
MSG msg;//消息循环
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}//end of WinMain//消息回调函数
LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CHAR:
{
TCHAR szChar[20];
wsprintf(szChar, _T("char is %d"),wParam);
MessageBox(hwnd, szChar, _T("tell you"), 0);
break;
}
case WM_LBUTTONDOWN:
{
// MessageBox(hwnd,_T("mouse clicked"),_T("mouse"),0);
HDC hdc;
hdc=GetDC(hwnd);
//
static int i=50;
i+=20;
if(i>=300)i=50;
TextOut(hdc,10,i,_T("mouse left clicked"),wcslen(_T("mouse left clicked")));//wcslen(_T(
ReleaseDC(hwnd,hdc);
break;
}
case WM_PAINT:
{
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,10,10,_T("haha"),wcslen(_T("haha")));
EndPaint(hwnd,&ps);
break;
}
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,_T("真的要结束么?"),_T("close"),MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}//end of WinSunProc
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· 《HelloGitHub》第 108 期
· MQ 如何保证数据一致性?
· 一个基于 .NET 开源免费的异地组网和内网穿透工具