我在程序想实现的功能是这样的:在输入框(IDC_ENTER)中输入时按了Enter键后,在前面的输入框中就不再接收数字了,因为数字默认是选择后面IDC_CONTENT中的内容了,并且把选择的IDC_CONTENT中的内容通过SendMessage发送到CDialogResu中显示出来,我现在的问题是:
1.SendMessage()响应不了,因为在里面的第一个参数(dlgResu->m_hWnd)始终是0,不知道是为什么?
2.在按下Enter键后,我的编辑框(IDC_ENTER)还能受到数据,怎么屏蔽他啊?
谢谢!分如果不够我还可以给你加!谢谢!高手帮忙啊!
下面是我的程序!谢谢!//定义
dlgResu=new CDialogResu();//系统函数
BOOL CLzEnterDlg::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN)
{
CString data;
CString strText;
switch(pMsg->wParam)
{
case VK_RETURN:
flag=true;
GetDlgItem(IDC_CONTENT)->SetWindowText(m_strText);
break;
case VK_1:
if(flag)
{
::SendMessage(m_enter.m_hWnd,EM_UNDO,0,0);
//m_enter.GetWindowText(strText);
//m_enter.SetSel(strText.GetLength(),strText.GetLength(),TRUE);
data.Empty();
data=m_strText.Left(2);
::SendMessage(dlgResu->m_hWnd,WM_MY_MESSAGE,0,(LPARAM)(LPCTSTR)data);
}
break;
case VK_2:
if(flag)
{
data.Empty();
data=m_strText.Mid(2,2);
::SendMessage(dlgResu->m_hWnd,WM_MY_MESSAGE,0,(LPARAM)(LPCTSTR)data);
}
break;
case VK_3:
if(flag)
{
data.Empty();
data=m_strText.Mid(4,2);
::SendMessage(dlgResu->m_hWnd,WM_MY_MESSAGE,0,(LPARAM)(LPCTSTR)data);
}
break;
}
}// flag=false; return 0;

// return CDialog::PreTranslateMessage(pMsg);
}

解决方案 »

  1.   

    2.在按下Enter键后,我的编辑框(IDC_ENTER)还能受到数据,怎么屏蔽他啊?
    谢谢!分如果不够我还可以给你加!谢谢!高手帮忙啊!
    下面是我的程序!谢谢!
      

  2.   

    case VK_RETURN:
    flag=true;
    GetDlgItem(IDC_CONTENT)->SetWindowText(m_strText);
                               GetDlgItem(IDC_ENTER)->EnableWindow(FALSE);
                               GetDlgItem(IDC_CONTENT)->SetFocus();
    break;