MFC - 對話方塊



在本章中,我們將介紹對話方塊。Windows 應用程式通常透過對話方塊與使用者進行通訊。CDialog 類提供了一個用於管理對話方塊的介面。Visual C++ 對話方塊編輯器使設計對話方塊和建立其對話方塊模板資源變得容易。

  • 建立對話方塊物件是一個兩階段操作 -

    • 構造對話方塊物件。

    • 建立對話方塊視窗。

讓我們透過建立一個新的 Win32 專案來了解一個簡單的示例。

步驟 1 - 開啟 Visual Studio 並點選“檔案”→“新建”→“專案”選單選項。

步驟 2 - 您現在可以看到“新建專案”對話方塊。

New Project Dialog Box

步驟 3 - 從左側窗格中,選擇“模板”→“Visual C++”→“Win32”。

步驟 4 - 在中間窗格中,選擇“Win32 專案”。

步驟 5 - 在“名稱”欄位中輸入專案名稱“MFCDialogDemo”,然後點選“確定”繼續。您將看到以下對話方塊。

MFCDialogDemo Project

步驟 6 - 點選“下一步”。

MFCDialogDemo Setting

步驟 7 - 選擇上面給出的對話方塊中顯示的選項,然後點選“完成”。

MFCDialogDemo Options

步驟 8 - 建立了一個空專案。

步驟 9 - 要將其設為 MFC 專案,請右鍵點選專案並選擇“屬性”。

MFCDialogDemo Property

步驟 10 - 在左側部分,點選“配置屬性”→“常規”。

步驟 11 - 在“專案預設值”部分中選擇“在共享 DLL 中使用 MFC”選項,然後點選“確定”。

步驟 12 - 新增一個新的原始檔。

步驟 13 - 右鍵點選您的專案並選擇“新增”→“新建項”。

步驟 14 - 在“模板”部分,點選“C++ 檔案 (.cpp)”。

MFCDialogDemo Add Item

步驟 15 - 將“名稱”設定為 Example 並點選“新增”。

步驟 16 - 要建立應用程式,我們需要新增一個類並從 MFC 的 CWinApp 派生它。

#include <afxwin.h>

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};

對話方塊建立

步驟 1 - 要建立對話方塊,請右鍵點選解決方案資源管理器中的“資原始檔”資料夾,然後選擇“新增”→“資源”。

Add Resource

步驟 2 - 在“新增資源”對話方塊中,選擇“對話方塊”並點選“新建”。

步驟 3 - 對話方塊在實際以程式設計方式建立之前需要進行一些準備工作。

步驟 4 - 對話方塊可以首先手動建立為文字檔案(在資原始檔中)。

步驟 5 - 您現在可以看到在“資原始檔”下建立的 MFCDialogDemo.rc 檔案。

MFCDialogDemo FIle

步驟 6 - 資原始檔在設計器中開啟。它也可以作為文字檔案開啟。右鍵點選資原始檔並選擇“開啟方式”。

Open With MFCDialogDemo File

步驟 7 - 選擇“原始碼(文字)”編輯器,然後點選“新增”按鈕。

Source Code Editor

步驟 8 - 返回到設計器,右鍵點選對話方塊並選擇“屬性”。

DialogBox Select Properties

步驟 9 - 您需要從眾多選項中進行選擇。

步驟 10 - 與大多數其他控制元件一樣,對話方塊必須被識別。對話方塊的識別符號 (ID) 通常以 IDD_ 開頭,讓我們將其 ID 更改為 IDD_EXAMPLE_DLG。

對話方塊位置

對話方塊必須“物理地”位於應用程式上。因為對話方塊通常被建立為其他控制元件的父級,所以其位置取決於它與其父視窗或桌面的關係。

如果您檢視“屬性”視窗,您會看到兩個欄位,“X 位置”和“Y 位置”。

Dialog Location
  • X 是從顯示器左側邊框到對話方塊左側邊框的距離。

  • Y 是從顯示器頂部邊框到對話方塊頂部邊框的距離。

預設情況下,這些欄位設定為零。您也可以像上面顯示的那樣更改它們。

