複製鏈接
請複製以下鏈接發送給好友

CFormView

鎖定
CFormView類是用於窗體視圖的基類。一個窗體視圖是包含控件的基本視圖,這些控件以對話模板資源為基礎被放置好。如果在應用中想使用窗體,則可用CFormView。這些視圖使用CScrollView的功能,支持滾動。
當使用MFC AppWizard構造一個應用時,可以將其視圖類建於CFormView之上,使之成為一個基於窗體的應用。也可以將新窗體插入基於文檔視圖的應用中,即使你的應用沒有初始化支持窗體。當你插入一個新窗體時,Visual C++將增加這種支持。MFC AppWizard和NewForm命令是創建基於窗體的應用的更好方法。如果想構造一個基於窗體的應用而不使用這些方法,可參閲“基於窗體的應用”。
中文名
CFormView
種    類
窗體視圖的基類
簡    介
提供了一個CFormView的視圖類
應用程序
AppWizard中選擇對話框

CFormView簡介

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

CFormView層次結構

CFormView窗體視圖的基類

class CFormView : public CScrollView

CFormView繼承層次結構

CWnd
—CScrollView
—CFormView

CFormView構造對象

CFormView受保護的構造函數

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

CFormView參數

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

CFormView説明

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

CFormView注意

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

CFormView示例

// 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)
{
}
參考資料