小生最近用VC做一项目,在视图上有一些按钮模拟键盘,当用鼠标点击这些按钮时,向视图中弹出的一对话框进行键盘模拟操作,现在问题有两个:
第一:我向窗口发TAB键消息时,对话框上的焦点没有移动。但是一般的可显字符的输入都可以实现。
第二:我想通过按下视图中的字母按钮完成汉字全拼输入法,在对话框的输入框中键入汉字。不依赖键盘,能否实现,如果能实现,如何实现?我对按键消息的处理代码如下:
BOOL CInfoProcessorSimView::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
if (((CMainFrame*)GetParentFrame())->pGCSPSDlg!=NULL)

if (pMsg->message==WM_LBUTTONDOWN)
{   switch (m_ButtonID)//确定按下哪个按钮
{     
  
              case 1: 
          
      ((CMainFrame*)GetParentFrame())->pGCSPSDlg->GetDlgItem(IDC_GCSPS_EDIT1)->SetFocus();//让对话框中输入控件得到焦点
          pMsg->hwnd=((CMainFrame*)GetParentFrame())->pGCSPSDlg->GetDlgItem(IDC_GCSPS_EDIT1)->GetSafeHwnd();//将消息发送到该控件上
          pMsg->message=WM_CHAR;
          pMsg->wParam=VK_TAB;
          pMsg->lParam=0;
          break;
  
  case 2:
  ((CMainFrame*)GetParentFrame())->pGCSPSDlg->GetDlgItem(IDC_GCSPS_EDIT1)->SetFocus();
  pMsg->hwnd=((CMainFrame*)GetParentFrame())->pGCSPSDlg->GetDlgItem(IDC_GCSPS_EDIT1)->GetSafeHwnd();
  pMsg->message=WM_CHAR;
  pMsg->wParam=0x62;
  pMsg->lParam=0;
  break;   case 3:
      ((CMainFrame*)GetParentFrame())->pGCSPSDlg->GetDlgItem(IDC_GCSPS_EDIT1)->SetFocus();
      pMsg->hwnd=((CMainFrame*)GetParentFrame())->pGCSPSDlg->GetDlgItem(IDC_GCSPS_EDIT1)->GetSafeHwnd();
      pMsg->message=WM_CHAR;
      pMsg->wParam=0x63;
      pMsg->lParam=0;
      break;              case 4:
     ((CMainFrame*)GetParentFrame())->pGCSPSDlg->GetDlgItem(IDC_GCSPS_EDIT1)->SetFocus();
     pMsg->hwnd=((CMainFrame*)GetParentFrame())->pGCSPSDlg->GetDlgItem(IDC_GCSPS_EDIT1)->GetSafeHwnd();
     pMsg->message=WM_CHAR;
     pMsg->wParam=0x64;
     pMsg->lParam=0;
     break;   case 5:
  break;   
  
}


}
}
return CFormView::PreTranslateMessage(pMsg);
}
其中m_ButtonID是一全局变量用来确定按下哪个按钮,我好像发给窗体的TAB键消息对方没有响应,我的整个程序框架是基于MFC的单文档方式。求教各位大虾,指点迷津。关注中。