a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

VC小技巧匯總之對話框技巧

2020-01-26 15:27:56
字體:
供稿:網(wǎng)友

本文搜集匯總了VC中關(guān)于對話框常用的一些技巧,對于進行VC開發(fā)由于一定的參考借鑒價值。

1.如何修改對話框的背景色:

在對話框的OnPaint()函數(shù)中加入下面語句:

CRect rect;GetClientRect(&rect);   //計算對話框的尺寸dc.FillSolidRect(&rect,RGB(192,248,202));  //繪制對話框背景色

2.如何讓彈出式對話框具有統(tǒng)一的背景色:

在應(yīng)用程序類CxxxApp的InitInstance()函數(shù)中加入下面的語句:

SetDialogBkColor( RGB(192,248,202) );

則所有用戶定義的彈出式對話框都以RGB(192,248,202)為背景色,就不需要逐個進行設(shè)置了。

3.如何讓打開文件對話框能進行多項選擇:

在定制打開文件對話框時,增加OFN_ALLOWMULTISELECT屬性,就可以使打開文件對話框進行多選了。
如:

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.為什么用打開文件對話框選擇多個文件到一定數(shù)目時,文件沒有打開?

CFileDialog為文件列表設(shè)置有緩沖區(qū),當(dāng)選擇文件過多時,會造成緩沖區(qū)溢出,造成一些文件沒有被打開??梢圆捎米远x大緩沖區(qū)代替系統(tǒng)緩沖區(qū)的方法解決。
如:

CFileDialog m_Dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT    | OFN_ALLOWMULTISELECT, NULL, NULL );//定制打開文件對話框char* pBuf = new char[20480];    //申請緩沖區(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.提示對話框(MessageBox)

在視類和對話框類中可使用MFC函數(shù)中用的MessageBox()函數(shù)彈出提示對話框。這個函數(shù)原型為:

int MessageBox(LPCTSTR lpszText,LPCTSTR lpsCaption=NULL,UINT nType=MB_OK);

參數(shù):
lpszText 顯示的字符串
lpsCaption 對話框的標(biāo)題
nType 風(fēng)格,可為如下值的組合:
指定下列標(biāo)志中的一個來顯示消息框中的按鈕,標(biāo)志的含義如下。
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。
指定下列標(biāo)志中的一個來顯示消息框中的圖標(biāo):標(biāo)志的含義如下。
MB_ICONEXCLAMATION:
MB_ICONWARNING:一個驚嘆號出現(xiàn)在消息框。
MB_ICONINFORMATION:
MB_ICONASTERISK:一個圓圈中小寫字母i組成的圖標(biāo)出現(xiàn)在消息框。
MB_ICONOUESTION:一個問題標(biāo)記圖標(biāo)出現(xiàn)在消息框。
MB_ICONSTOP:
MB_ICONERROR:
MB_ICONHAND:一個停止消息圖標(biāo)出現(xiàn)在消息框。

指定下列標(biāo)志中的一個來指定缺省的按鈕:標(biāo)志的含義如下。

MB_DEFBUTTON1:第一個按鈕為缺省按鈕。如果MB_DEFBUTTON2,MB_DEFBUTTON3,MB_DEFBUTTON4沒有被指定,則MB_DEFBUTTON1為缺省值。
MB_DEFBUTTON2;第二個按鈕為缺省按鈕。
MB_DEFBUTTON3:第三個按鈕為缺省按鈕。
MB_DEFBUTTON4:第四個按鈕為缺省按鈕。

例:提示文件是否存盤:

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)識將被創(chuàng)建的消息框的擁有窗口。如果此參數(shù)為NULL,則消息框沒有擁有窗口。
后三個參數(shù)與視類的MessageBox相同,但沒有缺省值,必須設(shè)置。
例:

::MessageBox(NULL,m_PathName+"的文字已經(jīng)改變,要存盤嗎?","警告",MB_YESNOCANCEL | MB_ICONWARNING);
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 99精品欧美一区二区三区综合在线 | 亚洲天堂久久 | 午夜免费影院 | 中文字幕在线不卡视频 | 污网站观看 | 亚洲怡红院在线 | 九色一区 | 久久人人爽人人爽 | 欧美日本韩国一区二区 | 污网站在线免费 | 国产片网站 | 国产ts余喵喵和直男多体位 | 欧美韩一区二区 | 午夜影院免费 | 午夜影院免费版 | 国产精品一区二区三区麻豆 | 狠狠躁夜夜躁人人爽天天高潮 | 亚洲欧美影院 | 99免费精品 | 在线看亚洲 | 亚洲精品aaa| 色播99| 中文无码久久精品 | 国产精品99久久久久久动医院 | 欧美综合国产精品久久丁香 | 午夜激情电影在线 | 一本大道久久a久久精二百 羞羞视频在线观免费观看 国产第一区在线观看 | 国产综合精品 | av片免费| 波多野结衣一区二区三区高清 | 在线观看精品自拍私拍 | 中文字幕第6页 | 国产精品毛片一区视频播 | 特黄级国产片 | 国产精品久久一区二区三区 | 久久久99精品免费观看 | 日韩一区二区不卡 | 国产美女高潮 | 欧美日韩亚洲视频 | 午夜私人影院在线观看 | 国产一区二区不卡视频 |