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 ...
随机推荐
- vzray服务端配置
打开securecrt登陆服务器 输入命令:bash <(curl -s -L https://git.io/vzray.sh)1 回车tcp 回车端口 回车默认 回车
- 逆向-PE导出表
PE-导出表 动态链接库要想给别人用实现加载时或运行时链接就必须提供函数和数据的地址.exe一般不会有这个,大部分是DLL文件的.导出分为名字导出和序号导出. 名字导出先找名字,再通过名字表的索引 ...
- Python 删除文件与文件夹
版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...
- junit基础学习之-引用spring容器的测试(7)
context 自动注入的文章链接:http://www.360doc.com/content/11/0815/09/2371584_140471325.shtml
- webpack知识点散记
1.今天学习webpack ,刚开头就碰到了钉子,因为现在都是4+的版本,用以前的老命令不好使,如下例子及解决办法 不好用: webpack3的 打包文件 webpack a.js b.j ...
- python虚拟环境配置(上)
前言 嘿,小伙伴们,晚上好呀,我们又见面了,今天又给带来的是什么呢,咱们今天就来说一下python的虚拟环境,可能有的小伙伴会疑惑,python的虚拟环境有什么用呢,我们来一一探讨一下 虚拟环境的作用 ...
- 文献阅读 - MonoLoco与关于Camera Matrix的笔记
目录 概览 HighLights Camera Intrinsic Matrix 笔记 Intrinsic Matrix Task-Error - 不确定性任务下确界的计算 输出假设的Laplace分 ...
- SPOJ FISHER + FPOLICE SPFA+背包
当初第一次做的是FPLICE这个题,当时就觉得要用图论去搜索,但是当时陷入死思维就是 dp[][]两个维度都是点,这样就违背了题目的本意,题目给定了一个时间T,在不超过时间T的情况下求最小的消耗,这不 ...
- 实验吧Web-中-让我进去(Hash长度扩展攻击、加盐密码及Linux下hashpump的安装使用)
打开网页,测试开始,注入费老大劲,看了大佬的blog才知道怎么干. bp抓包,观察发现cookie中有个source=0,在repeater中修改为source=1,然go一下,出来了一段源代码. $ ...
- 10 Json(unity3D)
//写入json文档注意事项: 1.在Asset下要有一个StreamingAssets文件夹 2.在文件夹内,有一个已创建好的json空文档 3.引入命名空间 using Litjson; usin ...