CYSpringProDlg *pDlg = (CYSpringProDlg *)(this->GetOwner());

解决方案 »

  1.   

    或者你直接构造edit的时候把CYSpringProDlg *指针传过去 或者把那个变量的引用传过去...
      

  2.   


    这句和CYSpringProDlg *pDlg = (CYSpringProDlg *)(this->GetParent());有差吗?
    试了还是不行
      

  3.   

    或者怎样才能在对话框里响应CEDIT的响应函数
      

  4.   

    你的CEdit双击响应函数是采用哪种方式实现的
      

  5.   


    你不用重载cedit 你只在资源编辑里就可以响应edit的双击到对话框的成员函数啊 就想双击按钮一样啊...
      

  6.   


    你不用重载cedit 你只在资源编辑里就可以响应edit的双击到对话框的成员函数啊 就想双击按钮一样啊...if(!m_EditICRom.Create(dwStyle,rectDummy,&m_wndTabs,2))
      return -1;
    我的EDIT是这样创建的,不是在资源视图里编辑的,所以不能在资源里双击
      

  7.   

    CYSpringProDlg 重载PreTranslateMessage
    BOOL CYSpringProDlg ::PreTranslateMessage(MSG* pMsg)
    {
        if (pMsg->message==WM_LBUTTONDBCLICK && pMsg->hwnd == m_EditICRom.GetSafeHwnd())
        {
            // 新建edit被双击
            ...
        }
        
        return CDialog::PreTranslateMessage(pMsg);
    }
      

  8.   


    解决了,但是执行return ClxDialog::PreTranslateMessage(pMsg);这个总是出错,代码如下:
    BOOL CYSpringProDlg::PreTranslateMessage(MSG* pMsg)
    {
    // TODO: 在此添加专用代码和/或调用基类
    if (pMsg->message==WM_LBUTTONDBLCLK && pMsg->hwnd == m_EditICRom.GetSafeHwnd())
        {
            // 新建edit被双击
    CPoint Point = GetCaretPos(); 
    int n = m_EditICRom.CharFromPos(Point); 
    int nLineIndex = HIWORD(n); 
    int nCharIndex = Point.x/64;  CDlgEditData DlgEditData;
    if(DlgEditData.DoModal() == IDOK)
    {
    int adr = nLineIndex*0x8+nCharIndex;
    int Data = Toint(DlgEditData.m_NewValue,16);
    ROMBuffer[adr*2] = Data&0xFF;
    ROMBuffer[adr*2+1] = Data>>8;
    }
        }
    if(::TranslateAccelerator(GetSafeHwnd(),hAccel,pMsg))   
            return   true;  return ClxDialog::PreTranslateMessage(pMsg);
    }
      

  9.   

    加了个return TRUE,搞定!BOOL CYSpringProDlg::PreTranslateMessage(MSG* pMsg)
    {
    // TODO: 在此添加专用代码和/或调用基类

    if(::TranslateAccelerator(GetSafeHwnd(),hAccel,pMsg))   
            return   true; 
    if (pMsg->message==WM_LBUTTONDBLCLK && pMsg->hwnd == m_EditICRom.GetSafeHwnd())
        {
            // 新建edit被双击
    CPoint Point = GetCaretPos(); 
    int n = m_EditICRom.CharFromPos(Point); 
    int nLineIndex = HIWORD(n); 
    int nCharIndex = Point.x/64;  CDlgEditData DlgEditData;
    if(DlgEditData.DoModal() == IDOK)
    {
    m_EditICRom.ReplaceSel(DlgEditData.m_NewValue,0);
    int adr = nLineIndex*0x8+nCharIndex;
    int Data = Toint(DlgEditData.m_NewValue,16);
    ROMBuffer[adr*2] = Data&0xFF;
    ROMBuffer[adr*2+1] = Data>>8;
    }
    return true;
        }
    return ClxDialog::PreTranslateMessage(pMsg);
    }