我现在有两个类
一个是ceditDlg,一个是CMyEdit,
CMyEdit是cedit的一个派生类,为了重载函数PreTranslateMessage,
我现在要处理的就是 回车后让cedit控件的位置发生改变,但是,我的控件在ceditDlg里,请问怎么样获得这个控件啊

解决方案 »

  1.   

    先用类向导为Edit控件关联一个变量,然后在对话框的头文件中将控件的类名由CEdit改为CMyEdit。
      

  2.   

    Msg结构里就有控件的ID和窗口句柄
    WM_KEYDOWN
    VK_RETURN
      

  3.   

    要在ceditDlg重载PreTranslateMessage函数,在插入下列代码: if ((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_RETURN)) 
        pMsg->wParam = VK_TAB;
      

  4.   

    是的,我就是这样定义的:CMyEdit* m_pEdit;
    但是我现在要处理回车,必然代码得写到CMyEdit类的PreTranslateMessage里面对吧,我要设置m_pEdit的位置,肯定要先获得它,我现在是不知道怎么获得?
      

  5.   

    大家似乎还没太明白我的意思,现在有A(ceditDlg)和B(CMyEdit)两个类,我在B(CMyEdit)里重载了cedit的PreTranslateMessage,所以代码要写到PreTranslateMessage里面
    BOOL CMyEdit::PreTranslateMessage(MSG* pMsg)
    {
    // TODO: 在此添加专用代码和/或调用基类 if (pMsg->message == WM_KEYDOWN)
    {
    if (pMsg->wParam == VK_RETURN)
    {
    GetWindowText(strEditValue);
    //这里添加代码。
    return true;
    }
    } return CEdit::PreTranslateMessage(pMsg);
    }怎么获得另一个类(A)里定义的CMyEdit* m_pEdit
      

  6.   

    如果是在CMyEdit类的PreTranslateMessage里改变控件的位置,就不用获取它的,直接调用(this->)MoveWindow就行了。
      

  7.   


    就是这位大哥说的啊if ((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_RETURN)) 
    {
        m_pEdit->MoveWindow....//在这里面移动就好了吧
    }不需要  写到CMyEdit类的PreTranslateMessage的
      

  8.   

    能解释一下为什么不用写到CMyEdit里吗?
      

  9.   

    怎么获得另一个类(CA)里定义的CMyEdit* m_pEdit
    ====================
    CA *p=(CA *)GetParent();
    p->m_pEdit   ;
      

  10.   


    CMyEdit* m_pEdit 你这个是定义在哪里的啊
    是不是 ceditDlg 里
    如果是的话那就直接移动了啊
      

  11.   

    如果是在CMyEdit类的PreTranslateMessage里改变控件的位置,就不用获取它的,直接调用(this->)MoveWindow就行了。
    ————————————————————————————————————————————————————————————————————————————————————————————————————————————同意。
      

  12.   

    在ceditDlg的PreTranslateMessage处理就是了?