win32框架
win32的框架
1.入口函数 2.窗口注册类信息 3.窗口创建 4。显示窗口 5.更新窗口 6.消息循环 7.入口函数结束
WNDCLASSEX wcex;窗口类结构
wcex.cbSize = sizeof(WNDCLASSEX);//结构内存大小
//类风格wcex.style CS_HREDRAW 水平刷新 CS_VREDRAW垂直刷新 CS_DBLCLKS 窗体鼠标双击响应事件
// 函数: MyRegisterClass()
//
// 目的: 注册窗口类。
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
//窗口类结构
WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX);//结构内存大小
//类风格wcex.style CS_HREDRAW 水平刷新 CS_VREDRAW垂直刷新 CS_DBLCLKS 窗体鼠标双击响应事件
wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
wcex.lpfnWndProc = WndProc;//消息回调函数
wcex.cbClsExtra = ;//类的额外信息
wcex.cbWndExtra = ;//窗口的额外信息
wcex.hInstance = hInstance;//窗口的实例句柄
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_CLASS02));//图标
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);//光标
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+);//窗体的背景颜色
wcex.lpszMenuName = MAKEINTRESOURCE(IDC_CLASS02);//窗体的菜单
wcex.lpszClassName = szWindowClass;//窗口类名
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));//小图标 return RegisterClassEx(&wcex);//系统函数返回一个系统的注册窗口类的函数调用
}
创建主
//
// 函数: InitInstance(HINSTANCE, int)
//
// 目的: 保存实例句柄并创建主窗口
//
// 注释:
//
// 在此函数中,我们在全局变量中保存实例句柄并
// 创建和显示主程序窗口。
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;//窗口句柄 hInst = hInstance; // 将实例句柄存储在全局变量中 //创建窗口
hWnd = CreateWindow(szWindowClass,//窗口类名 类名必须和注册名一致否则创建不成功
_T("第一个Windows窗口")/*szTitle*/,//窗口标题名
//WS_OVERLAPPEDWINDOW,窗口风格
WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX,
/*
WS_OVERLAPPED:用于产生一个叠层窗口,都有标题栏和边框
WS_CAPTION:有标题栏的窗口
WS_SYSMENU:创建一个标题栏上具有系统菜单的窗口,需要ws_caption一起使用
WS_MINIMAZEBOX:创建具有最小化按钮窗口,必须有ws_system类型
WS_MAXIMIZBOX:创建具有最大化按钮的窗口,必须有ws_system类型。
WS_OVERLAPPEDWINDOW:创建有标题栏,系统菜单最大化最小化窗口
WS_POPUP - 弹出式
WS_POPUPWINDOW - 边框、弹出式、系统菜单
WS_SIZEBOX - 带尺寸框的粗边框
WS_SYSMENU - 系统菜单
*/
CW_USEDEFAULT,, //窗口的左上角x,y坐标,注意:如果x坐标给的是CW_USEDEFAULT,y坐标给0表示去匹配x坐标(单位为像素)
CW_USEDEFAULT, ,//窗口的宽高,同上
NULL,//父窗口句柄
NULL,//菜单句柄,如果值为null,表示默认使用注册时加载的菜单,如果不为null,创建窗口时将用这个菜单替换掉注册时菜单
hInstance,//窗口实例句柄
NULL);//保留参数 if (!hWnd)
{
return FALSE;
} ShowWindow(hWnd, nCmdShow);//显示窗口
UpdateWindow(hWnd);//更新窗口 return TRUE;
}
处理主窗口消息
// 函数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
// 目的: 处理主窗口的消息。
//
// WM_COMMAND - 处理应用程序菜单
// WM_PAINT - 绘制主窗口
// WM_DESTROY - 发送退出消息并返回
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc; switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage();
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return ;
} // “关于”框的消息处理程序。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
return (INT_PTR)TRUE; case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}
窗口
win32框架的更多相关文章
- Win32 OpenGL 编程( 1 ) Win32 下的 OpenGL 编程必须步骤
http://blog.csdn.net/vagrxie/article/details/4602961 Win32 OpenGL 编程( 1 ) Win32 下的 OpenGL 编程必须步骤 wri ...
- Win32++:可替代MFC的Windows桌面应用开发框架
写在前面 有过Win32编程经验的朋友都知道,使用Windows提供的API开发桌面应用是相当繁琐的,创建一个功能简单能接收并处理消息的窗口至少也得几百行代码.创建一个可视化的窗口一般要以下几个步骤: ...
- windows游戏编程 创建WIN32一个HelloWOrld程序
本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22449085 作者:jadeshu 邮箱: jades ...
- 2013 duilib入门简明教程 -- XML配置界面(6)
前面那些教程都是为了让小伙伴们从win32.MFC过渡到duilib,让大家觉得duilib不是那么陌生,如果大家现在还对duilib非常陌生的话,那就说明前面的教程做得不好,请大家在下面留言 ...
- DirectX 文本绘制
在Direct中进行文本绘制,可以通过Win32程序框架实现,也可以通过DXUT进行绘制. 基于第一篇的Win32框架入门实现非常简单,只需要添加数行代码即可.主要说需要修改的地方. #pragma ...
- DirectX游戏编程入门
刚开始学习D3D,安装完DirectX9后,在VS2008中新建Win32项目· ----------------------------------------------------------- ...
- Sciter/HTMLayout内存占用评测
先从最基础的Exe文件的执行说起: Exe文件要在系统中执行,首先要将Exe文件本身加载入内存中,并且通常在内存中加载完成的Exe所占空间大小会比实际所占的磁盘空间大一些,这是由内存的特殊设定所决定的 ...
- duilib入门简明教程 -- XML配置界面(6)
前面那些教程都是为了让小伙伴们从win32.MFC过渡到duilib,让大家觉得duilib不是那么陌生,如果大家现在还对duilib非常陌生的话,那就说明前面的教程做得不好,请大家在下面留言, ...
- duilib入门简明教程 -- XML配置界面(6) (转)
原文转自:http://www.cnblogs.com/Alberl/p/3343699.html 前面那些教程都是为了让小伙伴们从win32.MFC过渡到duilib,让大家觉得duilib ...
随机推荐
- Spring 事件(1)- 内置事件
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...
- hdu 2583 How far away ? 离线算法 带权求最近距离
How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 线段树&树状数组与离散化的妙用
牛客2019多校联盟Day7 Fine the median 题意: 每次给数组插入区间[Li,Ri] 内的所有数,每操作一次查询中位数. 遇到这题真的算是巧合,然而就是这种冥冥之中的缘分,给了我线 ...
- word 2007 文档中添加文件
1. "插入"->"对象",出现的下拉框中选择"对象" 2.弹出界面 3.切换至"由文件创建",点击"浏 ...
- Codeforces 392 B Blown Garland
题意:输入是由连续的RYGB和字符!组成的字符串,R代表红灯,Y代表黄灯,G代表绿灯,B代表蓝灯.简而言之,就是给定的字符串保证了下标对4取余相同的灯颜色都相同,但是有的地方为‘!’代表这个灯坏了,然 ...
- Mybatis报错——Mapped Statements collection already contains value for
解决办法: 看看你的mybatis-config.xml <mappers> <mapper resource="mapper/SeckillDao.xml&quo ...
- java课程之团队开发冲刺阶段2.2
一.总结昨天进度 1.单独实现静音功能,还没有进行整体整合 二.遇到的问题 1.一开始设计静音的思路有问题,所以在实现上有些许麻烦,一开始的想法是将这些音量直接设置为0就可以实现静音,但是在恢复响铃模 ...
- Pandas_one-hot encoding与dummy encoding
Pandas_特征编码 one-hot encoding 基本思想是将离散型特征的每一种取值都看成一种状态,保证每一个取值只会使得一种状态处于激活状态. 编码函数pd.get_dummies() du ...
- HZNU-ACM寒假集训Day3小结 搜索
简单搜索 1.DFS UVA 548 树 1.可以用数组方式实现二叉树,在申请结点时仍用“动态化静态”的思想,写newnode函数 2.给定二叉树的中序遍历和后序遍历,可以构造出这棵二叉树,方法是根据 ...
- package跨模块调用
module包 logger模块 def logger(): print("logger") # logger() main模块 from module import logger ...