《Windows PE》7.1 资源分类

本节我们将讲述Windows程序中常用的资源类型,以及资源脚本文件的编写方法。

本节必须掌握的知识点:

        位图、光标、图标资源

        菜单资源

        对话框资源

        自定义资源

7.1.1 位图、光标、图标资源

位图、光标和图标资源是 Windows 程序中常见的图形资源类型。它们用于在程序中显示图像、光标和图标。

位图资源(Bitmap):位图资源用于存储图像数据。可以将图像资源用于程序的图标、按钮、背景等任何需要显示图像的地方。位图资源通常以 .bmp 格式存储,并可以包含不同的颜色深度和分辨率。

光标资源(Cursor):光标资源用于定义鼠标指针的外观。程序可以为不同的鼠标状态(如正常、等待、手型等)定义不同的光标资源。光标资源通常以 .cur 或 .ani 格式存储。

图标资源(Icon):图标资源用于程序的图标,通常显示在程序的窗口标题栏、任务栏、文件资源管理器等地方。图标资源可以包含多个尺寸和颜色深度的图标,以适应不同的显示环境。图标资源通常以 .ico 格式存储。

这些图形资源可以使用资源编辑器(如 Visual Studio 的资源编辑器)进行编辑和管理,也可以使用专门的图形编辑工具创建和导入。

在程序运行时,可以使用 Windows API 中的相关函数(如 LoadBitmap、LoadCursor、LoadIcon 等)来加载和使用这些图形资源。

资源定义

位图定义:namelD BITMAP [DISCARDABLE]位图文件名

光标定义:namelD CURSOR [DISCARDABLE]光标文件名

图标定义:namelD ICON [DISCARDABLE]图标文件名

1.namelD表示该资源的名字,在程序中使用资源时需要用到它,类似于文件的句柄。

2.BITMAP、CURSOR、ICON表示资源的类型。

3.DISCARDABLE关键字是可选项,表示在不用的时候可以从内存中暂时卸载掉。

【注意】当文件名包含空格时,需要使用英文半角状态下的双引号引起来。对应的外部文件可以使用绝对路径。

举例

IDB_BITMAP1       BITMAP "bitmap.bmp"

IDC_CURSOR1      CURSOR "cursor.cur"

IDI_ICON1            ICON "icon.ico"

ICO_MAIN           ICON "dpatch.ico"

1000                   icon discardable 123.ico

ICO_MAIN            ICON "D:\masm32\source\chapter7\main.ico"

7.1.2 菜单资源

菜单资源(Menu Resource)用于定义程序的菜单结构和菜单项。菜单资源可以在程序中创建和显示菜单,并与相应的操作关联。

菜单ID可以是16位的整数,赋值范围1~65535之间。菜单项的定义可以有三种:普通菜单、菜单分隔符和弹出菜单。

在资源脚本文件(.rc 文件)中,可以使用特定的语法来定义菜单资源。以下是一个示例:

IDR_MENU1 MENU

BEGIN

    POPUP "File"

    BEGIN

        MENUITEM "Open",         IDM_FILE_OPEN

        MENUITEM "Save",         IDM_FILE_SAVE

        MENUITEM "Exit",            IDM_FILE_EXIT

    END

    POPUP "Edit"

    BEGIN

        MENUITEM "Cut",         IDM_EDIT_CUT

        MENUITEM "Copy",        IDM_EDIT_COPY

        MENUITEM "Paste",        IDM_EDIT_PASTE

    END

    POPUP "Help"

    BEGIN

        MENUITEM "About",        IDM_HELP_ABOUT

    END

END

上述代码中,IDR_MENU1 是菜单资源的唯一标识符(ID),MENU 是资源类型指示符。菜单资源定义了一个包含三个菜单项的菜单结构,其中每个菜单项都被定义为 MENUITEM。

每个 MENUITEM 包括菜单项的显示文本和与之关联的命令标识符(ID)。命令标识符用于标识菜单项被选择时要执行的操作。

在程序中加载和使用菜单资源时,可以使用相关的 API 函数(如 LoadMenu、SetMenu)来加载菜单资源并将其关联到程序的窗口上。

7.1.3 对话框资源

对话框资源(Dialog Resource)用于定义程序中的对话框界面。对话框是一种用于与用户进行交互的窗口,它可以用于显示和接收用户的输入或显示程序的状态。

在资源脚本文件(.rc 文件)中,可以使用特定的语法来定义对话框资源。

在资源脚本的定义中,对话框最为复杂,其语法如下:

对话框 ID DIALOG [DISCARDABLE] x 坐标,y 坐标,宽度,向度[options]

BEGIN

子窗口控件1

子窗口控仵2

END

对话框的可选属性及描述:

属性

定义语法

描述

标题文字

CAPTION“文字”

窗口标题栏的文字

窗口类

CLASS“类名”

对话框继承的窗口类

窗口风格

STYLE风格组合

对话框的窗口风格

扩展风格

EXSTYLE风格组合

对话框的扩展窗口风格

字体

FONT大小,“字体名”

对话框使用的字体

菜单

MENU菜单ID

对话框上的菜单

以下是一个示例:

IDD_DIALOG1 DIALOGEX 0, 0, 200, 150

STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU

CAPTION "Example Dialog"

FONT 8, "MS Shell Dlg"

BEGIN

   CONTROL "Text:", IDC_STATIC, "Static", SS_LEFT | WS_GROUP, 10, 10, 40, 12

   CONTROL "", IDC_EDIT1, "Edit", WS_BORDER | WS_TABSTOP, 60, 10, 120, 14

   CONTROL "OK", IDOK, "Button", BS_PUSHBUTTON | WS_TABSTOP, 60, 40, 50, 14

   CONTROL "Cancel", IDCANCEL, "Button", BS_PUSHBUTTON | WS_TABSTOP, 120, 40, 50, 14

END

上述代码中,IDD_DIALOG1 是对话框资源的唯一标识符(ID),DIALOGEX 是资源类型指示符。对话框资源定义了一个对话框界面,其中包括一个静态文本控件(IDC_STATIC)、一个编辑框控件(IDC_EDIT1)和两个按钮控件(IDOK 和 IDCANCEL)。

对话框资源中的每个控件都有相应的标识符(ID),用于在程序中获取和操作该控件。控件还具有特定的样式(STYLE)和位置信息,用于定义控件的外观和布局。

在程序中加载和使用对话框资源时,可以使用相关的 API 函数(如 DialogBox、CreateDialog)来创建和显示对话框。

7.1.4 自定义资源

自定义资源是指在程序中使用的非标准资源,这些资源可以是任何类型的数据或文件,用于存储和使用程序所需的特定信息或内容。

在资源脚本文件(.rc 文件)中,可以使用自定义的资源类型来定义和描述这些资源。

其在资源 文件中的定义语法如下:

资源 ID  类型       ID [DISCARDABLE]

BEGIN

数据定义

……

END

以下是一个示例:

IDR_CUSTOM1 CUSTOM "custom.dat"

上述代码中,IDR_CUSTOM1 是自定义资源的唯一标识符(ID),CUSTOM 是自定义资源类型指示符,custom.dat 是自定义资源文件的名称。

自定义资源可以是任何形式的数据或文件,如配置文件、音频文件、视频文件、XML 文件等。在程序中使用这些自定义资源时,可以使用相关的 API 函数(如 FindResource、LoadResource)来加载和访问这些资源。

自定义资源的使用可以根据程序的需求和设计进行灵活的扩展和应用。通过合理使用自定义资源,可以将程序所需的特定信息和内容与程序代码分离,提高程序的可维护性和灵活性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值