WIN32编程之.rc资源文件的使用

引言:

首先,如果学习标C,黑窗口程序,真的没有必要非要用VC

那么问题来了:学习WIN32是否需要用VC

我的答案是:不是非要VC不可,其它IDE也可以用来学WIN32

甚至我一度以为的学到时资源不得不用VC,目前看来稍微费点力气,

也是可以用其它IDE来完成的

            但是,使用VC会让你学得更轻松,更自在~

WIN32的学习是需要一定的时间的,初步了解WIN32的框架差不多也需要60小时左右,

这相当于在大学里学完标准C语言这门课的时间。

 

WIN32通常都是用VC通过可视化界面添加资源,

资源文件的扩展名是.rc,它必须有resource.h的头文件来辅助

在程序编译时它会被资源编译器编译生成一个.res的文件

 

 

.rc文件的语法:

1.注释:注释方式和 C语言相通,单行注释用 // 符号,多行注释用 /* ... */符号。

2.预处理命令:预处理指令包括一些头文件的引用(使用 #include,也同 C 语言)

3.编译指令:预定义(#define,常量和宏,不支持带参数的宏)和条件编译(#if, #ifdef, #undef, #ifndef, #else, #elif, #endif)

4.资源定义声明:资源定义的声明中包括资源”(Resources)"控件"(Controls)声明”(Statements) 3类。

 

.rc文件的编译:

VC中,使用RC.EXE.rc文件进行编译,生成.res的汇编文件,

使用CL.EXE编译C/C++文件,生成.obj的汇编文件

再由LINK.EXE链接这些文件和user32.lib生成.exe

 

mingw编译器中,

使用windres.exe.rc文件进行编译,

gcc/g++C/C++源文件进行编译再进行链接

 

这些手工输命令的方式过于繁杂,所幸基本上IDE都会提供自动编译+链接的功能,

VC自然有这个功能,其它的IDE比如 C-Free也同样OKDEV_CPPOK

本文最后附上DEV_CPP的实现步骤

 

1.       文件导入的资源(BITMAP ICON HTML FONT CURSOR

举例:

 

.rc :

#include<windows.h>

#include"resource.h"

 

IDI_ICON1 ICON "dlgapp.ico" //ICON RESOURCE

Resource.h:

#define IDI_ICON1 1001

 

注册窗口类:

 

wcs.hIcon = LoadIcon(

    g_hInstance,

MAKEINTRESOURCE(IDI_ICON1));

 

2CURSOR

.rc:

IDC_CURSOR1 CURSOR "lmove.cur"

Resource.h:

#define IDC_CURSOR1 1002

注册窗口类:

wcs.hCursor = LoadCursor(g_hInstance,MAKEINTRESOURCE(IDC_CURSOR1));

 

对话框资源:

见图:

对应的.rc文件:

IDD_DIALOG1 DIALOG DISCARDABLE  0, 0, 187, 94

STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU

CAPTION "对话"

FONT 10, "System"

BEGIN

    DEFPUSHBUTTON   "确定",IDOK,130,7,50,14

    PUSHBUTTON      "取消",IDCANCEL,130,24,50,14

END

对应resource.h:

#define IDD_DIALOG1 102

 

对应的.cpp文件:

voidOnNoModel(HWND hWnd)

{

    HWND hDlg = CreateDialog(g_hInstance,//根据资源创建对话框

       MAKEINTRESOURCE(IDD_DIALOG1),hWnd, MyDialogProc);

    ShowWindow(hDlg,1);//需要显示对话框

}

 

 

菜单资源:(当然,菜单不使用资源也可以创建的~用命令创建的感觉和QT命令创建很相似,本文不涉及)

 

对应的.rc文件:

#include"resource.h"

#include<windows.h>

 

IDR_MENU1 MENU       //MENU RESOURCE                                   

BEGIN                                                                       

    POPUP "File"        // POPUP RESOURCE                                   

    BEGIN                                                                   

        MENUITEM "&Open",        ID_FILE_OPEN    // MENUITEM  STATEMENT     

        MENUITEM "&Save",        ID_FILE_SAVE    // MENUITEM  STATEMENT    

        MENUITEM SEPARATOR           // MENUITEM  STATEMENT                

        MENUITEM "E&xit",         ID_FILE_EXIT  // MENUITEM  STATEMENT      

    END                                                                     

END   

对应的resource.h文件:

#define IDR_MENU1 1001

#define ID_FILE_OPEN 1003

#define ID_FILE_SAVE 1004

#define ID_FILE_EXIT 1005

对应的.cpp文件:

wcs.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);

 

 

 

字符串表类型:

对应的.rc文件:

//例子  

STRINGTABLE  

BEGIN  

IDS_1 L"5\x00BC-Inch Floppy Disk" 

IDS_2 L"Don't confuse" 

IDS_3 "Copyright \xA92001" 

END 

对应的.h文件和.cpp文件略

 

 

DEV_CPP实现资源应用的步骤:

1.       编写.rc文件:

2.       编写resource.h文件:

3.       更改main1.cpp文件:

4.       点击编译运行按钮:(鼠标的样子也变化了,只是截图显示不出来)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值