当双击一个CTreeCtrl中的一个项时,我会创建一个非模态的窗口,然后我想让这个非模态的窗口在主窗口的上面,可是用BringWondowToTop不管用,如下:CDialog *pdlg = new ...;pdlg->create(IDD_XXX, ...);
pdlg->BringWondowToTop();

解决方案 »

  1.   

    CDialog *pdlg = new ...;pdlg->create(IDD_XXX, ...);
    pdlg->ShowWindow(SW_SHOW);
    pdlg->BringWondowToTop();
      

  2.   

    BringWondowToTop只是临时在最上面,当有新窗口打开,或焦点转移到某窗口时,就会被覆盖.
    其实就是普通窗口,只不过一开始在最上面(启动时在最上面).
    由于你的焦点在控件上,所以不会使新建窗口在最上面
      

  3.   

    诚如 fanqing(火影忍者+26%) 所说:我在处理CTreeCtrl控件NM_DBLCLK  Notification时创建的新窗口,所有办法都用了还是不能使新的窗口在初始时就停留在主窗口上面并获得输入焦点.SetForegroundWindow也用了.如何才能使新窗口在刚创建出来时,在主窗口之上呢?或者有什么别的方法来取代CTreeCtrl控件NM_DBLCLK  Notification,只要能处理双击CTreeCtrl控件中一个ITEM的事件并确定双击的项就可以了.
      

  4.   

    放在一些初始化中打开,比如对话框中的initdialog等等(我没试过)
      

  5.   

    [email protected]
    方便的话发给看看
      

  6.   

    我上次也遇到了这样的问题,好像XP下没法解决了,因为一些API的功能与原先98下有一些差别,如SetForegroundWindow等,具体的看最新的MSDN
      

  7.   

    我找到办法了,就是在CTREECTRL的NM_SETFOCUS中调用SetFocus()将输入焦点再赋给主窗口.谢谢各位了.