gpt4 book ai didi

c++ - WTL 拆分器示例中的调试断言

转载 作者:行者123 更新时间:2023-11-30 05:17:34 29 4
gpt4 key购买 nike

当从 WTL sample 中的主机菜单中单击读取或清除剪贴板时用vs2013编译

CHAIN_COMMANDS_MEMBER(m_wndFormatList) 将消息从主机传递到成员列表控件,但消息为空?

堆栈跟踪:

WTLClipSpy.exe!ATL::CWindowImplRoot<WTL::CListViewCtrlT<ATL::CWindow> ::SetMsgHandled(int bHandled) Line 3213   C++
WTLClipSpy.exe!CClipSpyListCtrl::ProcessWindowMessage(HWND__ * hWnd, unsigned int uMsg, unsigned int wParam, long lParam, long & lResult, unsigned long dwMsgMapID) Line 30 C++
WTLClipSpy.exe!CMainFrame::ProcessWindowMessage(HWND__ * hWnd, unsigned int uMsg, unsigned int wParam, long lParam, long & lResult, unsigned long dwMsgMapID) Line 41 C++

调试输出:

调试断言失败!

程序:...nloads\source\WTL4MFC7_demo\WTLClipSpy.\Debug\WTLClipSpy.exe文件:c:\program files (x86)\microsoft visual studio 12.0\vc\atlmfc\include\atlwin.h线路:3213

表达式:pMsg != 0

最佳答案

这很可能是一个不太流行的 CHAIN_COMMANDS_MEMBER 宏的回归问题。

解决方法可能如下所示:

    //CHAIN_COMMANDS_MEMBER(m_wndFormatList)
if(uMsg == WM_COMMAND)
{
lResult = m_wndFormatList.SendMessage(uMsg, wParam, lParam);
if(lResult == 0)
return TRUE;
}

或者,如果您更喜欢绕过 SendMessage API(有意义),那么您将需要处理链式控件中的 m_pCurrentMsg 初始化。更好但更长的修复。

关于c++ - WTL 拆分器示例中的调试断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42069572/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com