MFCダイアログウィンドウ分割/解像度

  • 本論文でテスト環境vs2013!
  • 次のように最後に、業績は以下のとおりです。


まず、新しいプロジェクト:プロジェクト名:MySplitterDlg、他のキープデフォルトのオプション。
第二に、 ダイアログクラスを作成します
各レコードタイプCMyFormView0CMyFormView1から選択、カテゴリグループCDialogのは、選択する必要がありCFormViewのを
クラスウィザード - >クラス(MFCカテゴリ)を追加します。


第三に、
増加のWM_CREATEメッセージ応答関数OnCreate関数

「クラスガイド」「CMySpliterDlgDlgことで(別のクラスを選択していない)クラスを追加:メッセージWM_CREATE応答関数を


第四に、編集のOnCreate

次のメッセージ機能OnCreate関数を追加した後、編集その内容として:

INT CMySplitterDlgDlg :: OnCreate関数(LPCREATESTRUCT lpCreateStruct)
{
    IF(CDialogEx :: OnCreate関数(lpCreateStruct)== -1)
        リターン-1。

    // TODO:在此添加您专用的创建代码
    // CFrameWndのウィンドウクラスを必要とするため、我々は新しいものを作成します。私はちょうどMSDNのヘルプからサンプルをコピーしました。
    あなたのプロジェクトでそれを使用する場合は、//、あなたはCS_VREDRAWとCS_HREDRAWを維持し、他の3つのパラメータをスローすることがあります。
    //需要注册窗口类
    のCString strMyClass = AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW、 
                   :: LoadCursor(NULL、IDC_ARROW)、(HBRUSH):: GetStockObject(WHITE_BRUSH)、  
                  :: LoadIcon(NULL、IDI_APPLICATION));

    // "この"親としてのフレームを作成してウィンドウ
    ; m_pMyFrame新しい新しい= CFrameWndのを
    m_pMyFrame->作成(strMyClass、_T( "")、WS_CHILD、CRect(0,0,300,300)、この);
    m_pMyFrame->のShowWindow(SW_SHOW) ;

    //そして最後に、スプリッタとフレームとして親作成
    m_cSplitter.CreateStatic(m_pMyFrame ,. 1、2)、ビューウィンドウの//分割フレーム1×2で、行2は
    m_cSplitter.CreateView(0、 0、RUNTIME_CLASS(CMyFormView0)、CSIZE (100,100)、NULL); // 最初の行
    m_cSplitter.CreateView(0,1、RUNTIME_CLASS(CMyFormView1) 、CSIZE(100,100)、NULL); // 最初の行2つ

    のリターン0;
}

第五は、変数CFrameWndのを追加します    

上記の手順m_pMyFrameで使用される変数、クラスCMySplitterDlgDlgを追加する必要があります

公共:
         CFrameWndの* m_pMyFrame。

六は、メモリリークを防ぐために、にonDestroy()を追加します

(m_pMyFrame)削除m_pMyFrame場合は、

セブン、ヘッダダイアログを追加します 

さらに、上記の手順は、クラスCMyFormView0 3.3概要および作成に使用されるCMyFormView1を、ヘッダファイルMySplitterDlgDlg.cppでそれを追加する必要があります。

#include "MyFormView0.h"
の#include "MyFormView1.h"

八、変数CSplitterWndを追加

ウィンドウの使用はCSplitterWndクラスに分割されている場合(OnCreateの関数上記参照)、クラスCMySplitterDlgDlgを追加する必要があります

CSplitterWnd m_cSplitter;

九、ニュース編集者OnSize関数

メッセージ機能を追加しました次のようにその内容を編集し、OnSize関数の後に:

:: CMySplitterDlgDlg OnSize関数のボイド(UINT n型、int型CX、CYはint)
{
    CDialogEx OnSize関数::(n型、CX、CY);

    // TODO:ここにメッセージハンドラコードを追加します
    CRect CRect;
    GetWindowRect(&CRectを);
    しばらくScreenToClientは( CRect&);
    m_pMyFrame-> MoveWindow(&CRect);
    m_pMyFrame->のShowWindow(SW_SHOW);
}

テンは、プログラムを実行します



公開された117元の記事 ウォンの賞賛4 ビュー80000 +

おすすめ

転載: blog.csdn.net/qq_36266449/article/details/78194665