http://community.csdn.net/Expert/topic/3624/3624615.xml?temp=.6071588一个maindlg中加了一个成员m_dlg;
maindlg.oninidlg()
{
'''
m_Dlg.Create(CLogDlg::IDD, this);
m_Dlg.ShowWindow(TRUE);
          m_Dlg.setfocus();
..
}这样,但是我想使弹出的logon窗口,处于激活状态,怎么实现。??
这个程序:就是一个登陆的界面,现在要求登陆弹出时,处于激活。但是他是个非模式窗口。??

解决方案 »

  1.   

    如果可以的话,可以将程序发到:[email protected]
    我帮你看看!注明帖子的URL!
      

  2.   

    Platform SDK: Windows User Interface 
    Window Station and Desktop Functions
      

  3.   

    你这个窗口和logon窗口不属于同一个desktop,你到sdk里查查这些资料吧
      

  4.   

    是你的登录对话框建错位置,两种方案,第一就像楼上所说,在app的InitInstance()添加登陆对话框的代码,如下
    在BOOL CXXXApp::InitInstance()
    {
    .....
    m_Dlg.Create(CChildTestDlg::IDD, this);
    m_Dlg.ShowWindow(SW_SHOW);
    //m_Dlg.SetFocus();
    ....
    }
    此时主对话框还没有创建,只有登陆对话框出现.
    第二种,就是在你的主对话框的OnInitDialog()函数中,不过此时要采用模式对话框,
    因为你在OnInitDialog()中如果采用非模式对话框,就是SetFocus()也没有用的,因为此时主对话框的OnInitDialog()函数还要继续运行,等到主对话框对象建立以后,焦点自然在主对话框上了,如果想用非模式,那就想办法等你的主对话框建立以后再将你m_dlg 对象SetFocus()。
    在给你做demo,非模式对话框,如果试验成功,再告诉你怎么做
      

  5.   

    ok,解决了,我把demo发给你楼主?有msn吧,[email protected]
      

  6.   

    先讲一下我的思路,我是在OnInitDialog()启动一个线程,然后由这个线程在主对话框对象建立以后给主对话框发个消息,然后主对话框将焦点设置给m_dlg,
      

  7.   

    第一种方法,不行。显示不出来。 那个this也不对呀。、
      

  8.   

    第一种方法,也不能login显示再最前。
      

  9.   

    我说的方法不行?
    我这里测试可是通过的!!用的xp系统vc++6.0。上面说的第一种方法应该让主窗口也是非模式的对话框,先创建主窗口,然后创建login窗口
      

  10.   

    做好的发给我。 [email protected]
      

  11.   

    你最直接的方法响应WM_WINDOWPOSCHANGED事件,做如下处理:
        if ( FALSE == IsTopMost() )
        {
            SetWindowPos( HWND_TOPMOST,
                          0,
                          0,
                          0,
                          0,
                          SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE );
            //Start fix bug 125001  by daniel 2004/09/15
            SetFocus();
        }
      

  12.   

    maindlg.oninidlg()
    {
    '''
    m_Dlg.Create(CLogDlg::IDD, this);
    m_Dlg.ShowWindow(SW_SHOW);
              m_Dlg.setfocus();
    ..
    }
      

  13.   

    呵呵,你应该在OnActive()里创建