0

我已经实现了一个属性表和几个从 MainFrame.cpp 的主菜单调用的属性页,这些属性页是从我的问题在这里产生的:

MFC MDI 设计用户首选项对话框 GUI 布局功能

我登陆的代码是:

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);因为我得到一个错误,说SetLookidentifier not found C3861

如果我将鼠标悬停在 IDE 中MainForm.h并右键单击该#include <afxpropertysheet.h>文件,则会在 IDE 中直接打开,如果我搜索SetLook它,肯定可以在public函数部分找到它。

因此,我已经看到了多个使用它的代码示例,SetLook并且我查看的其中一个教程使用了它,并且在我使用 VS2017 时它运行良好。

我意识到什么是“未找到”,但我不知道为什么这里会出现问题。这是我现在遇到的唯一错误,我想使用该功能。

对这里可能发生的事情的想法?

更新:

按照 Dxiv 的建议,我将代码更改为:

SettingsSheet.SetLook(CMFCPropertySheet::PropSheetLook_OneNoteTabs);

它现在可以编译并运行,但有一些奇怪的结果,它只显示一个属性页,其余的都是 AWOL。

选项卡不见了!

4

1 回答 1

1

我已经弄清楚了问题所在;当我创建对话框时,我使用了以下基类:

CPropertyPage

代替:

CMFCPropertyPage

我已将工作表设置为:

CMFCPropertySheet

并假设它已被执行,因为它正确编译并显示了选项卡视图,但在其他SetLook属性选项上失败了。

一旦我将所有对话框调整为CMFCPropertyPageSetLook立即开始工作。所以我考虑这个问题CLOSED

于 2021-04-30T00:08:34.373 回答