MFC 之 resource.h和*.rc的关系

当在MFC项目中删除或修改控件ID时,resource.h文件可能不会自动更新,可能导致编译错误。手动更新resource.h以避免冲突,例如添加#define IDD_JK_DIALOG 102等定义,这允许复用已有的.rc文件内容。

  先说问题,今天发现删除控件(如static),不会自动更新resource.h,而且修改static控件id,会在resource.h中同时记录修改前后的两个id,但后面的数值(1072)是相同的,下图:

  验证,手动从窗体上删除static控件 ,resource.h并不会自动更新。这样就有个风险就是,resourc.h中的控件ID在代码中农工仍然是可以被使用的,需要注意!

  有次,手动删除新添加的static后,编译居然报错了,查了下,还是因为id修改的原因,屏蔽掉resource.h中的定义就好了。

resource.h就是.rc文件的头文件,.rc文件里的常量全在resource.h定义,一般情况下不用你去写和修改。但是如果你想用以前的.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_BUTTON1IDC_BUTTON2IDC_EDIT1IDC_EDIT2没有定义,这时你只需要用记事本打开resource.h

在里面加:

#define IDD_JK_DIALOG                   102

#define IDC_BUTTON1                    1000

#define IDC_BUTTON2                    1001

#define IDC_EDIT1                     1002

#define IDC_EDIT2                     1003

如果你需要做一个有很多控件的对话框,但是以前做过一个一样的对话框,这时你就可以使用这种方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值