CFormView

CFormView類是用於窗體視圖的基類。一個窗體視圖是包含控制項的基本視圖,這些控制項以對話模板資源為基礎被放置好。如果在套用中想使用窗體,則可用CFormView。這些視圖使用CScrollView的功能,支持滾動。

當使用MFC AppWizard構造一個套用時,可以將其視圖類建於CFormView之上,使之成為一個基於窗體的套用。也可以將新窗體插入基於文檔視圖的套用中,即使你的套用沒有初始化支持窗體。當你插入一個新窗體時,Visual C++將增加這種支持。MFC AppWizard和NewForm命令是創建基於窗體的套用的更好方法。如果想構造一個基於窗體的套用而不使用這些方法,可參閱“基於窗體的套用”。

基本介紹

  • 中文名:CFormView
  • 種類窗體視圖的基類
  • 簡介:提供了一個CFormView的視圖類
  • 應用程式:AppWizard中選擇對話框
簡介,層次結構,窗體視圖的基類,繼承層次結構,構造對象,受保護的構造函式,參數,說明,注意,示例,

簡介

MFC提供了一個名為CFormView的特殊視圖類,我們稱其為窗體視圖。窗體視圖是指用控制項來輸入和輸出數據的視圖,用戶可以方便地在窗體視圖中使用控制項。窗體視圖具有對話框和滾動視圖的特性,使程式看起來象是一個具有滾動條的對話框。在有些情況下,用窗體視圖比用普通視圖更符合用戶的需要,例如,在向資料庫輸入數據時,顯然用表單的形式可以更習慣些。
新建一個項目時在 AppWizard中選擇對話框應用程式,對應的視圖類在Base class欄中選擇CFormView,AppWizard就會創建一個基於CFormView的應用程式。
可以按上述方法建立一個名為Test的應用程式。在Test工程的資源中,有一個ID為IDD_TEST_FORM的對話框模板,該對話框模板可供用戶放置和安排控制項。在程式運行時,框架根據該對話框模板創建CFormView對象,並根據模板的信息在窗體視圖中自動創建控制項。與設計對話框類相類似,用戶可以用ClassWizard為窗體視圖類加入與控制項對應的成員變數,可以調用UpdateData在控制項和成員變數之間交換數據,但對控制項的初始化工作是在OnInitialUpdate函式而不是在OnInitDialog函式中進行的。
基於窗體視圖的應用程式與基於對話框的應用程式都是在應用程式中直接使用控制項,但二者有很多不同之處。基於對話框的應用程式是用一個對話框來作為程式的主視窗的,因而程式的主視窗的特性與對話框類似,如視窗的大小不能改變,程式沒有選單條、工具條和狀態欄等。基於窗體視圖的應用程式仍然是基於Doc/View框架結構的,只是視圖被換成了窗體視圖,也就是說,應用程式的視窗可以改變大小,程式有選單條、工具條和狀態欄,且程式仍然可以Dov/View運行機制來處理文檔。

層次結構

窗體視圖的基類

class CFormView : public CScrollView

繼承層次結構

CWnd
—CScrollView
—CFormView

構造對象

受保護的構造函式

CFormView::CFormView
CFormView(LPCTSTR lpszTemplateName);
CFormView(UINT nIDTemplate);

參數

lpszTemplateName一個以空終止符結束的字元串,此字元串為對話模板資源的名稱。
nIDTemplate對話模板資源的ID值。

說明

當構造一個CFormView派生類型的對象時,可請求構造函式構造一個視圖對象並標識此視圖基於的對話資源。可以用名字(把字元串作為一個變元傳送到構造器)或ID來標識此資源(把未標識的整數作為一個變元傳送)。
窗體視圖視窗和子控制項在調用CWnd::Create之前不可創建。CWnd::Create被框架調用作為文檔和視圖創建進程的一部分,由文檔模板驅動。

注意

你的派生類必須提供其構造函式。在構造函式中,可調用CFormView:: CFormView構造函式,以資源名稱或ID作為參數,如前面類概述中所述。
所需頭檔案:#include <afxext.h>

示例

// MyFormView.h// CMyFormView form viewclass CMyFormView : public CFormView
{
DECLARE_DYNCREATE(CMyFormView)
CMyFormView(); // protected constructor used by dynamic creation
virtual ~CMyFormView();
enum { IDD = IDD_MYFORMVIEW };
#ifdef _DEBUG virtual void AssertValid() const;
#ifndef _WIN32_WCE virtual void Dump(CDumpContext& dc) const;
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
};
// MyFormView.cpp
#include "MyFormView.h"
// CMyFormView
IMPLEMENT_DYNCREATE(CMyFormView, CFormView)
CMyFormView::CMyFormView()
: CFormView(CMyFormView::IDD)
{
}

相關詞條

熱門詞條

聯絡我們