六: Windows应用程序开发界面资源

资源在应用程序开发中具有重要的作用。尤其是将界面元素(菜单、图标、位图等)作为资源,对降低程序设计的工作量大有帮助。

资源脚本(. rc)

资源是在资源脚本(. rc)中进行配置的。例如,把资源名字起为Window,再对Window进行如下配置,

1 添加资源

通过添加资源窗口,可以向.rc文件中添加需要的资源,比如常用的Dialog,Bitmap,Menu等。

添加完相应的资源后,Window.rc 文件内容如下:

2 绘制资源

这部不需要写代码,智能的Visual Studio允许使用“所见即所得”的方式来对资源的界面进行开发,姑且使用“绘制”来表示吧。这步主要使用工具箱中的控件来“绘制”出需要的各种资源。这里需要注意资源ID的命名,起的名字要便于记忆且符合一定的规律,因为这样便于之后的开发与程序的维护。

Dialog:

Icon:

MENU_MAIN:

MENU_POPUP:

资源ID定义和头文件

资源 ID 是一个资源或资源子项的唯一标识,很多资源和子项都具有标识。上文中已经提过资源ID的重要性。如IDD_DIALOG_ABOUT、ID_FILE_COPY 等就是资源 ID。这些 ID 实际是由用户定义的常数,都定义于自动生成的 resource.h 头文件中。

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Windows.rc
//
#define IDD_DIALOG_ABOUT                101
#define IDR_MENU_MAIN                   101
#define IDR_MENU_POPUP                  102
#define IDI_ICON_MAIN                   103
#define IDC_EDIT_ABOUT                  1001
#define ID_FILE_COPY                    40001
#define ID_FILE_SAVE40002               40002
#define ID_FILE_EXIT                    40003
#define ID_EIDT_COPY                    40004
#define ID_EIDT_PASTE                   40005
#define ID_HELP_ABOUT                   40006
#define ID_COPY_PASTE                   40007
#define ID_COPY_PASTE40008              40008
#define ID_POPUP_COPY                   40009
#define ID_POPUP_PASTE                  40010
#define ID_POPUP_CUT                    40011
#define ID_POPUP_INFO                   40012
#define ID_INFO_A                       40013
#define ID_INFO_B                       40014

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        104
#define _APS_NEXT_COMMAND_VALUE         40015
#define _APS_NEXT_CONTROL_VALUE         1000
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

资源脚本文件和需要使用资源的程序文件都需要包含 Resource.h。在引用资源时,需要指明资源的 ID,资源 ID 在资源和程序中都是唯一标识,作为程序和资源的接口。

在程序中使用资源

图形用户界面一文中,也涉及到了如何在程序中使用资源。该文提供的源码内也有相应的实现。这里就详细的介绍在程序中使用资源。

源代码中引用图标和菜单资源,如下所示:

wcx.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON_MAIN)); // 图标
......
wcx.lpszMenuName = MAKEINTRESOURCE(IDR_MENU_MAIN); // 菜单资源

源代码中引用菜单项 ID 和对话框资源,如下所示:

        case ID_HELP_ABOUT:
        {
            DialogBox(
                hinst, (LPCTSTR)IDD_DIALOG_ABOUT, hwnd, (DLGPROC)About
                );
            return 0;
        }

这里的IDI_ICON_MAIN、IDR_MENU_MAIN、ID_HELP_ABOUT 和 IDD_DIALOG_ABOUT都是资源 ID。在 Resource.h 可以查找到其定义。

MAKEINTRESOURCE 是一个宏,这个宏的功能是将资源 ID 转换为资源名(字符串型),很多 API 函数在引用资源时都是通过资源名。

当然不是只有界面才会使用资源,任何程序都可以使用资源。资源中程序中也并非只用与图形用户界面。资源可以是任意的数据。比如完全可以将一些配置信息、动态连接库文件编译为exe的资源。在程序运行后,将资源数据写入到文件再使用。这样就可以将所有程序和数据集中在一个可执行文件里。

时间: 2024-10-28 21:46:14

六: Windows应用程序开发界面资源的相关文章

初学Windows应用程序开发遇到的几个专业名词解释

