VC小技巧匯總之對(duì)話框技巧
本文搜集匯總了VC中關(guān)于對(duì)話框常用的一些技巧,對(duì)于進(jìn)行VC開發(fā)由于一定的參考借鑒價(jià)值。
1.如何修改對(duì)話框的背景色:
在對(duì)話框的OnPaint()函數(shù)中加入下面語句:
CRect rect; GetClientRect(&rect); //計(jì)算對(duì)話框的尺寸 dc.FillSolidRect(&rect,RGB(192,248,202)); //繪制對(duì)話框背景色
2.如何讓彈出式對(duì)話框具有統(tǒng)一的背景色:
在應(yīng)用程序類CxxxApp的InitInstance()函數(shù)中加入下面的語句:
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í),文件沒有打開?
CFileDialog為文件列表設(shè)置有緩沖區(qū),當(dāng)選擇文件過多時(shí),會(huì)造成緩沖區(qū)溢出,造成一些文件沒有被打開。可以采用自定義大緩沖區(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è)來顯示消息框中的按鈕,標(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è)來顯示消息框中的圖標(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è)問題標(biāo)記圖標(biāo)出現(xiàn)在消息框。
MB_ICONSTOP:
MB_ICONERROR:
MB_ICONHAND:一個(gè)停止消息圖標(biāo)出現(xiàn)在消息框。
指定下列標(biāo)志中的一個(gè)來指定缺省的按鈕:標(biāo)志的含義如下。
MB_DEFBUTTON1:第一個(gè)按鈕為缺省按鈕。如果MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4沒有被指定,則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,則消息框沒有擁有窗口。
后三個(gè)參數(shù)與視類的MessageBox相同,但沒有缺省值,必須設(shè)置。
例:
::MessageBox(NULL,m_PathName+"的文字已經(jīng)改變,要存盤嗎?","警告",MB_YESNOCANCEL | MB_ICONWARNING);
上一篇:C++實(shí)現(xiàn)判斷字符串是否回文實(shí)例解析
欄 目:C語言
下一篇:C++實(shí)現(xiàn)的一個(gè)可以寫遞歸lambda的Y函數(shù)
本文標(biāo)題:VC小技巧匯總之對(duì)話框技巧
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3582.html
您可能感興趣的文章
- 01-10異步http listener 完全并發(fā)處理懲罰http懇求的小例子
- 01-10節(jié)序問題:解析大小的端判定
- 01-10基于大端法、小端法以及網(wǎng)絡(luò)字節(jié)序的深入理解
- 01-10探討:用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列(我作為面試官的小結(jié))
- 01-10解決不用sizeof求出int大小的方法
- 01-10C語言數(shù)組指針的小例子
- 01-10c語言在控制臺(tái)判定鼠標(biāo)左鍵的小例子
- 01-10解析四則表達(dá)式的編譯過程及生成匯編代碼
- 01-10C語言運(yùn)算符及其優(yōu)先級(jí)匯總表口訣
- 01-10C語言編程時(shí)常犯十八個(gè)錯(cuò)誤小結(jié)


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什