1. 程式人生 > >在對話方塊(CDialog)中使用分割窗(CSplitterWnd)

在對話方塊(CDialog)中使用分割窗(CSplitterWnd)

原文見:

例子 

可以使用以下三個步驟在對話方塊中建立分割窗:

1. In the OnCreate function or your CDialog, register a new WindowClass by calling "AfxRegisterWndClass".

    在你的CDialog類的OnCreate函式中使用AfxRegisterWndClass註冊一個新的視窗類。

2. Create a new CFrameWnd by using the "new" operator and initialize it.

    使用new操作符建立一個CFrameWnd,並對其進行初始化。

3. Create your splitter by using the new CFrameWnd you just created as the parent.

    在步驟2中建立的CFrameWnd上建立分割窗。

主要程式碼:

  1. int CMyDialog::OnCreate(LPCREATESTRUCT lpCreateStruct)
  2. {
  3. if (CDialog::OnCreate(lpCreateStruct) == -1)
  4. return -1;
  5. // Initialize a context for the view. CMyTreeView is my view and
  6. // is defined as :  class CMyTreeView : public CTreeView.
  7.     CCreateContext ccc;
  8.     ccc.m_pNewViewClass      = RUNTIME_CLASS(CMyTreeView);
  9.     ccc.m_pCurrentDoc           = NULL;
  10.     ccc.m_pNewDocTemplate = NULL;
  11.     ccc.m_pLastView              = NULL;
  12.     ccc.m_pCurrentFrame       = NULL;
  13. // Because the CFrameWnd needs a window class, we will create
  14. // a new one. I just copied the sample from MSDN Help.
  15. // When using it in your project, you may keep CS_VREDRAW and
  16. // CS_HREDRAW and then throw the other three parameters.
  17.     CString strMyClass = AfxRegisterWndClass(CS_VREDRAW |
  18.                          CS_HREDRAW,
  19.                          ::LoadCursor(NULL, IDC_ARROW),
  20.                          (HBRUSH) ::GetStockObject(WHITE_BRUSH),
  21.                          ::LoadIcon(NULL, IDI_APPLICATION));
  22. // Create the frame window with "this" as the parent
  23.     m_pMyFrame = new CFrameWnd;
  24.     m_pMyFrame->Create(strMyClass,"", WS_CHILD,
  25.                                          CRect(0,0,1,1), this);
  26.     m_pMyFrame->ShowWindow(SW_SHOW);
  27.     m_pMyFrame->MoveWindow(0,0,300,300);
  28. // and finally, create the splitter with the frame as
  29. // the parent
  30.     m_wndSplitter.CreateStatic(pMyFrame,1, 2);
  31.     m_wndSplitter.CreateView(0,0, RUNTIME_CLASS(CMyTreeView),
  32.                                                CSize(100,100), &ccc);
  33.     m_wndSplitter.CreateView(0,1, RUNTIME_CLASS(CMyTreeView),
  34.                                                CSize(100,100), &ccc);
  35. }
  36. BOOL CMyDialog::OnInitDialog()
  37. {
  38.   CDialog::OnInitDialog();
  39.   CRect rect;
  40. // Get the rectangle of the custom window. The custom window
  41. // is just a a big button that is not visible and is disabled.
  42. // It's a trick to not use coordinates directly.
  43.   GetDlgItem(IDC_CUTSOM_WINDOW)->GetWindowRect(&rect);
  44. // Move the splitter
  45.   ScreenToClient(&rect);
  46.   m_pFrameWnd->MoveWindow(&rect);
  47.   m_pFrameWnd->ShowWindow(SW_SHOW);
  48.   m_wndSplitter.MoveWindow(0,0, rect.Width(), rect.Height());
  49.   m_wndSplitter.ShowWindow(SW_SHOW);
  50. return TRUE;  // return TRUE unless you set the focus to a
  51. // control
  52. // EXCEPTION: OCX Property Pages should return
  53. // FALSE
  54. }

相關推薦

對話方塊CDialog使用分割CSplitterWnd

原文見:   可以使用以下三個步驟在對話方塊中建立分割窗: 1. In the OnCreate function or your CDialog, register a new WindowClass by calling "AfxRegisterWndClass".

Android對話方塊右上角關閉懸浮按鈕的實現總結

其實很簡單,步驟如下: 1、需要把對話方塊的預設背景改為透明。 方法:自定義Dialog的樣式。 <!--對話方塊透明背景--> <style name="Translucent_NoTitle" parent="android:style/Theme

VS2013/MFC程式設計:對話方塊:為控制元件新增訊息處理函式

 建立對話方塊類和新增控制元件變數在上一講中已經講過,這一講的主要內容是如何為控制元件新增訊息處理函式。        MFC為對話方塊和控制元件等定義了諸多訊息,我們對它們操作時會觸發訊息,這些訊息最終由訊息處理函式處理。比如我們點選按鈕時就會產生BN_CLICKED訊息,修改編輯框內容時會產生EN

【Python】python分割字串含多種分割的方法

