微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使在头文件就位的情况下,SetLook 的 MFC MDI 问题

如何解决即使在头文件就位的情况下,SetLook 的 MFC MDI 问题

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

MFC MDI Designing user preferences dialog GUI layout functionality

我登陆的代码是:

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();
}

产量:

Settings Sheet/Pages Working

我已经包含在 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,UINT iSelectPage = 0);
    virtual ~SettingsSheet();

protected:
    DECLARE_MESSAGE_MAP()
};

所以这里的问题是什么,你可以看到我必须注释掉 SetLook(CMFCpropertysheet::PropSheetLook_OneNoteTabs);,因为我收到一个错误,说 SetLook identifier not found C3861

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

所以我看到了多个使用该 public代码示例,我看过的其中一个教程使用了它,并且在我使用 VS2017 时运行良好。

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

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

更新:

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

SetLook

现在编译运行了,结果有些奇怪,只显示一个属性页,其他的都是AWOL。

Tabs are missing!

解决方法

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

CPropertyPage

代替:

CMFCPropertyPage

我已将工作表设置为:

CMFCPropertySheet

并假设它在正确编译和显示选项卡视图后继续执行,但在其他 SetLook 属性选项上失败。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。