TNB Library
クラス | 公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
CResizeDialog クラス

リサイズダイアログベースクラス [詳解]

#include <TnbMfcResizeDialog.h>

+ CResizeDialog の継承関係図

クラス

class  CPaintOrgDC
 リサイズダイアログ用 PaintDC クラス [詳解]
 

公開メンバ関数

void ChangeOriginalSize (const SIZE &size)
 [設定] オリジナルクライアントサイズ変更. [詳解]
 
 CResizeDialog (LPCTSTR lpszTemplateName, CWnd *pParentWnd=NULL)
 コンストラクタ [詳解]
 
 CResizeDialog (UINT nIDTemplate, CWnd *pParentWnd=NULL)
 コンストラクタ [詳解]
 
 CResizeDialog (void)
 コンストラクタ [詳解]
 
const CSize & GetOriginalSize (void) const
 [取得] オリジナルクライアントサイズ取得. [詳解]
 
CSize GetOriginalWindowSize (void) const
 [取得] オリジナルウィンドウサイズ取得. [詳解]
 
CPoint GetScrollPoint (void) const
 [取得] スクロール位置. [詳解]
 
virtual void OnPrintClient (CDC *pDC)
 [通知] WM_PRINTCLIENT メッセージ受信. [詳解]
 
void ResetWindowsSize (void)
 [設定] オリジナルウィンドウサイズ化. [詳解]
 
void SetLineStep (int s)
 [設定] ラインスクロール量設定. [詳解]
 
void SetOriginalSize (const SIZE &size)
 [設定] オリジナルクライアントサイズ設定. [詳解]
 
void SetOriginalWindowSize (const SIZE &size)
 [設定] オリジナルウィンドウサイズ設定. [詳解]
 
void SetScrollOrg (CDC *pDc, bool isBegin=true) const
 [設定] デバイスコンテキストの原点設定、解除. [詳解]
 

限定公開メンバ関数

void m_CheckOffset (void)
 WinとClientの差を計算 [詳解]
 
virtual LRESULT WindowProc (UINT message, WPARAM wParam, LPARAM lParam)
 [通知] for processing Windows messages. [詳解]
 

詳解

リサイズダイアログベースクラス

inline なコントロールです。

本クラスを CDialog の代わりに継承すると、サイズ変更可能なダイアログになります。

CDialog を使ったダイアログを作る要領でリソースを作成しクラス生成後、 CDialog
を本クラスに置き換える形の実装方法を想定しています。

ダイアログのリソースは、「境界線(Border)」を「サイズ変更枠」にし、「水平スクロールバー(Horizontal Scrollbar)」
「垂直スクロールバー(Vertical Scrollbar)」にチェックを付けない(falseにする)ようにします。

また、 OnPaintで描画しているものは、 CPaintOrgDC を使い DC を取得してください。

