程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 多視圖與文檔的交互,視圖文檔

多視圖與文檔的交互,視圖文檔

編輯:C++入門知識

多視圖與文檔的交互,視圖文檔


CREATESTRUCT結構

CREATESTRUCT結構具有如下形式:
typedef struct tagCREATESTRUCT
{
  LPVOID  lpCreateParams;
  HANDLE  hInstance;
  HMENU   hMenu;
  HWND    hwndParent;
  int     cy;
  int     cx;
  int     y;
  int     x;
  LONG    style;
  LPCSTR  lpszName;
  LPCSTR  lpszClass;
  DWORD   dwExStyle;
} CREATESTRUCT;

CREATESTRUCT結構定義了傳遞給應用程序的窗口過程的初始化參數。
成員:

lpCreateParams 指向將被用於創建窗口的數據的指針。 hInstance 標識了擁有新窗口的模塊的模塊實例的句柄。 hMenu 標識了要被用於新窗口的菜單。如果是子窗口,則包含整數ID。 hwndParent 標識了擁有新窗口的窗口。如果新窗口是一個頂層窗口,這個參數可以為NULL。 cy 指定了新窗口的高。 cx 指定了新窗口的寬。 y 指定了新窗口的左上角的y軸坐標。如果新窗口是一個子窗口,則坐標是相對於父窗口的;否則坐標是相對於屏幕原點的。 x 指定了新窗口的左上角的x軸坐標。如果新窗口是一個子窗口,則坐標是相對於父窗口的;否則坐標是相對於屏幕原點的。 style 指定了新窗口的風格。 lpszName 指向一個以null結尾的字符串,指定了新窗口的名字。 lpszClass 指向一個以null結尾的字符串,指定了新窗口的Windows類名(一個WNDCLASS結構;更多的信息參見Win32 SDK文檔)。 dwExStyle 指定了新窗口的擴展風格。 

CCreateContext

CCreateContext沒有基類。
在主程序創建框架窗口、以及文檔相關的視圖時,會使用CCreateContext結構。

建立窗口時,此結構中的值用於連接構成文檔的組件和文檔數據的視圖。僅當覆蓋了創建過程時才需要使用CCreateContext。
CCreateContext結構包含了指向文檔、框架窗口和文檔模板的指針,包括了一個CRuntimeClass指針,CRuntimeClass標志了待創建的視圖的類型。運行時類信息和當前文檔指針用於動態地創建視圖。下表列出了CCreateContext的每個成員的用法:

成員 用途 m_pNewViewClass 待創建的視圖的CRuntimeClass m_pCurrentDoc 將在其上創建視圖的文檔 m_pNewDocTemplate 待創建的新MDI框架窗口的文檔模板 m_pLastView 待創建視圖所依據的原始視圖,例如在創建分裂窗口的視圖或文檔的第二個框架窗口時 m_pCurrentFrame 待創建框架窗口所依據的框架窗口,例如在文檔上創建第二個框架窗口時


當在文檔模板上創建一個文檔及其相關的組件時,它檢查存儲在CCreateContext結構中的信息的有效性。例如,不能在一個不存在的文檔上建立視圖。
注意:
CCreateContext結構中的所有指針都是可選的,在不需要或者未知時可設為NULL。

· CCreateContext作為創建窗口時的參數,如CWnd::Create、CFrameWnd:Create和CFrameWnd::LoadFrame,CCreateContext指定了新窗口應連接到的地方。對多數窗口來說,整個結構都是可選的,可傳遞一個NULL指針。 · 對於可覆蓋的函數,例如CFrameWnd::OnCreateClient,參數CCreateContext也是可選的。 · 對那些在創建視圖時使用的函數來說,必須在調用時提供足夠的信息以建立視圖。例如,對分裂窗口中的第一個視圖,必須提供視圖的類信息和當前的文檔。

一般說來,如果使用了框架的缺省設置,就可以忽略CCreateContext結構。如果想進行一些高級的修改,MFC類庫源代碼或例子程序(如VIEWEX)可以提供參考。如果記不清參數的使用,框架中提供的斷言將有助於發現參數使用的錯誤。

CreateView

  virtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );   ● row:窗格的行標,從0開始   ● col:窗格的列標,從0開始   ● pViewClass:視圖的執行期類CRuntimeClass指針,可以用宏RUNTIME_CLASS獲得   ● sizeInit:一個SIZE(或者CSize)類型的數據,指定窗格的初始尺寸   ● pContext:一般是由父窗口傳遞過來,包含窗口的創建信息   返回值:如果創建成功,返回非零值(TRUE),否則返回0(FALSE)。   SetColumnInfo     void SetColumnInfo( int col, int cxIdeal, int cxMin );   ● col:切分窗口的列標識   ● cxIdeal:指定分隔器窗口列的以像素表示的理想寬度。   ● cxMin:指定分隔器窗口列以像素表示的最小寬度。   CWnd::MoveWindow

void MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE );
void MoveWindow( LPCRECT lpRect, BOOL bRepaint = TRUE );    x 指定了CWnd 的左邊的新位置  y 指定了CWnd的頂部的新位置  nWidth 指定CWnd的新寬度  nHeight 指定CWnd的新高度  bRepaint 指定了是否要重畫CWnd。如果為TRUE,則CWnd象通常那樣在OnPaint消息處理函數中接收到一條WM_PAINT消息。如果這個參數為FALSE,則不會發生任何類型的重畫操作。這應用於客戶區、非客戶區(包括標題條和滾動條)和由於CWnd移動而露出的父窗口的任何部分。當這個參數為FALSE的時候,應用程序必須明確地使CWnd和父窗口中必須重畫的部分無效或重畫。  lpRect CRect對象或RECT結構,指定了新的大小和位置。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved