首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >永远不要通知HDN_TRACK消息CListCtrl的CHeaderCtrl

永远不要通知HDN_TRACK消息CListCtrl的CHeaderCtrl
EN

Stack Overflow用户
提问于 2021-08-02 04:08:29
回答 2查看 193关注 0票数 1

我想从listCtrl的头捕获HDN_TRACK消息,但它从未被通知过。

我测试了HDN_BEGINTRACKHDN_ENDTRACK,它们运行得很好。

我还将消息映射的控制Id更改为IDC_TEST_LIST0,没有区别--它仍然不起作用。

我搜索了很多论坛,但没有找到任何解决办法。

这是我的测试代码。

代码语言:javascript
运行
复制
BEGIN_MESSAGE_MAP(CDlgTest, CDialogEx)
    //ON_NOTIFY(HDN_BEGINTRACK, 0, &CDlgTest::OnTrackListTest) // WORKING!!
    //ON_NOTIFY(HDN_ENDTRACK, 0, &CDlgTest::OnTrackListTest) // WORKING!!
    //ON_NOTIFY(HDN_TRACK, IDC_TEST_LIST, &CDlgTest::OnTrackListTest) // NOT WORKING
    ON_NOTIFY(HDN_TRACK, 0, &CDlgTest::OnTrackListTest)   // NOT WORKING
END_MESSAGE_MAP()


void CDlgTest::OnTrackListLog(NMHDR* pNMHDR, LRESULT* pResult)
{
    LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
    // TODO: Add your control notification handler code here

    AfxMessageBox(L"Hello!!!");     // >>>>>>>>>>> NOT showing up

    *pResult = 0;
}


class CDlgTest : public CDialogEx {
    
public:
    afx_msg void OnTrackListLog(NMHDR* pNMHDR, LRESULT* pResult);
}

我附上了我访问过的一些论坛:

接下来我能试试什么?

EN

Stack Overflow用户

发布于 2021-08-24 19:02:17

首先,尝试HDN_TRACKAHDN_TRACKW而不是HDN_TRACK,看看这些方法是否有效。通常,根据项目设置,HDN_TRACK被正确地定义为两者之一,但最好两者都尝试。

此外,在带有找到样式集的列表控件发送HDN_ITEMCHANGING而不是HDN_TRACK通知的i-net和HDN_TRACK上搜索了一些信息。这篇文章可以追溯到2004年!

因此,您可以尝试删除该样式(如果这对您来说还行),也可以尝试捕获HDN_ITEMCHANGING通知。可以通过更改初始创建样式(如果是以编程方式创建)、更改资源文件(如果使用对话框资源创建)更改资源文件(或使用属性编辑器),或者在创建后调用GetWindowLong()/SetWindowLong()来设置或删除该样式。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68616247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档