VC++60 第七章 消息框的四種樣式

第七章 消息框的四種樣式

 

在前幾章中我們多次用到消息框,但都是最簡單的樣式,即只有一個【確定】按鈕的形式。但是VC++給消息框提供了四種不同的形式,本章介紹這四種不同的形式的設計方法。

 

本章要點

1 四種消息框的的設計方法
2 函數的重載

 

7.1 MessageBox()函數的三種格式

 

MessageBox()函數可以有一到三個參數,因此它有四種格式,它們是

1)MessageBox(String)
2)MessageBox(String,String1)
3)MessageBox(String,String1, const)

格式1的參數是字符串,表示要顯示的消息。格式2的兩個參數都是字符串,表示消息和標題。格式3的參數const是整數常量,它表示要顯示的按鈕樣式和圖標樣式。圖chap07-01是四種樣式之一,它使用了YES-NO按鈕和感嘆號圖標。按鈕上的文字出現漢字是因爲我的VC系統是漢字版的,英文版的就是[YES]和[NO]。

 

VC++60 <wbr>第七章 <wbr>消息框的四種樣式

在C++中,函數名相同但功能不同的語言現象叫做函數的重載。函數重載就是它們的參數表不同——參數個數不同或個數相同但參數的類型不同,通過不同的參數生成不同的消息框就是應用了MessageBox()函數的重載。

選擇不同按鈕樣式的常量有如下6個:

MB_OK             只有OK按鈕
MB_OKCANCEL      確定-取消式
MB_YESNO           是-否式
MB_YESNO_CANCEL     是-否-取消式
MB_RETRYCANCEL   重試-取消式
MB_ABORTRETRYIGNORE    終止-重試-忽略按鈕

 

選擇不同圖標樣式的常量有如下4個:
MB_ICONSTOP          ×叉號
MB_ICONEXCLAMATION   驚歎號
MB_ICONINFORMATION   i 信息號
MB_ICONQUESTION      疑問號

 

需要同時選取按鈕和圖標時就用兩個常量相加,如MB_OKCANCEL  + MB_ICONSTOP。所以按按鈕來分類,消息框有四種樣式,缺少該參數時就只有一個【確定】按鈕。

 

7.2 MyMsg程序的界面和功能

 

本章我們要設計一個程序MyMsg.exe,它有四個按鈕,按每個按鈕都彈出一個消息框,其標題顯示代表按鈕常量的字符串,而信息內容則代表圖標常量的字符串,同時在編輯框中顯示該按鈕的名稱。通過把玩本程序就可以方便地查到不同樣式對應的常量該怎麼寫。程序運行時的界面如下。

VC++60 <wbr>第七章 <wbr>消息框的四種樣式

圖chap07-02

 

7.3 MyMsg程序界面的設計

 

我們在D:\myVC\ch07\位置創建MyMsg.exe的工程文件,還是用對話框模式。參考圖chap07-02和麪的參數表設計界面。

控件 標題 ID EXTENDED STYLES
按鈕 OK-CANCEL IDC_OKCANCEL_BUTTON Client
Static
Modal Frame
都選中
按鈕 YES - NO IDC_YESNO_BUTTON
按鈕 YESNO-CANCEL IDC_YESNOCANCEL_BUTTON
按鈕 RETRY-CANCEL IDC_YESNOCANCEL_BUTTON
按鈕 E&XIT IDC_EXIT_BTN
編輯框 —— IDC_RESULTS_EDIT 多行,排列居中,
Client,Static,Modal Frame
組框 Yours selected IDC_STATIC  
對話框 MyMsg IDD_MYMSG_DIALOG 字體 12

 

 

7.4 編寫代碼

 

首先,我們給編輯框引進一個值變量String m_ResultsEdit,用來存放要顯示的信息。然後給[OK-CANCEL]按鈕寫代碼,這次彈出的消息框用的常量是MB_OKCANCEL  + MB_ICONSTOP。然後更新編輯框的內容,這是在消息框被關閉後執行的。全部代碼如下:

void CMyMsgDlg::OnOkcancelButton()
{
    CString info, title ;
    info = "Icon_constent is MB_ICONSTOP";
    title= "MB_OKCANCEL";
    MessageBox(info, title, MB_OKCANCEL+MB_ICONSTOP);
    m_ResultsEdit = "OK_CANCEL fashion";
    UpdateData(FALSE);
}

其它三個按鈕的代碼也類似,列舉如下:

void CMyMsgDlg::OnYesnoButton()
{
    CString info, title ;
    info = "Icon_constent is MB_ICONEXCLAMATION";
    title= "MB_YESNO";
    MessageBox(info, title, MB_YESNO+MB_ICONEXCLAMATION);
    m_ResultsEdit = "MB_YESNO fashion";
    UpdateData(FALSE);
}

void CMyMsgDlg::OnYesnocancelButton()
{
    CString info, title ;
    info = "Icon_constent is MB_ICONINFORMATION";
    title= "YESNO_CANCEL";
    MessageBox(info, title, MB_YESNOCANCEL+MB_ICONINFORMATION);
    m_ResultsEdit = "YESNO_CANCEL fashion";
    UpdateData(FALSE);
}

void CMyMsgDlg::OnRetrycancelButton()
{
    CString info, title ;
    info = "Icon_constent is MB_ICONQUESTION";
    title= "MB_RETRYCANCEL";
    MessageBox(info, title, MB_RETRYCANCEL+MB_ICONQUESTION);
    m_ResultsEdit = "RETRY_CANCEL fashion";
    UpdateData(FALSE);
}

編譯和連接後運行之,如果按EXIT按鈕不能退出,那是你忘記給它寫退出代碼了,我以後不再提醒了。

—END—

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章