C++窗体示范
来源:互联网 发布:软件源代码 买卖 编辑:程序博客网 时间:2024/06/08 09:15
#include <windows.h>
HWND HMainwnd = NULL; //窗体句柄
int run(); //消息循环函数
bool InitWindowsApp(HINSTANCE instanceHandle, int show); //窗体初始化函数
LRESULT CALLBACK WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp);//窗体处理回调函数
//main函数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
if(!InitWindowsApp(hInstance, nShowCmd))//判断窗体初始化是否成功
{
return 0;
}
run(); //初始化成功后循环接收消息
return 0;
}
bool InitWindowsApp(HINSTANCE stanceHandle, int show)
{
WNDCLASS wc; //窗体类结构体
wc.style = CS_HREDRAW | CS_VREDRAW; //窗体风格
wc.lpfnWndProc = WndProc; //窗体处理函数
wc.cbClsExtra = 0; //窗体类是否由扩展
wc.cbWndExtra = 0; //窗体实例是否由扩展
wc.hInstance = stanceHandle; //窗体句柄
wc.hIcon = LoadIcon(0, IDI_APPLICATION); //窗体图标
wc.hCursor = LoadCursor(NULL, IDC_ARROW); //窗体鼠标样式
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //窗体背景颜色
wc.lpszMenuName = NULL; //窗体菜单
wc.lpszClassName = "BaseWndClass"; //窗体类名
if(!RegisterClass(&wc))//判断窗体是否注册成功
{
MessageBox(0, "注册失败", 0, 0);
return false;
}
//创建窗体
HMainwnd = CreateWindow("BaseWndClass", //窗体类名
"MyFrom", //窗体标题名
WS_OVERLAPPEDWINDOW, //窗体风格
CW_USEDEFAULT,
CW_USEDEFAULT, //窗体坐标
CW_USEDEFAULT,
CW_USEDEFAULT, //窗体坐标
NULL, //窗体的父窗体
NULL, //窗体的子菜单
stanceHandle, //窗体句柄
NULL); // 如果函数成功,返回值为新窗口的句柄:如果函数失败,返回值为NULL
if(HMainwnd == 0)//判断创建窗体是否成功
{
MessageBox(0, "创建窗体失败", 0, 0);
return false;
}
ShowWindow(HMainwnd, SW_SHOW); //显示窗体
UpdateWindow(HMainwnd); //绘制窗体;
return true;
}
LRESULT CALLBACK WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg)//判断消息的种类
{
case WM_LBUTTONDOWN: //左键单击
MessageBox(0, "Hello World", "myMbox", MB_OK);
return 0;
case WM_KEYDOWN: //键盘消息
if(wp == VK_ESCAPE) //ESC键
DestroyWindow(HMainwnd); //销毁窗体
return 0;
case WM_DESTROY:
PostQuitMessage(0); //终止消息
return 0;
}
return DefWindowProc(wnd, msg, wp, lp); //返回缺省消息函数
}
int run()
{
MSG msg = {0}; //消息结构
BOOL bRet = 1; //获取消息
while( (bRet = GetMessage(&msg, 0, 0, 0)) != 0)//消息循环
{
if(bRet == -1)//判断消息是否接收失败
{
MessageBox(0, "接受消息失败", 0, 0);
break;
}
else
{
TranslateMessage(&msg); //转换消息为字符消息
DispatchMessage(&msg); //发送消息给窗口
}
}
return (int)msg.wParam;
}
HWND HMainwnd = NULL; //窗体句柄
int run(); //消息循环函数
bool InitWindowsApp(HINSTANCE instanceHandle, int show); //窗体初始化函数
LRESULT CALLBACK WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp);//窗体处理回调函数
//main函数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
if(!InitWindowsApp(hInstance, nShowCmd))//判断窗体初始化是否成功
{
return 0;
}
run(); //初始化成功后循环接收消息
return 0;
}
bool InitWindowsApp(HINSTANCE stanceHandle, int show)
{
WNDCLASS wc; //窗体类结构体
wc.style = CS_HREDRAW | CS_VREDRAW; //窗体风格
wc.lpfnWndProc = WndProc; //窗体处理函数
wc.cbClsExtra = 0; //窗体类是否由扩展
wc.cbWndExtra = 0; //窗体实例是否由扩展
wc.hInstance = stanceHandle; //窗体句柄
wc.hIcon = LoadIcon(0, IDI_APPLICATION); //窗体图标
wc.hCursor = LoadCursor(NULL, IDC_ARROW); //窗体鼠标样式
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //窗体背景颜色
wc.lpszMenuName = NULL; //窗体菜单
wc.lpszClassName = "BaseWndClass"; //窗体类名
if(!RegisterClass(&wc))//判断窗体是否注册成功
{
MessageBox(0, "注册失败", 0, 0);
return false;
}
//创建窗体
HMainwnd = CreateWindow("BaseWndClass", //窗体类名
"MyFrom", //窗体标题名
WS_OVERLAPPEDWINDOW, //窗体风格
CW_USEDEFAULT,
CW_USEDEFAULT, //窗体坐标
CW_USEDEFAULT,
CW_USEDEFAULT, //窗体坐标
NULL, //窗体的父窗体
NULL, //窗体的子菜单
stanceHandle, //窗体句柄
NULL); // 如果函数成功,返回值为新窗口的句柄:如果函数失败,返回值为NULL
if(HMainwnd == 0)//判断创建窗体是否成功
{
MessageBox(0, "创建窗体失败", 0, 0);
return false;
}
ShowWindow(HMainwnd, SW_SHOW); //显示窗体
UpdateWindow(HMainwnd); //绘制窗体;
return true;
}
LRESULT CALLBACK WndProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg)//判断消息的种类
{
case WM_LBUTTONDOWN: //左键单击
MessageBox(0, "Hello World", "myMbox", MB_OK);
return 0;
case WM_KEYDOWN: //键盘消息
if(wp == VK_ESCAPE) //ESC键
DestroyWindow(HMainwnd); //销毁窗体
return 0;
case WM_DESTROY:
PostQuitMessage(0); //终止消息
return 0;
}
return DefWindowProc(wnd, msg, wp, lp); //返回缺省消息函数
}
int run()
{
MSG msg = {0}; //消息结构
BOOL bRet = 1; //获取消息
while( (bRet = GetMessage(&msg, 0, 0, 0)) != 0)//消息循环
{
if(bRet == -1)//判断消息是否接收失败
{
MessageBox(0, "接受消息失败", 0, 0);
break;
}
else
{
TranslateMessage(&msg); //转换消息为字符消息
DispatchMessage(&msg); //发送消息给窗口
}
}
return (int)msg.wParam;
}
0 1
- C++窗体示范
- EXITTHRD.C--示范ExitThread()
- C 冒泡排序原理示范
- LINUX下c语言SOCKET客户端示范
- exitcode.c---示范GetExitCodeThread()的用法
- C的简单文件读写示范
- 【C#】[窗体]不规则窗体
- 【C#】[窗体]窗体渐显
- 【C#】[窗体]字型窗体
- (转载)LINUX下c语言SOCKET客户端示范
- 一个简单用c和mysql的示范程序
- 多边形窗体(C#)
- C#,代码,移动窗体
- 托管C++,登陆窗体
- c# 改变窗体形状
- C#MDI窗体
- c#windows窗体程序设计
- C#API控制窗体
- Activity的生命周期onSaveInstanceState onRestoreInstanceState 两个方法
- netstat samples
- 关于python文件操作
- Linux 2.6.10内核下PCI Express Native热插拔框架的实现机制
- Ext 遮罩层 在 IE 中 失效
- C++窗体示范
- job.waitForCompletion(true)空指针问题
- 《程序员面试金典》访问单个节点的删除
- iptrafic and tcpdump
- 9大内置对象、4大作用域、session的生命周期
- mysql 自定义方法创建 问题总结
- Objective-C 【格式化日期时间字符串】
- CodeForce 505C Mr. Kitayuta(DP+DFS)
- Unity3d游戏开发之C#开发(一)