如何解决即使在头文件就位的情况下,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();
}
产量:
我已经包含在 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。
解决方法
我已经弄清楚问题是什么;当我创建对话框时,我使用了以下基类:
CPropertyPage
代替:
CMFCPropertyPage
我已将工作表设置为:
CMFCPropertySheet
并假设它在正确编译和显示选项卡视图后继续执行,但在其他 SetLook
属性选项上失败。
一旦我将所有对话框调整为 CMFCPropertyPage
,SetLook
立即开始工作。所以我考虑这个问题CLOSED
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。