0

MFCリボンを既存のSingleDocアプリケーションに組み込んでいます。LoadFrame()タイプのオブジェクトで メソッドを呼び出しているときにアサーションエラーが発生しますCMainFrame : public CFrameWndEx

CMainFrame* pFrame = new CMainFrame;

if (!pFrame) return FALSE;

m_pMainWnd = pFrame;

// create and load the frame with its resources` 

pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL);

アサーションは関数でスローされます

CMFCRibbonCategory* CMFCRibbonBar::AddPrintPreviewCategory()

行で

CString strLabel; ENSURE(strLabel.LoadString(IDS_AFXBARRES_PRINT_PREVIEW));

呼び出しスタック(ここでは関数呼び出しについてのみ説明しました)は次のとおりです-

CMFCRibbonBar :: AddPrintPrevieCategory()

CMFCRibbonBar :: RecalcLayout()

CMFCRibbonBar :: LoadState(const char * lpszProfileName = 0x06bdf2f8、int nIndex = 59398、unsigned int uiID = 4294967295)

DockingManager :: LoadState(const char * lpszProfileName = 0x06bdf2f8、unsigned int uiID = 128)

CFrameImpl :: LoadDockState(const char * lpszSectionName = 0x06bdf2f8)

CFrameImpl :: OnLoadFrame()

CFrameWndEx :: LoadFrame(unsigned int nIDResource = 128、unsigned long dwDefaultStyle = 13598720、CWnd * pParentWnd = 0x00000000、CCreateContext * pContext = 0x00000000)

App :: InitInstance()-この関数では、ここでLoadframeを呼び出します

今、私がしているのはLoadFrame関数を呼び出すことだけなので、これをどうやって行うのか疑問に思っています。

どんな助けでもありがたいです。ありがとう。

4

1 に答える 1

2

リボンを使用するMFCアプリケーションでは、リボン用のリソースファイルをいくつか含める必要があります。これらのファイルは、VSインストールのVC \ atlmfc\includeサブディレクトリにあります。

私の推測では、.rcファイルを比較したのではなく、VSのリソースアイテムを比較したと思います。これらの行は簡単に見落とされる可能性があります。

そのため、メインの.rcファイルには次の2行が必要です。

#include "afxprint.rc" // printing/print preview resources

#include "afxribbon.rc" // MFC ribbon and control bar resources

VisualStudio内から簡単に行うことができます。[リソースビュー]に移動し、.rcファイルを右クリックして、[リソースに含まれるもの...]を選択すると、そこに追加できます。

それはそれをする必要があります。

于 2012-04-13T17:43:25.353 に答える