继承文本框类,响应键盘消息,判断Enter键

解决方案 »

  1.   

    要在ceditDlg重载PreTranslateMessage函数,在插入下列代码试一下: if ((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_RETURN))
    {
    CString str;
    GetDlgItem(IDD_EDITA)->GetWindowText(str);
    GetDlgItem(IDD_EDITB)->SetWindowText(str);//B文本框显示A文本框的字母! 
    m_list.SetItemText(0,1,str);//m_ListCtrl里面输入数据return 1;

      
      

  2.   

    楼上正解
    需要补充的是要通过pMsg参数判断,控件是不是你要操作的控件
      

  3.   

    PreTranslateMessage 捕获感兴趣的处理消息!
      

  4.   

    ES_WANTRETURN 
    Specifies that a carriage return be inserted when the user presses the ENTER key while entering text into a multiline edit control in a dialog box. If you do not specify this style, pressing the ENTER key has the same effect as pressing the dialog box's default push button. This style has no effect on a single-line edit control.
      

  5.   

    1、新建一个类CMyEdit: public CEdit
    2、响应WM_CHAR事件
    void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // TODO: Add your message handler code here and/or call default
    // AfxMessageBox( "go into OnChar()" );
    switch( nChar )
    {
    case VK_RETURN:
    AfxMessageBox( "you pressed return key." );
    break;
    default:
    break;
    } CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
    3、动态创建CMyEdit对象
    CRect rc;
    GetClientRect( &rc );
    //ClientToScreen( &rc );
    //ScreenToClient( &rc );
    CRect rcEdit;
    rcEdit.left = rc.left + 100;
    rcEdit.top = rc.top + 100;
    rcEdit.bottom = rcEdit.top + 100;
    rcEdit.right = rcEdit.left + 300; CMyEdit* cme = new CMyEdit();
    cme->Create( ES_LEFT|ES_MULTILINE, rcEdit, this, 10000 );
    cme->ShowWindow( TRUE );
      

  6.   

    1、新建一个类CMyEdit: public CEdit
    2、响应WM_CHAR事件
    void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // TODO: Add your message handler code here and/or call default
    // AfxMessageBox( "go into OnChar()" );
    switch( nChar )
    {
    case VK_RETURN:
    AfxMessageBox( "you pressed return key." );
    break;
    default:
    break;
    } CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
    3、动态创建CMyEdit对象
    CRect rc;
    GetClientRect( &rc );
    //ClientToScreen( &rc );
    //ScreenToClient( &rc );
    CRect rcEdit;
    rcEdit.left = rc.left + 100;
    rcEdit.top = rc.top + 100;
    rcEdit.bottom = rcEdit.top + 100;
    rcEdit.right = rcEdit.left + 300; CMyEdit* cme = new CMyEdit();
    cme->Create( ES_LEFT|ES_MULTILINE, rcEdit, this, 10000 );
    cme->ShowWindow( TRUE );