この質問を投稿した理由は、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機能パックの更新でコントロールに必要なビットマップリソースが有効になります。これで、不足しているコードを.rcファイルの最後に単純に追加することはできません。これを行うと、ビジュアルデザイナを使用してリソースファイルを編集するたびに、追加したコードが削除されます。この問題の解決策は、これをYOUR_PROJECT_NAME.rc2ファイルの最後に追加することです。
#ifndef _AFXDLL
#include "afxribbon.rc" // Ribbon and control bars
#endif
ファイルの下部に空の行があることを確認してください。そうしないと、リソースコンパイラが文句を言います。NewControlsサンプルプロジェクトのように、ビジュアルデザイナーがafxribbon.rcを自動的に含めるために、どの設定を調整する必要があるかわかりません。しかし、それを.rc2に追加すると、問題が解決するようです。
アップデート
IDEを使用してRCファイルを変更できることに注意してください。
- RCファイルを右クリックし、[リソースに含まれるもの... ]を選択します。

- 新しいコードをコンパイル時ディレクティブ領域に貼り付けます。
