コード例 #1
0
ファイル: CtlLayouter.cpp プロジェクト: xagi/junk
//! コントロール親ウィンドウを指定して初期化する
//! @remarks 親ウィンドウサイズがリソースデザイン時のサイズから変更される前に呼び出さなければならない。
void CCtlLayouter::Initialize(
	CWnd* pParent, //!< [in] コントロール親ウィンドウ
	DWORD defaultAnchorFlags //!< [in] デフォルトアンカーフラグ、各コントロールのアンカーフラグが未指定の場合にこの値が設定される
	) {
	m_pParent = pParent;
	m_DefaultAnchorFlags = defaultAnchorFlags;
	m_Items.clear();

	// 親ウィンドウからリソースデザイン時のサイズを取得する
	CScrollView* pScrollView = DYNAMIC_DOWNCAST(CScrollView, m_pParent);
	if (pScrollView != NULL) {
		// HACK: 親がフォームビューの場合には OnInitialUpdate() のタイミングでは既にリソースデザイン時のサイズから変更されているので専用のメソッドで取得する
		int nMapMode;
		CSize sizeTotal, sizePage, sizeLine;
		pScrollView->GetDeviceScrollSizes(nMapMode, sizeTotal, sizePage, sizeLine);
		m_InitialParentClientSize = sizeTotal;
	} else {
		// 現状のサイズを初期サイズとして取得する
		CRect rc;
		m_pParent->GetClientRect(&rc);
		m_InitialParentClientSize = CSize(rc.Width(), rc.Height());
	}
}