程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> VC小技能匯總之對話框技能

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

編輯:關於C++

VC小技能匯總之對話框技能。本站提示廣大學習愛好者:(VC小技能匯總之對話框技能)文章只能為提供參考,不一定能成為您想要的結果。以下是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);
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved