怎么样设置一个对话框为非模式对话框,并且让它在程序里显示出来 如题,还有要做像flashget那样的悬浮窗口,总在最前面应该怎么做??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CDXXXDlg dlg;//全局变量或类成员dlg.Create(IDD_XXXX);dlg.ShowWindow(SW_RESTORE); //非模态对话框的显示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 1. CMyDialog mydialog mydialog.Create(IDD_MYDIALOG); mydialog.ShowWindow(SW_SHOW);2. 用 HWND_TOPMOST 参数调用 SetWindowPos CXXXDlg dlg;dlg.Create(IDD_XXX); //你的对话框的IDdlg.ShowWindow(SW_SHOWNORMAL); //显示出来//注意, 对话框关闭时用dlg.DestoryWindow();窗体总在最前用dlg.SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); 如何创建和使用无模式对话框 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 ) ;} CMyDialog mydialog mydialog.Create(IDD_MYDIALOG); mydialog.ShowWindow(SW_SHOW);创建SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);就可以放在最上面了 菜鸟提问:关于重复定义的问题! 旷世难题>破VISTA系统的注册表权限问题 ProgIDFromCLSID测试,为什么打印出来总是"E"? 如何读取摄像头中的raw数据 【long l = 123456789, 用CString 的Format怎么变成串"123,456,789" ?】 我倒分,,,, 如何调试WIN32应用程序,使其在Output窗口输出调试信息??? 【急】 怎么使OnDraw默认将视图区刷成黑色?急! 关于MFC及Win32的问题 郁闷 ◆◆◆ BCMenu 的 GetSubBCMenu的问题…! 关于VSS
dlg.Create(IDD_XXXX);
dlg.ShowWindow(SW_RESTORE);
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
mydialog.Create(IDD_MYDIALOG);
mydialog.ShowWindow(SW_SHOW);2. 用 HWND_TOPMOST 参数调用 SetWindowPos
dlg.Create(IDD_XXX); //你的对话框的ID
dlg.ShowWindow(SW_SHOWNORMAL); //显示出来//注意, 对话框关闭时用
dlg.DestoryWindow();窗体总在最前用dlg.SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
个对话需要几个额处的步骤。首先,使用资源编辑器建立对话资源并使用
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 ) ;
}
mydialog.Create(IDD_MYDIALOG);
mydialog.ShowWindow(SW_SHOW);
创建
SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);就可以放在最上面了