日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

模态对话框的父窗口设置

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模态对话框的父窗口设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我的畢業設計基本是搞完了,那么最近幾天在做一些測試和修改。其中就有一個問題折騰了我好久,今天才發現,原來是這么回事。

我創建了一個非模態的子對話框,然后在這個子對話框中又創建了一個模態對話框,結果意外的是點擊按鈕彈出這個模態對話框時,原父對話框被至于前臺了,即父對話框的父對話框被置于前臺了,而不是父對話框被至于前臺。具體看圖:

   最下面黑色背景的是我的父窗口,前臺的是一個非模態的子對話框,此時,子對話框在前臺

     然后我準備下載文件,即將彈出一個保存文件的模態對話框

    點擊下載后彈出的了保存文件模態對話框,但是原父窗口被彈出來置于前臺了。


我所期待的應該是彈出了保存對話框,但是應該是在哪個FTP 客戶端上才對啊!
其實原因很簡單,我們習慣創建模態對話框都是這樣操作的:

CNewDlg * pmydlg=new CNewDlg();
if(pmydlg->DoModal()==IDOK)
{ //如何如何
}

注意上面定義CNewDlg * pmydlg=new CNewDlg();的同時也是構造了該對象,那么其實并不完整,因為沒有指定它的父對話框,默認就變成了原父對話框,所以會出現上面的問題,那么如何解決呢?很簡單,修改一下就OK了.

CNewDlg * pmydlg=new CNewDlg(this);

執行后就是下面的效果:

OK,至此。接下來引用別人的CFileDialog使用總結。

CFileDialog經常用,但經常忘,現歸納整理下,方便今后查詢。

例子:

CFileDialog openDlg( TRUE, “Material File(.material)|.material”, NULL,

   OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"Material File(*.material)|*.material||", this);

CFileDialog構造函數原型如下:

CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL,

    LPCTSTR lpszFileName = NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );

參數意義如下:
bOpenFileDialog 為TRUE則顯示打開對話框,為FALSE則顯示保存對話文件對話框。

lpszDefExt 指定默認的文件擴展名。

lpszFileName 指定默認的文件名。

dwFlags 指明一些特定風格。 (默認OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT)

lpszFilter 指明可供選擇的文件類型和相應的擴展名。

pParentWnd 為父窗口指針。

其中,擴展名應遵循下面的格式:

“Chart Files (.xlc)|.xlc| Worksheet Files (.xls)|.xls| Data Files (.xlc;.xls)|.xlc ; .xls| All Files (.)|.||”;

文件類型說明和擴展名間用 | 分隔,同種類型文件的擴展名間可以用 ; 分割,每種文件類型間用 | 分隔,末尾用 || 指明。

CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目錄名和擴展名如:c:/test/test1.txt

CString CFileDialog::GetFileName( ) 得到完整的文件名,包括擴展名如:test1.txt

CString CFileDialog::GetExtName( ) 得到完整的文件擴展名,如:txt

CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目錄名和擴展名如:test1

POSITION CFileDialog::GetStartPosition( ) 對于選擇了多個文件的情況得到第一個文件位置。

CString CFileDialog::GetNextPathName( POSITION& pos ) 對于選擇了多個文件的情況得到下一個文件位置,同時返回當前文件名。但必須已經調用過POSITION CFileDialog::GetStartPosition( )來得到最初的POSITION變量。

需要注意的是,用了CFileDialog之后,會把程序的當前路徑設置成選中文件的路徑
所以,如果程序里有用到IO訪問或者數據庫訪問之類的本地操作時,需要注意你的當前路徑
用相對路徑的話就不是原來你的程序路徑了,切記!

                         ok,拙見,小記!

總結

以上是生活随笔為你收集整理的模态对话框的父窗口设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。