// 헤더파일.
class CDlgSplitDlg : public CDialogEx
{
// Construction
public:
CDlgSplitDlg(CWnd* pParent = nullptr); // standard constructor
CFrameWnd* m_pMyFrame;
CSplitterWnd m_cSplitter;
....
}
// cpp 파일.
int CDlgSplitDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogEx::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
// Initialize a context for the view. CDialog1 is my view and
// is defined as : class CDIalog1 : public CTreeView.
CCreateContext ccc;
ccc.m_pNewViewClass = RUNTIME_CLASS(CDialog1);
ccc.m_pCurrentDoc = NULL;
ccc.m_pNewDocTemplate = NULL;
ccc.m_pLastView = NULL;
ccc.m_pCurrentFrame = NULL;
// Because the CFRameWnd needs a window class, we will create
// a new one. I just copied the sample from MSDN Help.
// When using it in your project, you may keep CS_VREDRAW and
// CS_HREDRAW and then throw the other three parameters.
CString strMyClass = AfxRegisterWndClass(CS_VREDRAW |
CS_HREDRAW,
::LoadCursor(NULL, IDC_ARROW),
(HBRUSH) ::GetStockObject(WHITE_BRUSH),
::LoadIcon(NULL, IDI_APPLICATION));
// Create the frame window with "this" as the parent
m_pMyFrame = new CFrameWnd;
m_pMyFrame->Create(strMyClass, _T(""), WS_CHILD,
CRect(0, 0, 1, 1), this);
m_pMyFrame->ShowWindow(SW_SHOW);
m_pMyFrame->MoveWindow(0, 0, 300, 300);
// and finally, create the splitter with the frame as
// the parent
m_cSplitter.CreateStatic(m_pMyFrame, 2, 2);
m_cSplitter.CreateView(0, 0, RUNTIME_CLASS(CDialog1),
CSize(100, 100), &ccc);
m_cSplitter.CreateView(0, 1, RUNTIME_CLASS(CDialog1),
CSize(100, 100), &ccc);
m_cSplitter.CreateView(1, 0, RUNTIME_CLASS(CDialog1),
CSize(100, 100), &ccc);
m_cSplitter.CreateView(1, 1, RUNTIME_CLASS(CDialog1),
CSize(100, 100), &ccc);
return 0;
}
BOOL CDlgSplitDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != nullptr)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
CRect cRect;
// Get the rectangle of the custom window. The custom window
// is just a a big button that is not visible and is disabled.
// It's a trick to not use coordinates directly.
// GetDlgItem(IDC_CUSTOM_WINDOW)->GetWindowRect(&cRect);
GetClientRect(cRect);
// Move the splitter
// ScreenToClient(&cRect);
m_pMyFrame->MoveWindow(&cRect);
m_pMyFrame->ShowWindow(SW_SHOW);
m_cSplitter.MoveWindow(0, 0, cRect.Width(), cRect.Height());
m_cSplitter.ShowWindow(SW_SHOW);
return TRUE; // return TRUE unless you set the focus to a control
}
from : Creating a Splitter Window in a Dialog Box in Three Easy Steps (codeguru.com)
첫 등록 : 2020.12.05
최종 수정 :
단축 주소 : https://igotit.tistory.com/2722
'VisualStudio.C++.C# > 코딩팁,함수활용,단편' 카테고리의 다른 글
C#. MS 공식지원 WebSocket 라이브러리. (0) | 2020.12.26 |
---|---|
C#. WebSocketSharp. 웹소켓 라이브러리. (3) | 2020.12.26 |
MFC.Control. Custom Draw (2) | 2020.11.19 |
SetWindowTheme. (0) | 2020.11.19 |
MFC. CHeaderCtrl. (0) | 2020.11.18 |
댓글