VC小技巧匯總之對(duì)話框技巧
本文搜集匯總了VC中關(guān)于對(duì)話框常用的一些技巧,對(duì)于進(jìn)行VC開發(fā)由于一定的參考借鑒價(jià)值。
1.如何修改對(duì)話框的背景色:
在對(duì)話框的OnPaint()函數(shù)中加入下面語(yǔ)句:
CRect rect; GetClientRect(&rect); //計(jì)算對(duì)話框的尺寸 dc.FillSolidRect(&rect,RGB(192,248,202)); //繪制對(duì)話框背景色
2.如何讓彈出式對(duì)話框具有統(tǒng)一的背景色:
在應(yīng)用程序類CxxxApp的InitInstance()函數(shù)中加入下面的語(yǔ)句:
SetDialogBkColor( RGB(192,248,202) );
則所有用戶定義的彈出式對(duì)話框都以RGB(192,248,202)為背景色,就不需要逐個(gè)進(jìn)行設(shè)置了。
3.如何讓打開文件對(duì)話框能進(jìn)行多項(xiàng)選擇:
在定制打開文件對(duì)話框時(shí),增加OFN_ALLOWMULTISELECT屬性,就可以使打開文件對(duì)話框進(jìn)行多選了。
如:
CFileDialog m_Dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
| OFN_ALLOWMULTISELECT, NULL, NULL );
之后,用GetStartPosition()函數(shù)獲取選擇的起始文件位置,用GetNextPathName()函數(shù)獲取各位置上的文件名。
如:
if( m_Dlg.DoModal() == IDOK )
{
POSITION pos;
pos = m_Dlg.GetStartPosition();
while( pos )
{
m_Path = m_Dlg.GetNextPathName(pos);
…………
}
}
4.為什么用打開文件對(duì)話框選擇多個(gè)文件到一定數(shù)目時(shí),文件沒(méi)有打開?
CFileDialog為文件列表設(shè)置有緩沖區(qū),當(dāng)選擇文件過(guò)多時(shí),會(huì)造成緩沖區(qū)溢出,造成一些文件沒(méi)有被打開。可以采用自定義大緩沖區(qū)代替系統(tǒng)緩沖區(qū)的方法解決。
如:
CFileDialog m_Dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
| OFN_ALLOWMULTISELECT, NULL, NULL );//定制打開文件對(duì)話框
char* pBuf = new char[20480]; //申請(qǐng)緩沖區(qū)
m_Dlg.m_ofn.nMaxFile = 20480; //讓pBuf代替CFileDialog緩沖區(qū)
m_Dlg.m_ofn.lpstrFile = pBuf;
m_Dlg.m_ofn.lpstrFile[0] = NULL;
…………
delete []pBuf; //回收緩沖區(qū)
5.提示對(duì)話框(MessageBox)
在視類和對(duì)話框類中可使用MFC函數(shù)中用的MessageBox()函數(shù)彈出提示對(duì)話框。這個(gè)函數(shù)原型為:
int MessageBox(LPCTSTR lpszText,LPCTSTR lpsCaption=NULL,UINT nType=MB_OK);
參數(shù):
lpszText 顯示的字符串
lpsCaption 對(duì)話框的標(biāo)題
nType 風(fēng)格,可為如下值的組合:
指定下列標(biāo)志中的一個(gè)來(lái)顯示消息框中的按鈕,標(biāo)志的含義如下。
MB_ABORTRETRYIGNORE:消息框含有三個(gè)按鈕:Abort,Retry和Ignore。
MB_OK:消息框含有一個(gè)按鈕:OK。這是缺省值。
MB_OKCANCEL:消息框含有兩個(gè)按鈕:OK和Cancel。
MB_RETRYCANCEL:消息框含有兩個(gè)按鈕:Retry和Cancel。
MB_YESNO:消息框含有兩個(gè)按鈕:Yes和No。
MB_YESNOCANCEL:消息框含有三個(gè)按鈕:Yes,No和Cancel。
指定下列標(biāo)志中的一個(gè)來(lái)顯示消息框中的圖標(biāo):標(biāo)志的含義如下。
MB_ICONEXCLAMATION:
MB_ICONWARNING:一個(gè)驚嘆號(hào)出現(xiàn)在消息框。
MB_ICONINFORMATION:
MB_ICONASTERISK:一個(gè)圓圈中小寫字母i組成的圖標(biāo)出現(xiàn)在消息框。
MB_ICONOUESTION:一個(gè)問(wèn)題標(biāo)記圖標(biāo)出現(xiàn)在消息框。
MB_ICONSTOP:
MB_ICONERROR:
MB_ICONHAND:一個(gè)停止消息圖標(biāo)出現(xiàn)在消息框。
指定下列標(biāo)志中的一個(gè)來(lái)指定缺省的按鈕:標(biāo)志的含義如下。
MB_DEFBUTTON1:第一個(gè)按鈕為缺省按鈕。如果MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4沒(méi)有被指定,則MB_DEFBUTTON1為缺省值。
MB_DEFBUTTON2;第二個(gè)按鈕為缺省按鈕。
MB_DEFBUTTON3:第三個(gè)按鈕為缺省按鈕。
MB_DEFBUTTON4:第四個(gè)按鈕為缺省按鈕。
例:提示文件是否存盤:
int t; t=MessageBox(m_PathName+"的文字已經(jīng)改變,要存盤嗎?","警告",MB_YESNOCANCEL | MB_ICONWARNING); if(t==0 || t==IDCANCEL) return; if(t==IDYES) OnFileSave();
在文檔類等其它類中不能使用MFC中的MessageBox()函數(shù),只能使用API函數(shù)中的MessageBox()函數(shù):
int MessageBox(HWND hWnd,LPCTSTR lpszText,LPCTSTR lpCaption,UINT UType);
hWnd:標(biāo)識(shí)將被創(chuàng)建的消息框的擁有窗口。如果此參數(shù)為NULL,則消息框沒(méi)有擁有窗口。
后三個(gè)參數(shù)與視類的MessageBox相同,但沒(méi)有缺省值,必須設(shè)置。
例:
::MessageBox(NULL,m_PathName+"的文字已經(jīng)改變,要存盤嗎?","警告",MB_YESNOCANCEL | MB_ICONWARNING);
- C++采用openfilename打開文件對(duì)話框用法實(shí)例
- VC++中HTControl控制類使用之CHTDlgBase對(duì)話框基類實(shí)例
- MFC創(chuàng)建模態(tài)對(duì)話框和非模態(tài)對(duì)話框的方法
- VC MFC非模態(tài)對(duì)話框的實(shí)現(xiàn)方法
- C#使用Word中的內(nèi)置對(duì)話框?qū)嵗?/a>
- C# 調(diào)用API函數(shù)彈出映射網(wǎng)絡(luò)驅(qū)動(dòng)器對(duì)話框問(wèn)題
- CFileDialog的鉤子函數(shù)解決對(duì)話框的多選之DoModal問(wèn)題
- C++基于對(duì)話框的程序的框架實(shí)例
相關(guān)文章
C++ 中約瑟夫環(huán)替換計(jì)數(shù)器m(數(shù)組解決)
這篇文章主要介紹了C++ 中約瑟夫環(huán)替換計(jì)數(shù)器m(數(shù)組解決)的相關(guān)資料,需要的朋友可以參考下2017-05-05
C++實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
c++調(diào)用實(shí)現(xiàn)yolov5轉(zhuǎn)onnx介紹
大家好,本篇文章主要講的是c++調(diào)用實(shí)現(xiàn)yolov5轉(zhuǎn)onnx介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
數(shù)組指針、指針數(shù)組以及二位數(shù)組的深入解析
下面來(lái)講講多維數(shù)組與指針的關(guān)系。與普通數(shù)組一樣,使用多維數(shù)組時(shí),實(shí)際上將其自動(dòng)轉(zhuǎn)換為指向該數(shù)組第一個(gè)元素的指針2013-09-09
C++中如何實(shí)現(xiàn)回調(diào)的方法示例
這篇文章主要給大家介紹了關(guān)于C++中如何實(shí)現(xiàn)回調(diào)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
C++ 回調(diào)接口設(shè)計(jì)和二進(jìn)制兼容詳細(xì)
再開發(fā)視頻編輯 SDK,SDK的回調(diào)接口設(shè)計(jì)成 C 風(fēng)格,結(jié)構(gòu)中放著一些函數(shù)指針,既然對(duì)外接口是 C++,為什么不直接使用 C++ 的虛函數(shù)?這篇文章便對(duì)這一問(wèn)題做個(gè)詳細(xì)介紹,需要的朋友可以參考一下2021-09-09
詳解C語(yǔ)言中的ttyname()函數(shù)和isatty()函數(shù)的用法
這篇文章主要介紹了C語(yǔ)言中的ttyname()函數(shù)和isatty()函數(shù)的用法,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷程序
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
VC++6.0中創(chuàng)建C++項(xiàng)目的實(shí)現(xiàn)步驟
本文主要介紹了VC++6.0中創(chuàng)建C++項(xiàng)目的實(shí)現(xiàn)步驟,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03

