win32强化练习2.0_手工打造自己的对话框程序模板
2016-11-19 10:27
351 查看
首先,我们需要有自己喜欢或者能够使用的IDE来进行!
其实对于WIN32的窗口程序来说,一般都不太使用对话框直接做程序主体,也只有个别的IDE会提供对话框程序的模板,这个当然跟MFC中的的对话框程序是有区别的;
使用DialogBox函数其实是以宏用CreateWindowEx的方式创建的,但它是有许多局限性的,例如不直接响应WM_CHAR和键盘消息等......
但是,利用对话框程序进行初步的学习更容易一些,而且学习基本控件的操作也最好先使用对话框程序,另外它可以快速的完成简单功能的程序。
这节的练习是完全用手工打造一个对话框程序的模板。一个对话框程序的工程一般需要3个文件建立:
1. 主程序 main.cpp
2. 资源文件 res.rc 对话框是一种资源,需要建立资源文件
3. 头文件 resource.h 将资源中的ID编号用#define的方式与容易理解和记忆的文本相结合;可以偷懒的就直接用数字来定义资源而不用这个文件了
步骤:
1. 建立一个资源文件res.rc:
2. 建立一个C++文件main.cpp
3. 在main.cpp中创建一个消息处理函数,并处理关闭这个消息
4. 在第2步中的DialogBox函数中将第四项NULL更改为
5. 然后我们再简单处理一下OK按钮的事件,在按下OK时,弹出窗口显示Hello World!
5.1 在switch(nMsg)中增加WM_COMMAND的消息
最后,这个练习主要是加强对话框程序的理解,实际的开发过程中这样做是没有效率的;我们进行对话框程序的主要目的是后面几个基本控件的快速学习和理解。
其实对于WIN32的窗口程序来说,一般都不太使用对话框直接做程序主体,也只有个别的IDE会提供对话框程序的模板,这个当然跟MFC中的的对话框程序是有区别的;
使用DialogBox函数其实是以宏用CreateWindowEx的方式创建的,但它是有许多局限性的,例如不直接响应WM_CHAR和键盘消息等......
但是,利用对话框程序进行初步的学习更容易一些,而且学习基本控件的操作也最好先使用对话框程序,另外它可以快速的完成简单功能的程序。
这节的练习是完全用手工打造一个对话框程序的模板。一个对话框程序的工程一般需要3个文件建立:
1. 主程序 main.cpp
2. 资源文件 res.rc 对话框是一种资源,需要建立资源文件
3. 头文件 resource.h 将资源中的ID编号用#define的方式与容易理解和记忆的文本相结合;可以偷懒的就直接用数字来定义资源而不用这个文件了
步骤:
1. 建立一个资源文件res.rc:
#include <windows.h> 10086 DIALOG 122, 75, 213, 143//建立一个ID号为10086的,类型为DIALOG的资源 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME | WS_SYSMENU//窗口的风格WindowStyle CAPTION "dialog" BEGIN DEFPUSHBUTTON "OK", 10087, 162, 101, 40, 14//建立一个ID号为10087的按钮 END
2. 建立一个C++文件main.cpp
#include <windows.h> int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPre, LPSTR lpCmdLine,int nShowCmd) { DialogBox(hInst, MAKEINTRESOURCE(10086), NULL, NULL);//只是从资源中获取ID为10086的资源,并显示窗口 return 0; }至此,我们build工程就可以弹出一个窗口了! 但问题也同时出现了:我们关不掉这个窗口(IDE如果有停止功能是没有关系的),这是由于缺少了消息处理函数。
3. 在main.cpp中创建一个消息处理函数,并处理关闭这个消息
BOOL CALLBACK DialogProc(HWND hwnd, UINT nMsg, WPARAM wParam, LPARAM lParam) { switch(nMsg) { case WM_CLOSE://处理关闭消息 EndDialog(hwnd, 0); break; default: return DefWindowProc(hwnd, nMsg, wParam, lParam); } }
4. 在第2步中的DialogBox函数中将第四项NULL更改为
DialogBox(hInst, MAKEINTRESOURCE(10086), NULL, DialogProc);至此,我们已经能够关闭这个程序了。
5. 然后我们再简单处理一下OK按钮的事件,在按下OK时,弹出窗口显示Hello World!
5.1 在switch(nMsg)中增加WM_COMMAND的消息
case WM_COMMAND: OnCommand(hwnd, wParam, lParam); break;5.2 完成OnCommand函数
void OnCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) { switch(LOWORD(wParam)) { case 10087: MessageBox(hwnd,"Hello World!","",0); break; } }
最后,这个练习主要是加强对话框程序的理解,实际的开发过程中这样做是没有效率的;我们进行对话框程序的主要目的是后面几个基本控件的快速学习和理解。
目标 | 涉及知识点 | 参考时间 |
1:建立资源文件 2:根据.rc文件建立resource.h头文件 3:使用DialogBox宏,实现窗口显示 4:制作DialogProc消息处理函数,实现EndDialog功能 5:实现一个按钮的功能 | .rc文件格式 给控件ID定义其编号 DialogBox(1,2,3,4) 消息处理函数&EndDialog ON_COMMAND | 2 1 1 2 1 |
相关文章推荐
- Struts 2.0系列之二--打造自己的第一个Struts 2.0程序
- 自己动手让Visual Studio的Win32向导支持生成对话框程序
- 自己动手让Visual Studio的Win32向导支持生成对话框程序
- Visual Studio技巧之打造拥有自己标识的代码模板
- 打造自己的c#屏幕保护程序(,源码)
- Visual Studio技巧之打造拥有自己标识的代码模板
- 用vc6生成win32对话框程序的简单方法
- windows sdk程序模板(用已有的对话框资源创建主窗口)
- 用Wise Install打造自己的Mysql ODBC Connector安装程序
- 对话框程序模板
- ;MASMPlus 代码模板 - 控制台程序练习
- Visual Studio技巧之打造拥有自己标识的代码模板
- 打造自己的GUI专版命令行程序
- 乱弹琴 Silverlight 2.0 (20) 手工打造 3D 动画
- 用PHP程序为自己网站打造一个搜索引擎
- 打造自己的Carbide C++工程向导和模板
- 自己开console的方法,适用于在win32 非console程序里使用控制台
- 冷风 打造自己的GUI专版命令行程序
- 打造自己的Carbide C++工程向导和模板
- 简单的win32对话框程序 c++ vc6.0 模式对话框 非模式对话框