MFC的资源文件失效导致无法编辑控件

问题描述:电脑重装系统后,重装VS2012,打开一个VS2012的MFC对话框项目。编译运行后是原来的对话框,但打开资源文件编辑对话框时,却是空白的(MFC默认的对话框,只有yse no两个控件),导致没办法添加或删除控件。原来的对话框是一个包含很多控件和经过细心布局的对话框,没理由重做。

解决办法:

MFC中跟对话框有关的两个文件:"Resouce.h"和"demo.rc"(注:demo是对话框项目名,不同的项目不一样)。问题有可能是重装系统或者VS后,这两个文件里的某些地方不一样了(不兼容了)。为了找出不同点,新建了一个MFC对话框项目,打开其resouce和.rc文件(以C++编辑方式打开),把之前项目这两个文件中不同的内容拷贝过来,拷贝过程中发现,.rc文件存在一个不同的地方:

旧的版本在这里定义语言

#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// 中文(简体,中国) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED

#ifdef APSTUDIO_INVOKED

而新版本却在更靠后的位置定义语言

IDR_MAINFRAME           ICON                    "res\\demo.ico"

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE 4, 2


把这个语句改一下,问题解决!

以后如果遇到MFC的资源文件损坏、无法打开旧项目的资源编辑窗口等问题(往往是VS的新旧版兼容性造成)时,就可以采用此方法解决。


通过这个问题,也学到一种导入资源文件的方法,只通过代码的复制,就可以往对话框添加控件,如下两步:1、Resouce.h中添加控件的ID的宏,注意ID号不要跟已有控件一样;2、在IDD_DEMO_DIALOG DIALOGEX下的BEGIN后面,添加控件属性,如添加一个编辑框

EDITTEXT        IDC_TIME,228,7,59,22,ES_AUTOHSCROLL | ES_READONLY
编译后,控件就会自动出现在对话框里



你可能感兴趣的:(mfc)