如题,还有要做像flashget那样的悬浮窗口,总在最前面应该怎么做???

解决方案 »

  1.   

    CDXXXDlg dlg;//全局变量或类成员
    dlg.Create(IDD_XXXX);
    dlg.ShowWindow(SW_RESTORE);
      

  2.   

    //非模态对话框的显示
    1.在工程中添加一个新的对话框资源,ID为 IDD_DLALOG12.打开Class Wizard 为对话框建立一个新的类 CDialog13.在要调用(显示)模态对话框的类中为对话框添加一成员变量
    private:
        CDialog1 dlg;4.对话框的调用
        if(dlg.GetSafeHwnd()==0)  //保证程序只能创建一个对话框
        dlg.Create(IDD_DIALOG1,this);
        dlg.ShowWindow(SW_SHOW);      对话框的关闭
            dlg.DestroyWindow(); 
    //"Always On Top" 对话框
    在 InitInstance 函数中加上下面的代码:
    SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);  //OnTopSetWindowPos(&CWnd::wndNoTopMost ,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);  //NoOnTop
      

  3.   

    1. CMyDialog mydialog
       mydialog.Create(IDD_MYDIALOG);
       mydialog.ShowWindow(SW_SHOW);2. 用 HWND_TOPMOST 参数调用 SetWindowPos
      

  4.   

    CXXXDlg dlg;
    dlg.Create(IDD_XXX); //你的对话框的ID
    dlg.ShowWindow(SW_SHOWNORMAL); //显示出来//注意, 对话框关闭时用
    dlg.DestoryWindow();窗体总在最前用dlg.SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
      

  5.   

    如何创建和使用无模式对话框    MFC将模式和无模式对话封装在同一个类中,但是使用无模式对话需要几
    个对话需要几个额处的步骤。首先,使用资源编辑器建立对话资源并使用
    ClassWizard创建一个CDialog的派生类。模式和无模式对话的中止是不一样的:
    模式对话通过调用CDialog : : EndDialog 来中止,无模式对话则是调用
    CWnd: : DestroyWindow来中止的,函数CDialog : : OnOK和CDialog : : OnCancel
    调用EndDialog ,所以需要调用DestroyWindow并重置无模式对话的函数。
    void CSampleDialog : : OnOK ( )
    {
        // Retrieve and validate dialog data .
        if (! UpdateData (TRUE) )
        {
            // the UpdateData rountine will set focus to correct item
            TRACEO (" UpdateData failed during dialog termination .\n") ;
            return ;
        }    //Call DestroyWindow instead of EndDialog .
        DestroyWindow ( ) ;
    }void CSampleDialog : : OnCancel ( )
    {
        //Call DestroyWindow instead of EndDialog .
        DestroyWindow ( ) ;
    }
        其次,需要正确删除表示对话的C++对象。对于模式对来说,这很容易,需要创
    建函数返回后即可删除C++对象;无模式对话不是同步的,创建函数调用后立即返回,
    因而用户不知道何时删除C++对象。撤销窗口时工作框调用CWnd : : PostNcDestroy,
    可以重置该函数并执行清除操作,诸如删除this指针。
    void CSampleDialog : : PostNcDestroy ( )
      {
        // Declete the C++ object that represents this dialog .
        delete this ;
    }
        最后,要创建无模式对话。可以调用CDialog : : DoModal创建一个模式对放,
    要创建一个无模式对话则要调用CDialog: : Create。下面的例子说明 了应用程序
    是如何创建无模式对话的:
    void CMainFrame : : OnSampleDialog  ( )
    {
                                                                                  
        // Declete the C++ object that represents this dialog .
        delete this ;
    }
        最后,要创建无模式对话。可以调用CDialog : : DoModal创建一个模式对放,
    要创建一个无模式对话则要调用CDialog: : Create。下面的例子说明 了应用程序
    是如何创建无模式对话的:
    void CMainFrame : : OnSampleDialog  ( )
        //Allocate a modeless dialog object .
        CSampleDilog * pDialog =new CSampleDialog ;
        ASSERT_VALID (pDialog) ;    //Create the modeless dialog .
        BOOL bResult = pDialog —> Creste (IDD_IDALOG) ;
        ASSERT (bResult ) ;
    }
      

  6.   

    CMyDialog mydialog
       mydialog.Create(IDD_MYDIALOG);
       mydialog.ShowWindow(SW_SHOW);
    创建
    SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);就可以放在最上面了