1..NET Framework Visual Studio.NET程序开发环境是微软开发的基于.net 架构的Windows应用程序开发工具,它支持VB.NET.C/C++.C#.Java等编程语言,提供一个统一的面向对象的编程开发环境,而.NET Framework是这个开发环境的核心,它包含把.NET应用程序转换为可执行文件所需的所有编译器,并为所有的开发语言提供了一个包括公共语言规范.公共类型系统.JIT编译器.代码管理和垃圾收集器的公共运行环境,其中JIT编译器可以把.NET应用程序编

Windows应用程序开发

Windows窗体应用程序开发:WinForm.桌面应用程序,有可执行文件(.exe)即安装包.是一种C/S(客户机/服务器)架构应用程序 1.Windows窗体应用程序,用可视化的窗体和控件生成丰富界面的,可交互操作的应用程序.从工具箱选择相应控件,拖曳到窗体界面,通过设置其属性,布局外观.双击控件自动生成相应事件,编写代码响应事件完成功能. 2.WinForm程序的文件结构 A)窗体文件后缀名为.cs,每一个窗体都继承了Form类,拖动控件自动生成的初始文件后缀名.designer.cs.

Java微信小程序开发_00_资源帖

1.微信小程序开发:http://blog.csdn.net/column/details/13721.html?&page=1 2.微信小程序栏目:http://blog.csdn.net/column/details/14653.html?&page=2 3.

关于windows下程序开发的中文乱码问题小结

笔者遇到的问题背景: windows 下使用notepad++6.7 ,ftp连接远程ubuntu主机,在本地创建远程主机文件,编辑后上传出现中文乱码. 笔者最开始不明白问题出在哪,因为设置了在notepad++中默认使用UTF-8编码格式进行新建文件,但依旧无效. 笔者一步步探索问题: 新建一个文件,写入纯英文html文本后上传至ubuntu主机,vi :set fileencoding显示此时为utf-8编码 上述文件新增几个中文,保存后上传至ubuntu主机,这个时候提示fileencod

winForm 程序开发界面参数传递

1. [csharp] view plaincopy using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace

MFC Windows程序开发究竟是什么?

MFC Windows程序开发究竟是什么? MFC是一个Application Framework.他是一个完整的程序模型. 什么是MFC?MFC是微软公司出品一个Application Framework.基本上,我们可以认为Application Framework就是一个完整的程序模型,具备标准软件所需的一切基本功能,比如文件存取.打印等等.从C++语言层面来看,Application Framework就是有一整套组合好的“对象”构建起来的模型.从C++语法上来说,MFC就是一套微软提供

WPF应用程序开发

WPF应用程序开发 WPF不仅提供了强大的布局功能和窗体渲染功能,在WPF应用程序开发中,还能够实现如Flash一样的动画效果,这就使得在Windows窗体中能够实现Flash动画效果,Microsoft Expression Blend 2提供了动画轴,动画事件处理面板,方便了开发人员在WPF中实现动画效果. 19.3.1  WPF动画事件 WPF可以像Flash一样支持动画开发,与普通的事件不同的是,WPF包括一个动画事件,这个动画事件描述的是当用户执行某个操作时所触发的动画事件.首先需要创

C、C++控制台程序、Windows API程序、MFC程序理解与比较

在编程语言中,函数是一个很重要的概念,其身影无处不在.在面向过程的编程方式中,函数更是程序的基本构建模块,在面向对象的编程方式中,函数演变为类或对象的成员(当然也可以使用与类无关的函数).函数由函数头和函数体组成.函数头包括域属性(如external.static或类域).返回值类型.函数名.及参数.域属性包括其在多文件编程中的可见范围,是否是属于某一个类的成员?返回值类型是指函数返回的值的具体数据类型(可以理解为函数输出的一部分).函数名是函数保存在内存代码区的首地址,用于函数的调用及函数指针

使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍

使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍 Windows MobileMobileWindowsMicrosoftWinForm 介绍 Microsoft Visual Studio 2008 专业版或者更高版本提供了一个Windows Mobile程序开发环境,允许你使用本地代码(C / C++)或托管代码(C# / Visual Basic.NET)为Windows Mobile设备创建程序. 这篇文章将带你正确的安装Visual Studi