如果您將這兩個維度指定為 0,則對話方塊的左邊界和上邊界將被設定為使物件出現在螢幕的中央。

對話方塊尺寸

對話方塊的尺寸是指其寬度和高度。您可以使用設計器視窗中的滑鼠調整寬度和高度。

Dialog Box Dimension

您可以在狀態列上看到寬度和高度的變化。

對話方塊方法

用於在螢幕上顯示對話方塊的基本類是 CDialog 類。要建立對話方塊,我們需要從 CDialog 派生一個類。CDialog 類本身提供了三個建構函式,如下所示 -

CDialog();
CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);

讓我們建立另一個類 CExampleDlg 並從 CDialog 派生它。我們將實現其預設建構函式和解構函式,如以下程式碼所示。

class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
      ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

我們需要在 CExample::InitInstance() 方法中例項化此對話方塊,如以下程式碼所示。

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   
   return TRUE;
}

模態對話方塊

對話方塊有兩種型別 - **無模式**和**模態**。模態和無模式對話方塊的區別在於建立和顯示它們的過程。

無模式對話方塊

  • 對於無模式對話方塊,您必須在您的對話方塊類中提供您自己的公共建構函式。

  • 要建立無模式對話方塊,請呼叫您的公共建構函式,然後呼叫對話方塊物件的 Create 成員函式來載入對話方塊資源。

  • 您可以在建構函式呼叫期間或之後呼叫 Create。如果對話方塊資源具有 WS_VISIBLE 屬性,則對話方塊會立即出現。

  • 如果不是,則必須呼叫其 ShowWindow 成員函式。

模態對話方塊

  • 要建立模態對話方塊,請呼叫在 CDialog 中宣告的兩個公共建構函式中的任何一個。

  • 接下來,呼叫對話方塊物件的DoModal成員函式來顯示對話方塊並管理與它的互動,直到使用者選擇“確定”或“取消”。

  • DoModal 進行的這種管理使對話方塊成為模態對話方塊。對於模態對話方塊,DoModal 載入對話方塊資源。

步驟 1 - 要將對話方塊顯示為模態,請在 CExample::InitInstance() 事件中使用您的對話方塊變數呼叫 DoModal() 方法 -

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}

步驟 2 - 以下是 Example.cpp 檔案的完整實現。

#include <afxwin.h>
#include "resource.h"

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};
   
class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
     ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}
CExample MyApp;

步驟 3 - 當以上程式碼編譯並執行時,您將看到以下對話方塊。

Dialog Box

基於對話方塊的應用程式

Microsoft Visual Studio 提供了一種更簡單的方法來建立主要基於對話方塊的應用程式。以下是使用 Visual Studio 中提供的專案模板建立基於對話方塊的專案的步驟 -

步驟 1 - 開啟 Visual Studio 並點選“檔案”→“新建”→“專案”選單選項。您會看到“新建專案”對話方塊。

Dialog Based Project Template

步驟 2 - 從左側窗格中,選擇“模板”→“Visual C++”→“MFC”。

步驟 3 - 在中間窗格中,選擇“MFC 應用程式”。

步驟 4 - 在“名稱”欄位中輸入專案名稱“MFCModalDemo”,然後點選“確定”繼續。您將看到以下對話方塊。

MFCModalDemo Application2

步驟 5 - 點選“下一步”。

MFCModalDemo Type

步驟 6 - 選擇上面對話方塊中顯示的選項,然後點選“下一步”。

MFCModalDemo Application Options

步驟 7 - 檢查您希望在對話方塊上擁有的所有選項,例如“最大化”和“最小化”框,然後點選“下一步”。

MFCModalDemo Advanced Features

步驟 8 - 點選“下一步”。

MFCModalDemo Generated Classes

步驟 9 - 它將生成這兩個類。您可以更改類的名稱,然後點選“完成”。

步驟 10 - 您現在可以看到 MFC 嚮導預設情況下建立了此對話方塊和專案檔案。

DialogBox Application

步驟 11 - 當您執行此應用程式時,您將看到以下輸出。

MFCModalDemo Result
廣告

© . All rights reserved.