對于VC對話框你了解多少呢?你知道如何修改對話框的背景色,如何打開文件對話框能進行多項選擇嗎?下面是小編專門針對VC對話框而整理的內容,那么我們現在就去看看VC對話框技巧介紹。
1.如何修改對話框的背景色:
在對話框的OnPaint()函數中加入下面語句:
CRect rect;GetClientRect(&rect); //計算對話框的尺寸dc.FillSolidRect(&rect,RGB(192,248,202)); //繪制對話框背景色
2.如何讓彈出式對話框具有統一的背景色:
在應用程序類CxxxApp的InitInstance()函數中加入下面的語句:
SetDialogBkColor( RGB(192,248,202) );
則所有用戶定義的彈出式對話框都以RGB(192,248,202)為背景色,就不需要逐個進行設置了。
3.如何讓打開文件對話框能進行多項選擇:
在定制打開文件對話框時,增加OFN_ALLOWMULTISELECT屬性,就可以使打開文件對話框進行多選了。
如:
CFileDialog m_Dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, NULL, NULL );之后,用GetStartPosition()函數獲取選擇的起始文件位置,用GetNextPathName()函數獲取各位置上的文件名。如:if( m_Dlg.DoModal() == IDOK ){ POSITION pos; pos = m_Dlg.GetStartPosition(); while( pos ) { m_Path = m_Dlg.GetNextPathName(pos); ………… }}
4.為什么用打開文件對話框選擇多個文件到一定數目時,文件沒有打開?
CFileDialog為文件列表設置有緩沖區,當選擇文件過多時,會造成緩沖區溢出,造成一些文件沒有被打開。可以采用自定義大緩沖區代替系統緩沖區的方法解決。
如:
CFileDialog m_Dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, NULL, NULL );//定制打開文件對話框char* pBuf = new char[20480]; //申請緩沖區m_Dlg.m_ofn.nMaxFile = 20480; //讓pBuf代替CFileDialog緩沖區m_Dlg.m_ofn.lpstrFile = pBuf;m_Dlg.m_ofn.lpstrFile[0] = NULL;…………delete []pBuf; //回收緩沖區
5.提示對話框(MessageBox)
在視類和對話框類中可使用MFC函數中用的MessageBox()函數彈出提示對話框。這個函數原型為:
int MessageBox(LPCTSTR lpszText,LPCTSTR lpsCaption=NULL,UINT nType=MB_OK);
參數:
lpszText 顯示的字符串
lpsCaption 對話框的標題
nType 風格,可為如下值的組合:
指定下列標志中的一個來顯示消息框中的按鈕,標志的含義如下。
MB_ABORTRETRYIGNORE:消息框含有三個按鈕:Abort,Retry和Ignore。
MB_OK:消息框含有一個按鈕:OK。這是缺省值。
MB_OKCANCEL:消息框含有兩個按鈕:OK和Cancel。
MB_RETRYCANCEL:消息框含有兩個按鈕:Retry和Cancel。
MB_YESNO:消息框含有兩個按鈕:Yes和No。
MB_YESNOCANCEL:消息框含有三個按鈕:Yes,No和Cancel。
指定下列標志中的一個來顯示消息框中的圖標:標志的含義如下。
MB_ICONEXCLAMATION:
MB_ICONWARNING:一個驚嘆號出現在消息框。
MB_ICONINFORMATION:
MB_ICONASTERISK:一個圓圈中小寫字母i組成的圖標出現在消息框。
MB_ICONOUESTION:一個問題標記圖標出現在消息框。
MB_ICONSTOP:
MB_ICONERROR:
MB_ICONHAND:一個停止消息圖標出現在消息框。
指定下列標志中的一個來指定缺省的按鈕:標志的含義如下。
MB_DEFBUTTON1:第一個按鈕為缺省按鈕。如果MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4沒有被指定,則MB_DEFBUTTON1為缺省值。
MB_DEFBUTTON2;第二個按鈕為缺省按鈕。
MB_DEFBUTTON3:第三個按鈕為缺省按鈕。
MB_DEFBUTTON4:第四個按鈕為缺省按鈕。
例:提示文件是否存盤:
int t;t=MessageBox(m_PathName+"的文字已經改變,要存盤嗎?","警告",MB_YESNOCANCEL | MB_ICONWARNING);if(t==0 || t==IDCANCEL) return;if(t==IDYES) OnFileSave();
在文檔類等其它類中不能使用MFC中的MessageBox()函數,只能使用API函數中的MessageBox()函數:
int MessageBox(HWND hWnd,LPCTSTR lpszText,LPCTSTR lpCaption,UINT UType);
hWnd:標識將被創建的消息框的擁有窗口。如果此參數為NULL,則消息框沒有擁有窗口。
后三個參數與視類的MessageBox相同,但沒有缺省值,必須設置。
例:
::MessageBox(NULL,m_PathName+"的文字已經改變,要存盤嗎?","警告",MB_YESNOCANCEL | MB_ICONWARNING);
本文搜集的是關于VC對話框技巧介紹,為大家匯總了VC中關于對話框常用的一些技巧,對于進行VC開發由于一定的參考借鑒價值。
新聞熱點
疑難解答
圖片精選