Windows编程基础--第2节 win32程序资源管理
来源:互联网 发布:匕首cad图纸数据 编辑:程序博客网 时间:2024/06/01 10:08
(操作系统:win10 64位 IDE:vc++ 6.0)
windows程序都有自己的资源,例如按钮,图标,对话框等等,这节介绍如何使用win32程序资源管理;
1、继续使用上节的win32程序demo,执行File->new添加资源,选择Files选项卡中的Resource Script,填写资源名,如图所示:
2、此时项目左侧会出现ResourceView视图,单击ResourceView中的根节点+号,会提示“This file is already open in an editor”,这时候关闭右边的day01.rc,再次打开就可以了;
3、在ResourceView节点day01 Resources节点上右击->Insert,选中Dialog
,单击“New”,创建一个对话框资源,创建成功之后如图:
4、在新建的对话框上右击选择属性(Properties),会弹出dialog的属性窗口,可以设置一些对话框的相关属性,如图
5、接下来我们做一个简单的BMI计算器(体重指数BMI=体重/身高的平方(国际单位kg/㎡)),拖动三个Edit分别用来显示身高,体重,BMI值,并设置属性ID,分别为:IDC_EDIT_SG、IDC_EDIT_TZ,IDC_EDIT_BMI,如图所示:
6、接下来切换到类视图(classView),双击WinMain入口函数,添加对话框语句:
DialogBox(hInstance,(LPCTSTR)IDD_DIALOG_BMI,NULL,DlGFUNC);
其中IDD_DIALOG_BMI为刚才添加的对话框属性ID,DlGFUNC为对话框的消息处理函数,
7、接下来我们添加DlGFUNC函数,如下:
BOOL CALLBACK DlGFUNC(HWND hwnd_dlg,UINT uMsg,WPARAM wParam,LPARAM lParam){ switch(uMsg) { case WM_COMMAND: switch(wParam) { case IDCANCEL: EndDialog(hwnd_dlg,IDCANCEL); break; case IDOK: { int nHeight= GetDlgItemInt(hwnd_dlg,IDC_EDIT_SG,NULL,TRUE); double dHeight = nHeight / 100.00; int nWeight = GetDlgItemInt(hwnd_dlg,IDC_EDIT_TZ,NULL,TRUE); double bmi = nWeight/(dHeight*dHeight); char buf[28]; sprintf(buf, "%.3f", bmi); SetDlgItemText(hwnd_dlg,IDC_EDIT_BMI,buf); } break; } break; } return FALSE;}
其中IDOK,和IDCANCEL为对话框确认按钮和取消按钮所触发消息,IDCANCEL关闭对话框,IDOK消息我们来获取身高和体重Edit中的值,并按照公式体重指数BMI=体重/身高的平方(国际单位kg/㎡)计算BMI,最后将BMI值设置到BMI Edit中:
int nHeight= GetDlgItemInt(hwnd_dlg,IDC_EDIT_SG,NULL,TRUE); double dHeight = nHeight / 100.00; int nWeight = GetDlgItemInt(hwnd_dlg,IDC_EDIT_TZ,NULL,TRUE); double bmi = nWeight/(dHeight*dHeight); char buf[28]; sprintf(buf, "%.3f", bmi); SetDlgItemText(hwnd_dlg,IDC_EDIT_BMI,buf);
注意:要在文件头部引用资源头文件:#include “resource.h”
最终效果如下:
附day01.cpp源码:
// day01.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "resource.h"#include "stdio.h"BOOL CALLBACK DlGFUNC(HWND hwnd_dlg,UINT uMsg,WPARAM wParam,LPARAM lParam){ switch(uMsg) { case WM_COMMAND: switch(wParam) { case IDCANCEL: EndDialog(hwnd_dlg,IDCANCEL); break; case IDOK: { int nHeight= GetDlgItemInt(hwnd_dlg,IDC_EDIT_SG,NULL,TRUE); double dHeight = nHeight / 100.00; int nWeight = GetDlgItemInt(hwnd_dlg,IDC_EDIT_TZ,NULL,TRUE); double bmi = nWeight/(dHeight*dHeight); char buf[28]; sprintf(buf, "%.3f", bmi); SetDlgItemText(hwnd_dlg,IDC_EDIT_BMI,buf); } break; } break; } return FALSE;}int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ // TODO: Place code here. DialogBox(hInstance,(LPCTSTR)IDD_DIALOG_BMI,NULL,DlGFUNC); return 0;}
后记:
DialogProc是一个窗口过程函数。该函数为一个应用程序定义可与DialogBox函数一起使用的回调函数。它处理发送到一个模态的或无模式对话框的消息。DLGPROC类型定义了一个指向此回调函数的指针。DialogProc函数是应用程序定义函数名的一个占位符。
函数原型:
BOOL CALLBACK DialogProc(HWND hwndDlg,UINT UMsg,WPARAM wParam,LPARAM lParam);
hwndDlg
指定对话框。
uMsg
指定消息。
wParam
指定消息特定的其他信息。
Iparam
指定消息特定的其他信息。
项目源码可以访问我的码云来fork:
https://gitee.com/AmuUncle/MFC_CSDN.git
- Windows编程基础--第2节 win32程序资源管理
- Windows编程基础--第1节 第一个win32软件
- Windows编程基础--第5节 MFC对话框程序
- Win32之Windows编程基础
- Windows编程基础程序
- 《Windows程序设计》[第二版] - 第2章 Win32程序运行原理 - 创建进程
- windows API编程之二----控制台模拟Win32程序
- windows游戏编程<七> 创建WIN32一个HelloWOrld程序
- Windows编程基础--第3节 初探MFC
- Windows编程基础--第4节 MFC消息映射机制
- Windows编程基础--第6节 VC++6.0控件说明
- Windows编程基础--第7节 来吧,VS 2010
- Windows编程基础--第10节 MFC菜单
- Windows编程基础--第13节 MFC之图片控件
- Windows编程基础--第18节 MFC之窗体操作
- Windows编程基础--第19节 MFC之自定义消息
- windows图形基础---Win32
- Windows编程(2)|Win32建立菜单
- effective java(13) 之使类和成员的可访问性最小化
- $.ajax()方法详解
- 实验楼之一个简单的课程数据库
- Oracle中before触发器中伪列的使用
- 数据类型
- Windows编程基础--第2节 win32程序资源管理
- shell编程学习(一)
- Java内省的学习
- Hdu 2053 Switch Game 推结论? 找规律?解题报告
- RxJava——第一个小程序HelloWorld
- Day2
- 进程同步
- hive+hbase 细节详解
- AKKA日志