본문 바로가기
MFC

How to create ResizeDialog by Xtreme Toolkit

by leo21c 2018. 2. 28.

ResizeDialog는 Dialog가 Resize가 되어야 하고 내부 Control이 Dialog가 Resize가 될 때 Layout도 같이 자동으로 변경되는 것을 의미한다.


인터넷을 검색하면 _CWndDynamicLayout template framework class를 만들어서 사용하는 예제 (Common Controls.zip를 검색할 수 있는데 Xtreme Toolkit을 사용하면 좀더 편하게 작업을 할 수가 있다.
<참고, https://blog.naver.com/nanoteli/30025538987>


우선 Dialog를 생성한다. 그럼 MFC는 CDialog를 상속해서 만들어진다.

우리는 Xtreme Toolkit의 CXTPResizeDialog 클래스를 상속해서 만든다.


기본 생성한 Dialog의 클래스 이름이 TestDlg라면 아래와 같이 자동 제작이 된다.

class CconfigListDlg : public CDialog


1. 먼저 stdafx.h에 XTToolkitPro.h를 include한다.

 #include <XTToolkitPro.h>   // Codejock Software Components 


2. 여기서 Parent Class를 CXTPResizeDialog로 변경을 한다.

 class CTestDlg : public CXTPResizeDialog


3. 생성자는 아래와 같이 변경한다.

CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)

: CXTPResizeDialog(CTestDlg::IDD, pParent)

 {

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

 }


4. MESSAGE_MAP을 아래와 같이 변경한다.

BEGIN_MESSAGE_MAP(CTestDlg, CXTPResizeDialog)


5. BOOL CTestDlg::OnInitDialog() 함수에 SetResize 함수를 이용해서 Control을 위치 시킨다.

아래와 같이 Dialog에 추가된 Control을 원하는 곳에 위치 시키면 된다.

 SetResize(IDOK, XTP_ANCHOR_BOTTOMRIGHT, XTP_ANCHOR_BOTTOMRIGHT);

 SetResize(IDCANCEL, XTP_ANCHOR_BOTTOMRIGHT, XTP_ANCHOR_BOTTOMRIGHT);


아래 내용은 xtpresizepoint.h에 있는 내용이다. 이것을 참고해서 SetResize 함수를 사용한다.

//-----------------------------------------------------------------------

// Summary:

//     CXTPResizePoint constants used by the CXTPResize class for defining the

//     anchor position for a child in a resizable window.

// Parameters:

//     XTP_ANCHOR_TOPLEFT - Specifies a top left position.

//     XTP_ANCHOR_TOPCENTER - Specifies a top center position.

//     XTP_ANCHOR_TOPRIGHT - Specifies a top right position.

//     XTP_ANCHOR_MIDDLELEFT - Specifies a middle left position.

//     XTP_ANCHOR_MIDDLECENTER - Specifies a middle center position.

//     XTP_ANCHOR_MIDDLERIGHT - Specifies a middle right position.

//     XTP_ANCHOR_BOTTOMLEFT - Specifies a bottom left position.

//     XTP_ANCHOR_BOTTOMCENTER - Specifies a bottom center position.

//     XTP_ANCHOR_BOTTOMRIGHT - Specifies a bottom right position.

// Example:

//     The following example demonstrates the use of CXTPResizePoint.

// <code>

// // Set control resizing.

// SetResize(IDC_EDIT_MASKEDIT,   XTP_ANCHOR_TOPLEFT,     XTP_ANCHOR_TOPRIGHT);

// SetResize(IDC_TXT_MASK,        XTP_ANCHOR_TOPCENTER,   XTP_ANCHOR_TOPRIGHT);

// SetResize(IDC_LBOX_MASK,       XTP_ANCHOR_TOPCENTER,   XTP_ANCHOR_TOPRIGHT);

// SetResize(IDC_BTN_UPDATE,      XTP_ANCHOR_TOPCENTER,   XTP_ANCHOR_TOPCENTER);

// SetResize(IDC_EDIT_MASK,       XTP_ANCHOR_TOPLEFT,     XTP_ANCHOR_TOPCENTER);

// SetResize(IDC_EDIT_PROMPT,     XTP_ANCHOR_TOPLEFT,     XTP_ANCHOR_TOPCENTER);

// SetResize(IDC_EDIT_LITERAL,    XTP_ANCHOR_TOPLEFT,     XTP_ANCHOR_TOPCENTER);

// SetResize(IDC_EDIT_DEFAULT,    XTP_ANCHOR_TOPLEFT,     XTP_ANCHOR_TOPCENTER);

// SetResize(IDC_GBOX_PROPERTIES, XTP_ANCHOR_TOPLEFT,     XTP_ANCHOR_TOPCENTER);

// SetResize(IDCANCEL,            XTP_ANCHOR_BOTTOMRIGHT, XTP_ANCHOR_BOTTOMRIGHT);

// SetResize(IDOK,                XTP_ANCHOR_BOTTOMRIGHT, XTP_ANCHOR_BOTTOMRIGHT);

// </code>

// See Also:

//     CXTPResize, CXTPResizeDialog, CXTPResizeFormView, CXTPResizeGroupBox, CXTPResizePropertyPage, CXTPResizePropertySheet,  CXTPResizePoint, CXTPResizeRect

//-----------------------------------------------------------------------