vc++ WinMain
2013-12-15 23:56
232 查看
创建一个完整的窗口需要经过下面四个操作步骤:
1、设计一个窗口类;
2、注册窗口类;
3、创建窗口;
4、显示及更新窗口。
#include <windows.h>
#include <stdio.h>
LRESULT CALLBACK WinSunProc(
HWND hwnd,//窗口句柄
UINT uMsg,//message identifier
WPARAM wParam,//第一个消息参数
LPARAM lParam//第二个消息参数
);
int WINAPI WinMain(
HINSTANCE hInstance,//应用程序的句柄,标示不同的运行文件exe,当前运行的句柄
HINSTANCE hPrevInstance,//先前实例的一个句柄
LPSTR lpCmdLine,//长指针,指向字符串首地址的指针,命令行参数
int nCmdShow//显示的状态,指定运行时窗口最大化显示还是隐藏显示等
)
{
WNDCLASS wndcls;//1---设计一个窗口类
wndcls.cbClsExtra=0;//类的额外附加字节数
wndcls.cbWndExtra=0;//窗口的额外附加字节数
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);//背景
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;//窗口过程函数
wndcls.lpszClassName="WeiXin";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;//水平重画和垂直重画
RegisterClass(&wndcls);//2---注册一个窗口类
HWND hwnd;//3---创建一个窗口,定义一个句柄
hwnd=CreateWindow("WeiXin","北京",WS_OVERLAPPEDWINDOW,0,0,400,600,NULL,NULL,hInstance,NULL);
//显示窗口
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);//更新一个窗口
//消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);//将收到的消息传递给窗口的回调函数,回调函数由操作系统调用
}
return 0;
}
LRESULT CALLBACK WinSunProc(//函数名可以更改,参数类型不可以更改
HWND hwnd,//窗口句柄
UINT uMsg,//message identifier
WPARAM wParam,//第一个消息参数
LPARAM lParam//第二个消息参数
)
{
switch (uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char is %d",wParam);//格式化一个文本,到一个内存中;在消息的wParam中存放了按键的asic码 按%d的格式
MessageBox(hwnd,szChar,"WeiXin",MB_OK);
break;
case WM_PAINT://消息重绘
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,0,0,"培训",strlen("培训"));
EndPaint(hwnd,&ps);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked","WeiXin",0);
HDC hdc;
TextOut(hdc,0,50,"计算机",strlen("计算机"));//在0 50的位置输出
hdc=GetDC(hwnd);
ReleaseDC(hwnd,hdc);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否结束?","WeiXin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
1、设计一个窗口类;
2、注册窗口类;
3、创建窗口;
4、显示及更新窗口。
#include <windows.h>
#include <stdio.h>
LRESULT CALLBACK WinSunProc(
HWND hwnd,//窗口句柄
UINT uMsg,//message identifier
WPARAM wParam,//第一个消息参数
LPARAM lParam//第二个消息参数
);
int WINAPI WinMain(
HINSTANCE hInstance,//应用程序的句柄,标示不同的运行文件exe,当前运行的句柄
HINSTANCE hPrevInstance,//先前实例的一个句柄
LPSTR lpCmdLine,//长指针,指向字符串首地址的指针,命令行参数
int nCmdShow//显示的状态,指定运行时窗口最大化显示还是隐藏显示等
)
{
WNDCLASS wndcls;//1---设计一个窗口类
wndcls.cbClsExtra=0;//类的额外附加字节数
wndcls.cbWndExtra=0;//窗口的额外附加字节数
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);//背景
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;//窗口过程函数
wndcls.lpszClassName="WeiXin";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;//水平重画和垂直重画
RegisterClass(&wndcls);//2---注册一个窗口类
HWND hwnd;//3---创建一个窗口,定义一个句柄
hwnd=CreateWindow("WeiXin","北京",WS_OVERLAPPEDWINDOW,0,0,400,600,NULL,NULL,hInstance,NULL);
//显示窗口
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);//更新一个窗口
//消息循环
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);//将收到的消息传递给窗口的回调函数,回调函数由操作系统调用
}
return 0;
}
LRESULT CALLBACK WinSunProc(//函数名可以更改,参数类型不可以更改
HWND hwnd,//窗口句柄
UINT uMsg,//message identifier
WPARAM wParam,//第一个消息参数
LPARAM lParam//第二个消息参数
)
{
switch (uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char is %d",wParam);//格式化一个文本,到一个内存中;在消息的wParam中存放了按键的asic码 按%d的格式
MessageBox(hwnd,szChar,"WeiXin",MB_OK);
break;
case WM_PAINT://消息重绘
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,0,0,"培训",strlen("培训"));
EndPaint(hwnd,&ps);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked","WeiXin",0);
HDC hdc;
TextOut(hdc,0,50,"计算机",strlen("计算机"));//在0 50的位置输出
hdc=GetDC(hwnd);
ReleaseDC(hwnd,hdc);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否结束?","WeiXin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
相关文章推荐
- VC点滴 之 WinMain(windows程序的运行原理以及VC++的实现过程)
- WinMain(windows程序的运行原理以及VC++的实现过程)
- VC6工程转移至VS2008编译WinMain出现错误
- VC++ 6.0 error LNK2001: unresolved external symbol _WinMain
- 【VC++游戏开发#一】深入剖析MFC的WinMain和消息机制
- VC++发生的错误信息 unresolved external symbol _WinMain
- VC++中的WinMain()函数介绍
- VC编写的windows入口函数:WinMain(孙鑫视频所讲)
- 『VC++技术内幕』(第四版)读书笔记
- vc picture控件的使用
- 用VC制作动态弹出的对话框
- DirectX 7.0 SDK在VC 6.0环境中使用的注意事项
- VC皮肤库SkinSharp 1.0.6.6的使用
- VC/MFC 键盘消息的截取与响应
- VC中的0XCCCCCCCC
- [精通WindowsSocket网络开发-基于VC++实现]第一章——准备开发环境
- vc++实现禁用按钮
- VC: MBCS字符集转换成UTF-8
- 【VC++】CString与std::string互转
- VC应用程序框架