我发布这个问题的原因是因为我找不到任何通过Google的答案。我研究它时最接近的是一对似乎不是真正解决方案的黑客。经过NewControls的例子,我终于找到了罪魁祸首。
在一个项目的默认rc文件的底部,有下面的代码:
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE 9, 1
#include "res\YOUR_PROJECT_NAME.rc2" // non-Microsoft Visual C++ edited resources
#include "afxres.rc" // Standard components
#endif
的NewControls例子的rc文件看起来是这样的:
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE 9, 1
#include "res\NewControls.rc2" // non-Microsoft Visual C++ edited resources
#include "afxres.rc" // Standard components
#ifndef _AFXDLL
#include "afxribbon.rc" // Ribbon and control bars
#endif
#endif
添加afxribbon .rc启用MFC Feature Pack更新中控件所需的位图资源。现在,您不能只是简单地将缺少的代码添加到.rc文件的底部。如果这样做,每次使用可视化设计器编辑资源文件时,您添加的代码都将被删除。这个问题的解决办法是把它添加到YOUR_PROJECT_NAME.rc2文件的底部:
#ifndef _AFXDLL
#include "afxribbon.rc" // Ribbon and control bars
#endif
请确保您有在文件的底部,或资源编译器会抱怨一个空行。我不确定需要调整什么样的设置才能使视觉设计者自动将afxribbon.rc包含在NewControls示例项目中。但将其添加到.rc2似乎解决了这个问题。
*“我不知道需要为了要调整的可视化设计器来设置什么自动将afxribbon.rc包含在NewControls示例项目中。“*我认为需要将'* .rc'包含('afxres.rc'和'afxribbon.rc')添加到'3 TEXTINCLUDE'部分。第三个“TEXTINCLUDE”部分是设计人员用来自动生成当直接调用资源编译器时包含的资源的部分。虽然这是一个非常有用的答案;我只是被这个问题困住了,而且记录极其糟糕。 – 2015-06-12 05:21:06