RC 资源文件

resource.h就是.rc文件的头文件
.rc文件里的常量全在resource.h定义

.rc文件和resource.h 都是给project add resource 的时候VS 自动生成的。
一般情况下不用你去写和修改
vc会帮你写和改
但是如果你想用以前的.rc中的资源比如你以前做的对话框
你只需复制粘贴就行了
就象下面这段

IDD_JK_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "jk"
FONT 9, "宋体"
BEGIN
    PUSHBUTTON      "学号",IDC_BUTTON1,25,75,62,22
    PUSHBUTTON      "姓名",IDC_BUTTON2,179,75,64,24
    EDITTEXT        IDC_EDIT1,105,75,57,24,ES_AUTOHSCROLL
    EDITTEXT        IDC_EDIT2,261,75,46,24,ES_AUTOHSCROLL
END
你可以复制到你新的工程里去。
方法是用记事本打开.rc文件然后粘贴进去
但是vc可能会提示IDD_JK_DIALOG IDC_BUTTON1,IDC_BUTTON2,IDC_EDIT1,IDC_EDIT2没有定义
这时你只需要用记事本打开resource.h
在里面加
#define IDD_JK_DIALOG                   102
#define IDC_BUTTON1                     1000
#define IDC_BUTTON2                     1001
#define IDC_EDIT1                       1002
#define IDC_EDIT2                       1003
如果你需要做一个有很多控件的对话框,但是以前做过一个一样的对话框,这时你就可以使用这种方法。


---------------------------------------------------------------------------------------------------------


MFC关于*.rc和resource.h文件的巧妙运用 (转)  

2010-12-07 11:14:20|  分类: c++|字号 订阅

     这是由几个人完成的一个软件系统。基于MO控件和MFC平台的网络优化软件系统。我写的是主菜单的Operation功能。

由于是一个平台几个人分块负责,又因为地理上的原因没能用VSS版本管理,而是分别在原型系统基础之上完成各自的功能模块,最后再去集成到一起。这就会出现很多问题:

1、如何把自己负责设计的Dialog资源及其相对应的类加入到别人的系统中?

2、MainFrm.cpp/MainFrm.h要做哪些相应修改?

这里首先把自己新加入的Dialog资源的名字找出来,我写的新模块名字如下:

#define IDD_POLYGON_PROPERTY            400
#define IDD_LINE_PROPERTY               401
#define IDD_PROPERTY_NODE               402
#define IDD_POLYGON_MANIPULATON         403

好,这样我们清楚地知道我们添加的模块是那些,并且以此我们也可以轻松找到自己相对应这些Dialog模块创建的类(Cxx.cpp、Cxx.h),这是我们自己写的,应该很清楚吧。。。

为叙述方便,我们把自己工程乘作ME,把要集成的工程称作HE。

第一步:

嗯,那么找到后我们就先把这些源文件copy到要集成的HE工程目录下吧:),要记得打开工程后要把需要手动把copy的这些文件真正加入哦

第二步:

要仔细对比ME工程和HE工程下面的*.rc文件以及resource.h文件。这两个文件控制着所有资源文件,包括Dialog、Dialog上的控件(Button、Edit等等)、Menu、ToolBar、BitMap、Icon、String Table、Version、Accelerator等

=====>对比时leo推荐大家一款小工具哈,可以事半功倍呢,就是SVN ,大家可能只知道这是一款版本管理工具,但是安装后选中要比对的文本文件->右击->Diff,之后你就会发现它这个Nubility的功能啦 哈哈~

第三步:

通过对比,大家很快就能找到自己ME工程的*.rc以及resource.h与HE工程不同,提取出来自己新建到部分,加入到HE工程对应的文件。当然在resource.h中,会发现#define  XXXX  489 后面的数值有时会重复,这就需要我们手动修改,最好不要和HE工程中define的冲突。

注意:对于Menu修改的东西(如:新添加一级菜单),都可以在*.rc中找到的;对与新加一个Dialog资源,会在*.rc中添加两样东西,比如新加Dialog1(Chinese (P.R.C.) resources类型),则*.rc和resource.h改变如下:

注意:Dialog有很多种类型,增加的同种类型被VS自动写到一起,比如(Chinese (P.R.C.) resources)类型的Dialog在一起,(English&American resource)的Dialog会放在一起~;对应resource.h中的控件资源,是可以重复利用的,比如


#define IDC_RADIO1                      1001定义后可以在不同的Dialog中使用,并且,ID都是IDC_RADIO1。知识这样做的缺点也是有的,即你修改一个会影响多个,牵一发而动全身~

*.rc文件中: 
/
//
// Dialog
//

IDD_DIALOG1 DIALOGEX 0, 0, 383, 180
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,205,159,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,320,159,50,14
    PUSHBUTTON      "Button1",IDC_BUTTON1,25,26,50,14
    CONTROL         "Radio1",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,101,32,38,10
    COMBOBOX        IDC_COMBO1,37,58,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
    GROUPBOX        "Static",IDC_STATIC,153,92,48,40
END

。。。

。。。

。。。

/
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO 
BEGIN
    IDD_DIALOG1, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 370
        TOPMARGIN, 7
        BOTTOMMARGIN, 173
    END
。。。
。。。
END
#endif    // APSTUDIO_INVOKED

#endif    // Chinese (P.R.C.) resources

resource.h中变化:

#define IDD_DIALOG1                     130

。。

。。

#define IDC_RADIO1                      1001
#define IDC_COMBO1                      1002 //这个是你新添加的Dialog资源上所包含的控件资源,它也会在resource.h中先define一下

好了,最后大家Build一下,若有什么错误,再去看看是不是忘记ME工程中某个define或者*.rc中某个菜单或者对话框没有copy到HE工程中,或者copy的位置是不是乱了。。 方法很明确,大家可以记事本打开*.rc看看其中的机构是怎么样的哈

这样我们以后再要集成MFC工程到其他工程时,除了源文件我们可以copy,自己辛苦布局设置的Dialog可以保留,很不错吧~

最近有发现一种更快捷的方法:

直接打开两个工程,把相关的rc打开copy到另一个工程的rc中即可,但童鞋们不要忘记把相应的.h/.cpp  Add到对应工程哦,呵呵 竟然忘记VS是可以同时打开多个工程了,晕晕~

另外有人问我能不能把已生成的工程名字修改了,。。。嗯当然可以的哦,我们只需要对如下文件进行操作即可:

GUI.vcproj.ACCESSCONSYS.zlh.user

GUI.sln

GUI.vcproj.55B45E7107F1495.Administrator.user

GUI.vcproj

比如要把GUI->BUPT_GUI,那好,我们把他们用记事本打开,把对应的GUI修改成BUPT_GUI即可,当然以上文件名最后也改成BUPT_GUI.***


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值