设成Button按钮样式的属性后,
在单击这些Button时我另外DoModal出一个模态对话框,但这时这个对话框并没有获得焦点?焦点仍然在CTabCtrl控件的Button上,有什么办法让那个模态对话框一弹出来就获得焦点呢?
CTabCtrl在设为默认属性时一弹出该对话框就马上获得了要焦点,但一设成Button样式的属性后就变成以上现象了。

解决方案 »

  1.   

    将那个模态对话框设成child风格试试(如果不行再初始化时强行给它一个this->SetFocus())
      

  2.   

    在模态对话框的 WM_ACTIVE 时,调用 SetFocus()
      

  3.   

    这里有一篇文章,你可以看看:http://www.vckbase.com/document/viewdoc.asp?id=398
      

  4.   

    这种风格的Tab很奇怪。你可以试试ToolBar和CCmdUI::SetRadio。
      

  5.   

    很好办啊BOOL MyDlg::OnInitDialog()
    {
        ...
        GotoDlgCtrl(GetDlgItem( nID )); 
        SetTimer(1, 100, NULL);
        return TRUE;
    }void CMyDlg::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
        KillTimer(nIDEvent);
        SetFocus();
        CDialog::OnTimer(nIDEvent);
    }
    注:nID 为你想得到输入焦点的控件
      

  6.   

    我所指的焦点不是SetFocs()设的键盘的焦点.刚弹出的对话框标题栏是亮的,里面的CEdit控件也获得了焦点。但这时就是不能获取该对话框的消息,要用鼠标点一下界面才能激活它。有什么办法可以让一个对话框变成激活状态啊(能捕获消息)?
      

  7.   

    SetActiveWindow, SetForegroundWindow, BringWindowToTop, SetWindowPos 都试试。
      

  8.   

    如前所示,在OnTimer中调用SetParent(NULL);可以达到你的要求,不过屏幕会闪动,等我找到更好的方法再告诉你
      

  9.   

    哈哈,经过我不懈努力终于解决了,太高兴了
    BOOL CMyDialog::OnInitDialog() 
    {
        CDialog::OnInitDialog();
        
        SetCapture();
        ReleaseCapture();    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
    }
      

  10.   

    是可以了,谢谢 ymbymb,200送上。