急问: CListCtrl如何让Header相应鼠标?? CMyListCtrl 继承自CListCtrl,stytle 是 report如何让Header相应鼠标动作?例如LButtonDown?在继承的类中已添加OnLButtonDown(...)响应消息,但是Header没相应,各位高手请帮忙解决,先谢过了!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BEGIN_MESSAGE_MAP(CSortListCtrl, CListCtrl) //{{AFX_MSG_MAP(CSortListCtrl) ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick) //}}AFX_MSG_MAPEND_MESSAGE_MAP()void CSortListCtrl::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult) {......} 我想让 Header 相应OnLButtonDown,Move,Up消息可以吗?谢谢 定义自己的HeaderCtrl类class CSortHeaderCtrl : public CHeaderCtrl{// Construction DECLARE_DYNCREATE(CSortHeaderCtrl).......然后CSortHeaderCtrl m_Header;WND hwnd = ::GetDlgItem(m_cListCtrl.m_hWnd, 0); if (hwnd) { CWnd* pHeader = CWnd::FromHandlePermanent(hwnd); if (pHeader) { if (!pHeader->IsKindOf(RUNTIME_CLASS(CSortHeaderCtrl))) { pHeader->Detach(); m_Header.SubclassWindow(hwnd); } } else m_Header.SubclassWindow(hwnd); }之后处理CSortHeaderCtrl里的消息响应就可以了 非常谢谢你,CSortHeaderCtrl m_Header;WND hwnd = ::GetDlgItem(m_cListCtrl.m_hWnd, 0); if (hwnd) { CWnd* pHeader = CWnd::FromHandlePermanent(hwnd); if (pHeader) { if (!pHeader->IsKindOf(RUNTIME_CLASS(CSortHeaderCtrl))) { pHeader->Detach(); m_Header.SubclassWindow(hwnd); } } else m_Header.SubclassWindow(hwnd); }这段代码是在CMyLisyCtrl的InitDialog中吗?用来替换原来的Header? 放到对话框的OnInitDialog和CMyListCtrl的PreSubclassWindow都可以 如果放到CMyListCtrl的PreSubclassWindow直接HWND hwnd = ::GetDlgItem(m_cListCtrl.m_hWnd, 0);m_Header.SubclassWindow(hwnd);好像就可以:) 好的,多谢。btw:能留个联系方式吗,有什么问题可以请教。 小问题 ID3DXEffect::CommitChanges 具体是干什么的? SQL设置自动编号? tooltip的文本如何显示在上面,而不在右下角 手动添加数据源 如何修改远程注册表 怎样把某个区域填充成渐变色? progress自定义图片 MFC 保存绘图值 请问如何向VC++开发工具中注册网上下载的控件? 菜鸟求助:关于USB的2个问题 XML的必备元素有哪些?
//{{AFX_MSG_MAP(CSortListCtrl)
ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()void CSortListCtrl::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
{
......
}
{
// Construction
DECLARE_DYNCREATE(CSortHeaderCtrl)
.......
然后
CSortHeaderCtrl m_Header;
WND hwnd = ::GetDlgItem(m_cListCtrl.m_hWnd, 0);
if (hwnd)
{
CWnd* pHeader = CWnd::FromHandlePermanent(hwnd);
if (pHeader)
{
if (!pHeader->IsKindOf(RUNTIME_CLASS(CSortHeaderCtrl)))
{
pHeader->Detach();
m_Header.SubclassWindow(hwnd);
}
}
else
m_Header.SubclassWindow(hwnd);
}
之后处理CSortHeaderCtrl里的消息响应就可以了
WND hwnd = ::GetDlgItem(m_cListCtrl.m_hWnd, 0);
if (hwnd)
{
CWnd* pHeader = CWnd::FromHandlePermanent(hwnd);
if (pHeader)
{
if (!pHeader->IsKindOf(RUNTIME_CLASS(CSortHeaderCtrl)))
{
pHeader->Detach();
m_Header.SubclassWindow(hwnd);
}
}
else
m_Header.SubclassWindow(hwnd);
}这段代码是在CMyLisyCtrl的InitDialog中吗?用来替换原来的Header?
直接
HWND hwnd = ::GetDlgItem(m_cListCtrl.m_hWnd, 0);
m_Header.SubclassWindow(hwnd);
好像就可以:)