目前有一DialogBar停在主框架上,用鼠标是可焦点转移的,那如何通过点一菜单,使焦点自动转移到DialogBar上的Edit控件上.我的方法,在菜单事件中  ::SetFocus(GetDlgItem(IDD_DIALOGBAR)->m_hHandle);
或是用PostMessege(GetDlgItem(IDD_DIALOGBAR)->m_hHandle,WM_KEYUP,VK_TAB,0);
两者都没能实现,为什么?

解决方案 »

  1.   

    GetDlgItem(IDD_DIALOGBAR)是不对的,IDD_DIALOGBAR是资源id不是ctrlid。
    ::SetFocus(m_wndDialogBar->GetDlgItem(IDC_EDIT));
      

  2.   

    用m_wndDailogBar对象创建的时候指定的ID也是可以的,只不是代码是这样写:
    if (!m_wndMyDialogBar.Create(this, CG_IDD_MYDIALOGBAR,
    CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,
    CG_ID_VIEW_MYDIALOGBAR))
    {
    // fail to create
    }CWnd* pBar = AfxGetMainWnd()->GetDescendantWindow(CG_ID_VIEW_MYDIALOGBAR);
    ASSERT(pBar);
    pBar->GetDlgItem(IDC_EDIT1)->SetFocus();
      

  3.   

    获取到CEdit控件,直接SetFocus()就行了啊!
      

  4.   

    向框架发送鼠标消息,附带CEdit控件内任意点的坐标