关于TreeCtrl的一个怪问题.
我单击或者双击对话框A里面的一个CTreeCtrl的时候弹出一个非模态的对话框B,不管B的父窗口是否是原来的A,弹出来后焦点就回到了A.我已经把B调用SetForegroundWindow和SetFocus了,但是就是跑到前面之后立刻失去焦点.然后跑到A的后面去了(如果B的父窗口是桌面的话).
不过,如果我是点右键,弹出菜单,然后点某一项,弹出B,B就可以获得焦点,而且在最前面,弹出的过程是一样的.
为什么会出现这样的现象?
问题点数:50、回复次数:5Top
1 楼flyelf(空谷清音)回复于 2004-08-01 22:13:22 得分 10
设置非模式对话框的父窗口为a就不应该有这个问题啊,可以检查一下代码中setactive,killactive等地方是否有什么特殊的代码Top
2 楼lianglp(寻找黄金分割点)回复于 2004-08-02 08:35:20 得分 30
好象treectrl是有这个问题,实际上是对当用户把焦点传递到对话框窗口上时又单击了树控件,所以就出现了那样。也就是说执行双击处理事件比树控件本身的第二次单击还要早Top
3 楼豆腐()回复于 2004-08-02 09:31:27 得分 10
楼上的正解!
Top
4 楼heweixing_77(何足道)回复于 2004-08-02 17:07:18 得分 0
TO flyelf(空谷清音)
我试过的,让父窗口是A,尽管B在A的前面,但是还是没有焦点.
TO lianglp()
我一直在纳闷着,CListCtrl就不会,双击,新窗口会在最前面,而且有焦点.不管父窗口是否是A.
有没有解决方法呢?Top
5 楼heweixing_77(何足道)回复于 2004-08-02 17:28:08 得分 0
难道只能用最笨的方法:
在OnInitDialog里面设置定时,50ms之后,把窗口提前和设置焦点.
真是晕.Top




