父窗口包含两个Tab页,第一个Tab页驶默认选择的页面,其中包含一个CEdit控件,要求整个对话框初始化后光标自动在CEdit控件中。
注:父窗口中,最低下有两个按钮OK和Cancel。这个OK按钮会自动抢走焦点,CEdit抢不过它。
我已试过设置Tab Order,和SetFocus()都不行。
具体窗口的样子可以参照Windows中任选一个文件夹,单击右键,选择属性(properties)
Tab切换事件中,加入SetFocus()也不可以,我要求的是一初始化CEdit就能抢到焦点

解决方案 »

  1.   

    VC6? 在对话框编辑器里用Ctrl+D将CEdit焦点顺序改为1
      

  2.   

    BOOL OnSetActive( )
    {
      m_edit.SetFocus()
    }
      

  3.   

    重载OnSetActive还是不行,现在主要的问题是CEdit控件和父窗口中的OK按钮抢焦点,但是抢不过OK button,有什么解决办法?
      

  4.   

    楼上的可以
    BOOL OnSetActive( )
    {
      ::SetWindowPos( m_edit.GetSafeHwnd(), NULL, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE );
    }
      

  5.   

    还是不行啊,我的CEdit控件先初始化,然后OK button才初始化,但是OK button的代码我不可以改动(dll中)我只能想办法让CEdit获得焦点
      

  6.   

    一般初始化焦点是在WM_PAINT消息处理函数下调用SetFocus()就可以,你试试在OnPaint()函数下试试.我想应该可以.(在父窗口类)
      

  7.   

    把OK button的属性Styles中default button的勾勾拿掉,然后再使用楼上的就可以了