後は、普通のダイアログと同じです。
使用例
    //= 宣言(ヘッダファイル)
        class CXxxDlg : public CResizeDialog    // ← CDialog を CResizeDialog に変更。       
                // 他の 「CDialog」 も同様
        {
                :
            virtual void OnPrintClient(CDC* pDC);   // WM_PRINT に対応する場合、追加
                :

    //= 設定(ソースファイル) WM_PRINT に対応する場合

        void CXxxDlg::OnPaint() 
        {
            CPaintOrgDC dc(this);   // ← デバイスコンテキストの取得
            OnPrintClient(&dc);
        }
        void CXxxDlg::OnPrintClient(CDC* pDC)
        {
            m_bmps.Draw(*pDC);  // 後は普通に
        }
            :

    //= 設定(ソースファイル) WM_PRINT に対応しない場合

        void CXxxDlg::OnPaint() 
        {
            CPaintOrgDC dc(this);   // ← デバイスコンテキストの取得
            m_bmps.Draw(dc);    // 後は普通に
        }
            :

    
必要ファイル
TnbMfcResizeDialog.h
日付
07/10/18 新規作成
07/10/22 スクロール関係メッセージ、誰宛かを見るように修正。
07/10/24 スクロール関係メッセージ、修正。ホイールにも対応。 GetOriginalSize() 追加。
07/10/26 WM_PAINT 処理を修正。 テンプレートをやめ、CDialog継承へ。
07/10/27 OnOffsetPaintを廃止。 縦スクロールバーが出ないバグを修正。
07/10/29 SetScrollOrg() を追加。
07/10/31 WM_PRINT , WM_PRINTCLIENT に対応。 OnPrintClient() 追加。
07/11/02 SCROLLバーが出ないことがまれにあった。明示的に表示 true するようにした。
07/11/06 SetOriginalSize() の引数は Window サイズ用だった。 Client サイズ指定メソッドも新規。
08/01/29 フレーム、テーマ変更に対応。
08/02/01 スクロールバーがないのみ、 WM_MOUSEWHELL スルーするようにした。 SetScrollOrg() に第二引数追加。 CPaintOrgDC クラスを追加。
08/04/11 クライアントがスクロールバーより小さくなったらスクロールバーをHIDEにするようにした。

TnbMfcResizeDialog.h96 行目に定義があります。

構築子と解体子

◆ CResizeDialog() [1/3]

CResizeDialog ( void  )

コンストラクタ

TnbMfcResizeDialog.h132 行目に定義があります。

◆ CResizeDialog() [2/3]

CResizeDialog ( LPCTSTR  lpszTemplateName,
CWnd pParentWnd = NULL 
)

コンストラクタ

引数
lpszTemplateNameダイアログ ボックス テンプレート リソース名を表す null で終わる文字列。
pParentWndダイアログ オブジェクトを所有する CWnd 型の親ウィンドウ またはオーナー ウィンドウオブジェクトへのポインタ。 NULL の場合は、ダイアログ オブジェクトの親ウィンドウがアプリケーションのメイン ウィンドウになります。

TnbMfcResizeDialog.h145 行目に定義があります。

◆ CResizeDialog() [3/3]

CResizeDialog ( UINT  nIDTemplate,
CWnd pParentWnd = NULL 
)

コンストラクタ

引数
nIDTemplateダイアログ ボックス テンプレート リソースの ID 番号。
pParentWndダイアログ オブジェクトを所有する CWnd 型の親ウィンドウ またはオーナー ウィンドウオブジェクトへのポインタ。 NULL の場合は、ダイアログ オブジェクトの親ウィンドウがアプリケーションのメイン ウィンドウになります。

TnbMfcResizeDialog.h158 行目に定義があります。

関数詳解

◆ ChangeOriginalSize()

void ChangeOriginalSize ( const SIZE &  size)

[設定] オリジナルクライアントサイズ変更.

オリジナルのサイズ(クライアントの最大サイズ)を変更することが出来ます。

引数
sizeサイズ.

TnbMfcResizeDialog.h261 行目に定義があります。

◆ GetOriginalSize()

const CSize & GetOriginalSize ( void  ) const

[取得] オリジナルクライアントサイズ取得.

オリジナルのサイズ(クライアントの最大サイズ)を得ることが出来ます。

覚え書き
サイズ変更している状態では、GetClientRect() で、クライアントの本当の大きさを知ることが出来ません。 本メソッドは、サイズ変更していても、オリジナルの大きさを得ることが出来ます。
戻り値
サイズ.

TnbMfcResizeDialog.h213 行目に定義があります。

◆ GetOriginalWindowSize()

CSize GetOriginalWindowSize ( void  ) const

[取得] オリジナルウィンドウサイズ取得.

オリジナルのサイズ(ウィンドウの最大サイズ)を得ることが出来ます。

覚え書き
サイズ変更している状態では、GetWindowRect() で、ウィンドウの本当の大きさを知ることが出来ません。 本メソッドは、サイズ変更していても、オリジナルの大きさを得ることが出来ます。
戻り値
サイズ.

TnbMfcResizeDialog.h201 行目に定義があります。

◆ GetScrollPoint()

CPoint GetScrollPoint ( void  ) const

[取得] スクロール位置.

戻り値
左上端に表示されているクライアントの座標。

TnbMfcResizeDialog.h168 行目に定義があります。

◆ m_CheckOffset()

void m_CheckOffset ( void  )
protected

WinとClientの差を計算

TnbMfcResizeDialog.h327 行目に定義があります。

◆ OnPrintClient()

virtual void OnPrintClient ( CDC *  pDC)
virtual

[通知] WM_PRINTCLIENT メッセージ受信.

WM_PRINTCLIENT メッセージ受信したらコールされます。

覚え書き
通常、OnPaint() で描画している内容と同じものを描きます。
SetScrollOrg() は使用しません。
引数
pDCデバイスコンテキスト。

TnbMfcResizeDialog.h321 行目に定義があります。

◆ ResetWindowsSize()

void ResetWindowsSize ( void  )

[設定] オリジナルウィンドウサイズ化.

ウィンドウサイズをオリジナル戻します

TnbMfcResizeDialog.h305 行目に定義があります。

◆ SetLineStep()

void SetLineStep ( int  s)

[設定] ラインスクロール量設定.

スクロールバーの矢印ボタンを押した時にスクロールする量を指定します。

覚え書き
デフォルトでは、20です。
引数
sスクロール量.

TnbMfcResizeDialog.h296 行目に定義があります。

◆ SetOriginalSize()

void SetOriginalSize ( const SIZE &  size)

[設定] オリジナルクライアントサイズ設定.

オリジナルのサイズ(クライアントの最大サイズ)を設定することが出来ます。

覚え書き
通常、リソースから自動的にサイズを得ます。
引数
sizeサイズ.

TnbMfcResizeDialog.h243 行目に定義があります。

◆ SetOriginalWindowSize()

void SetOriginalWindowSize ( const SIZE &  size)

[設定] オリジナルウィンドウサイズ設定.

オリジナルのサイズ(ウィンドウの最大サイズ)を設定することが出来ます。

覚え書き
通常、リソースから自動的にサイズを得ます。
引数
sizeサイズ.

TnbMfcResizeDialog.h224 行目に定義があります。

◆ SetScrollOrg()

void SetScrollOrg ( CDC *  pDc,
bool  isBegin = true 
) const

[設定] デバイスコンテキストの原点設定、解除.

デバイス コンテキストのウィンドウの原点をスクロール位置にあわせます。

覚え書き
設定と解除をセットで使用します。
引数
pDcデバイスコンテキスト。
isBegin省略すると原点設定します。 false を指定すると解除します。

TnbMfcResizeDialog.h180 行目に定義があります。

◆ WindowProc()

virtual LRESULT WindowProc ( UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
protectedvirtual

[通知] for processing Windows messages.

メッセージ受信したらコールされます。

覚え書き
CWndのメソッドをオーバーライドしています。
引数
messageメッセージ
wParamWPARAM
lParamLPARAM
戻り値
リザルト。

TnbMfcResizeDialog.h349 行目に定義があります。