“错误 C2065:'ON_WM_THEMECHANGED':未声明的标识符”[关闭]

Posted

技术标签:

【中文标题】“错误 C2065:\'ON_WM_THEMECHANGED\':未声明的标识符”[关闭]【英文标题】:"error C2065: 'ON_WM_THEMECHANGED' : undeclared identifier" [closed]“错误 C2065:'ON_WM_THEMECHANGED':未声明的标识符”[关闭] 【发布时间】:2012-12-30 03:46:07 【问题描述】:

我使用的是VC6。如何解决这个错误?

error C2065: "error C2065: 'ON_WM_THEMECHANGED' : undeclared identifier"

类定义代码:

    #include "stdafx.h"
    #include "ConfigListCtrl.h"
    #include "CellCtrls\ListCtrlCellWnd.h"
    #include "CellCtrls\CellButton.h"
    #include "Windows.h"
    #include "Winuser.h"
    // CConfigListCtrl

    IMPLEMENT_DYNAMIC(CConfigListCtrl, CListCtrl)

    CConfigListCtrl::CConfigListCtrl() : m_bInit(FALSE), m_bCaretExists(FALSE), m_bTabbedIn(FALSE), m_bKeyUp(FALSE), m_bIsEnabled(TRUE)
    
    

    CConfigListCtrl::~CConfigListCtrl()
    
        ForEachCellCtrl(&CConfigListCtrl::DeleteCellCtrl);
    

    BEGIN_MESSAGE_MAP(CConfigListCtrl, CListCtrl)
...
        ON_WM_THEMECHANGED()
...
    END_MESSAGE_MAP()
    ...
    

好像漏掉了一些头文件或者lib文件,但是它们是什么,怎么解决呢?

【问题讨论】:

请出示相关代码。 正确的消息破解者在<afxmsg.h>,但听起来您需要先更新Windows SDK。检查你系统的 afxmsg.h 文件,如果它在里面,你可能没有定义最小的 _WIN32_WINNT 来启用它(这是 0x501,顺便说一句)。 【参考方案1】:

在 VC6 几年之后,Windows XP 首次引入了主题。您将需要更新的 Windows SDK 以及相应的 win....h 文件。

【讨论】:

我是 Windows 编程的新手,但是如何更新“Windows.h”?谢谢! @Ruby 它更新了最新的Windows SDK(如果您对 Metro 不感兴趣,则当前版本为 7.1,如果您有兴趣,则需要尽快去看“特殊”医生)。 @Ruby 它可以在 MFC 6.0 中使用视觉样式。但是,它要求您获得一个新的 SDK 并自己从源代码编译 MFC,并定义 ISOLATION_AWARE_ENABLED。以后会出现编译错误。没什么大不了的,但如果你刚刚开始,这可能有点太多了。

以上是关于“错误 C2065:'ON_WM_THEMECHANGED':未声明的标识符”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章