多視圖與文檔的交互

来源:http://www.cnblogs.com/yunqie/archive/2016/11/12/6057442.html
-Advertisement-
Play Games

CREATESTRUCT結構CREATESTRUCT結構具有如下形式:typedef struct tagCREATESTRUCT{ LPVOID lpCreateParams; HANDLE hInstance; HMENU hMenu; HWND hwndParent; int cy; int ...


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結構,指定了新的大小和位置。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、簡介 ButterKnife是註解中相對簡單易懂的很不錯的開源框架 1.強大的View綁定和Click事件處理功能,簡化代碼,提升開發效率 2.方便的處理Adapter里的ViewHolder綁定問題 3.運行時不會影響APP效率,使用配置方便 4.代碼清晰,可讀性強 2、下載地址 https: ...
  • 有不足之處,請大家指出 一、 基礎知識 1、SDK的最新下載 搜索oracle,進入網站,à Downloads –> JavaSEI à 選第一個下載(其實java 8u111和8u112的區別就是在8u111的基礎上優化了一下,升了下級,實際使用沒什麼區別的) 其次註意一下選32位還是64位,是 ...
  • 無限級分類是一種設計技巧,在開發中經常使用,例如:網站目錄、部門結構、文章分類。筆者覺得它在對於設計表的層級結構上面發揮很大的作用,比如大家在一些平臺上面, 填寫邀請人,它就是一種上下級的關係,上級會有多個下級,下級又會有自己的分支,大多數都是利用遞歸的思想去實現。話不多說,首先來溫故一下遞歸的實現 ...
  • 如果你還沒有搭建gtest框架,可以參考我之前的博客:http://www.cnblogs.com/jycboy/p/6001153.html。。 1.The first sample: sample1 你把github上的項目導來之後,github地址:https://github.com/goo ...
  • RPC即遠程過程調用,它的實現方式有很多,比如webservice等。框架調多了,煩了,沒激情了,我們就該問自己,這些框架的作用到底是什麼,來找回當初的激情。 一般來說,我們寫的系統就是一個單機系統,一個web伺服器一個資料庫服務,但是當這單台伺服器的處理能力受硬體成本的限制,是不能無限的提升處理性 ...
  • 一、設置一個新的測試項目 在用google test寫測試項目之前,需要先編譯gtest到library庫並將測試與其鏈接。我們為一些流行的構建系統提供了構建文件: msvc/ for Visual Studio, xcode/ for Mac Xcode, make/ for GNU make,  ...
  • 背景說明 最近在工作項目中有下麵一個場景: 使用Node.js的express框架實現了一個文件系統伺服器端,其中有個API用於客戶端上傳文件。客戶端使用Node.js的HttpClient來調用伺服器端的API上傳文件。 客戶端在上傳小文件時沒有任何問題,在上傳大文件時httpClient請求報錯 ...
  • wordpress是用php語言開發的博客平臺,它擴展性強,容易擴展,很適合拿來做二次開發。 1,問題由來 本周五,我在瀏覽公司的網站(基於wordpress開發)時發現,網站首頁上有兩篇文章的縮略圖重覆了,於是我進入網站後臺檢查,想看下是不是某位員工在撰寫文章時不小心這兩篇文章選擇了相同的圖片作為 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...