Date: 2018.6.9 1、 參考: 2、分割字串的三種方法 2.1 str.split() 利用字串函式split分割,分割後返回的是分割部分的字元列表,但是 每次只

在AndroidManifest清單文件註冊activity活動及配置主活動、更改App圖標、App名稱、修改隱藏標題欄

雙擊 建議 nba cat ima manager ram spa src 打開app/src/main/AndroidManifest。 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xm

遍歷所有子物體renderer渲染器的material材質並改變其alpha值實現若隱若現的效果

sys [] object c engine orm 器) gpo gin nts using UnityEngine;using System.Collections;using UnityEngine.UI; public class CubeControl : Mo

逆序n個數m個逆序

.com light ostream size 逆序對數 逆序對 std ios pac 逆序對數列 對於一個數列{ai},如果有i<j且ai>aj,那麽我們稱ai與aj為一對逆序對數。若對於任意一個由1~n自然數組成的 數列,可以很容易求出有多少個逆序對數

LeetCode 總結 持續更新。。。。

總結 get ngs multiply log 。。 icu ble 更新 No. Name Acceptance Difficulty Star 43 Multiply Strings 27.3% medium 3.5 90 Subsets II 36.5%

oracle--導入數據從excel粘貼數據

技術 ima KS 內容 添加 實際應用 http bubuko TE 如圖在要插入的內容前隨便添加一列非空的數據,選擇要粘貼的內容復制 在pl/sql 中 select xmmc,sqks from xm for update 像圖中步驟2 選中 然後

python 協程單線程的異步調用轉廖雪峰老師python教程

層級 while 完全 多核 span lose produce 搶占 css 協程,又稱微線程,纖程。英文名Coroutine。 協程的概念很早就提出來了,但直到最近幾年才在某些語言(如Lua)中得到廣泛應用。 子程序,或者稱為函數,在所有語言中都是層級調用,比如A調用B

AndroidStudio Unknown attribute在xml沒有了程式碼提示

問題 如上圖所示,編寫xml的時候提示:Unknown attribute in xml and Namespace not found 真的氣死人,升級到AndroidStudio3.2.1,sdk28以後問題成堆出現。 解決方案 下面是百度最多的兩個解決方案,然

組合語言入門在debug編輯和除錯程式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

在64位的ubuntu 14.04 上開展32位Qt 程式開發環境配置pro檔案增加 QMAKE_CXXFLAGS += -m32 命令

為了能中一個系統上開發64或32位C++程式,費了些周折,現在終於能夠開始幹過了。在此記錄此時針對Q5.4版本的32位開發環境配置過程。 1. 下載Qt 5.4 的32位版本,進行安裝,安裝過程中會發現一些32位的庫沒有安裝,根據提示的錯誤逐個安裝上即可。 2. 開啟一個SampleCode 中的cube

快速和改進的二維凸包演算法及其在On log h的實現實現部分

此篇接上一篇部落格http://blog.csdn.net/firstchange/article/details/78588669 實施選擇 陣列與列表 “List”類是一個C#集合,它使用一個數組作為其底層容器。使用“列表”而不是陣列應該有類似的效能。測試證實,

快速和改進的二維凸包演算法及其在On log h的實現理論部分

在國外某知名網站上瀏覽資訊時發現了一篇非常好的論文,因為是英文的,自己翻譯、整理了一下,如果想看原始的可以去以下連結:https://www.codeproject.com/Articles/1210225/Fast-and-improved-D-Convex-Hull-algorithm-

微信公眾號支付介面vue專案,兩種方法

第一種:引入微信js-sdk //在一個地方呼叫this.weixin()方法,比如說按鈕 //寫微信支付方法 weixin() { var that = this; var url=''; var params = {

Lintcode 15.全排列 遞迴進行列表append操作

描述 給定一個數字列表,返回其所有可能的排列。 你可以假設沒有重複數字。 樣例 給出一個列表[1,2,3],其全排列為: [ [1,2,3], [1,3,2], [2,1,3]

貝納利Benelli 颶風302提車記我人生的第一輛摩托車

http 下午 技術分享 祖國 17. 公園 上班 網絡 識別不了 貝納利(Benelli )颶風302提車記(我人生中的第一輛摩托車) 說起這次提車的心情得從一年前的考去駕駛證說起 1.駕駛證增駕 大飛哥的E本增駕考試經歷因為我是異地考取的駕駛證增駕需轉入本地 2

Java之物件的多型性使用生活通俗的例子講解

Java之物件的多型性多型概念 (Java)    多型(英語:polymorphism),是指計算機程式執行時,相同的訊息可能會送給多個不同的類別之物件,而系統可依據物件所屬類別,引發對應類別的方法,而有不同的行為。簡單來說,所謂多型意指相同的訊息給予不同的物件會引發不同的

node express使用static託管靜態檔案訪問專案的圖片或者檔案

利用 Express 託管靜態檔案 通過 Express 內建的 express.static 可以方便地託管靜態檔案,例如圖片、CSS、JavaScript 檔案等。 將靜態資原始檔所在的目錄作為引數傳遞給 express.static 中介軟體就可以提供