我已经实现了一个属性表和几个从 MainFrame.cpp 的主菜单调用的属性页,这些属性页是从我的问题在这里产生的:
我登陆的代码是:
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
Other messages...
ON_COMMAND(ID_SETTINGS_DIALOG, OnSettingsTools)
Other messages...
END_MESSAGE_MAP()
void CMainFrame::OnSettingsTools()
{
SettingsSheet SettingsSheet(L"Application Settings");
CSettingsPowerUser m_PowerUser;
CSettingsReset m_Reset;
CSettingsToolbars m_Toolbars;
CSettingsUserWarnings m_UserWarnings;
SettingsSheet.AddPage(&m_PowerUser);
SettingsSheet.AddPage(&m_Reset);
SettingsSheet.AddPage(&m_Toolbars);
SettingsSheet.AddPage(&m_UserWarnings);
//SetLook(CMFCPropertySheet::PropSheetLook_OneNoteTabs);
SettingsSheet.DoModal();
}
产量:
我已包含在 MainFrame.h
#include <afxpropertysheet.h>
属性表CMFCPropertySheet
同时在.cpp
&中使用.h
,如其.h
文件中所示:
class SettingsSheet : public CMFCPropertySheet
{
DECLARE_DYNAMIC(SettingsSheet)
public:
SettingsSheet(UINT nIDCaption, CWnd* pParentWnd = nullptr, UINT iSelectPage = 0);
SettingsSheet(LPCTSTR pszCaption, CWnd* pParentWnd = nullptr, UINT iSelectPage = 0);
virtual ~SettingsSheet();
protected:
DECLARE_MESSAGE_MAP()
};
所以这里的问题是什么,你可以看到我不得不注释掉,SetLook(CMFCPropertySheet::PropSheetLook_OneNoteTabs);
因为我得到一个错误,说SetLook
identifier not found C3861
。
如果我将鼠标悬停在 IDE 中MainForm.h
并右键单击该#include <afxpropertysheet.h>
文件,则会在 IDE 中直接打开,如果我搜索SetLook
它,肯定可以在public
函数部分找到它。
因此,我已经看到了多个使用它的代码示例,SetLook
并且我查看的其中一个教程使用了它,并且在我使用 VS2017 时它运行良好。
我意识到什么是“未找到”,但我不知道为什么这里会出现问题。这是我现在遇到的唯一错误,我想使用该功能。
对这里可能发生的事情的想法?
更新:
按照 Dxiv 的建议,我将代码更改为:
SettingsSheet.SetLook(CMFCPropertySheet::PropSheetLook_OneNoteTabs);
它现在可以编译并运行,但有一些奇怪的结果,它只显示一个属性页,其余的都是 AWOL。