houchantang7015
随风飘荡012
采纳率46.7%
2018-09-21 02:46

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条回答

  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 3年前

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

    点赞 评论 复制链接分享
  • shen_wei shen_wei 3年前
     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;
    }
    
    点赞 1 评论 复制链接分享