winxp vc++6 MFC listctrl 双击不响应

.h
afx_msg void OnDblClk(NMHDR* pNMHDR, LRESULT* pResult);

.cpp
ON_NOTIFY(NM_DBLCLK, IDC_LIB_TEXT_LIST, OnDblClk)

void CTextLibDlg::OnDblClk(NMHDR* pNMHDR, LRESULT* pResult)
{
m_nTreeListIndex=-1;
CWnd cwnd;
cwnd.GetDlgItem(IDD_PRO_LABEL_PAGE);
m_hWnd=NULL;
m_hWnd=cwnd.GetSafeHwnd();
if (m_hWnd!=NULL)//判断标签窗口是否打开 多个相同ID对话框打开无效,需要父句柄
{

NMITEMACTIVATE* p = ( NMITEMACTIVATE* )pNMHDR;
UINT nState = m_TextList.GetItemState ( p->iItem, STATE_TREE_MASK );
if (( nState & STATE_ROOT_COLLAPSE ) == STATE_ROOT_COLLAPSE||
(nState & STATE_ROOT_EXPAND ) == STATE_ROOT_EXPAND)
{
m_nTreeListIndex++;
for (int i=0;i<nState;i++)
{
if ( ( nState & STATE_ROOT_COLLAPSE ) == STATE_ROOT_COLLAPSE||
(nState & STATE_ROOT_EXPAND ) == STATE_ROOT_EXPAND)
m_nTreeListIndex++;
}

    }

//  CTextLibDlg::OnDestroy();
}   

}

2个回答

写个最简单的,比如messagebox,看执行么?还不执行,就是你消息映射的问题,重新用classwizard映射。看你关联的是哪个的双击,是listctrl么
如果可以触发,那么检查你代码逻辑了。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复houchantang7015: vc++ 6.0的话,ctrl+shift+w,打开类向导(classwizard)
大约一年之前 回复
houchantang7015
随风飘荡012 想起来了 treelist类添加过了双击响应函数了 ,我怎么在Dlg类引用这个函数添加新的功能 对C++不太熟悉
大约一年之前 回复
 afx_msg void OnNMDblclkListInfo(NMHDR *pNMHDR, LRESULT *pResult);

BEGIN_MESSAGE_MAP(CCInstallDlg, CDialog)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
    ON_NOTIFY(NM_DBLCLK, IDC_LIST_INFO, &CCInstallDlg::OnNMDblclkListInfo)
END_MESSAGE_MAP()

void CCInstallDlg::OnNMDblclkListInfo(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码
    *pResult = 0;
}
houchantang7015
随风飘荡012 多谢 但问题不在这里 是系统自动把消息分配到TreeList类双击函数里,想用PretranslateMessage拦截下来,消息发到Dialog里,但是不知道怎么写代码,
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!