반응형
void CDICOMViewerDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialogEx::OnSize(nType, cx, cy);
	
	MoveControlsToRight();

	CRect clientRect;
	GetClientRect(clientRect);

	m_LastClientBottomRight = clientRect.BottomRight();
}

void CDICOMViewerDlg::MoveControlsToRight()
{
	CWnd* pBtnNone = GetControl(IDC_BTN_NONE);
	CWnd* pBtnZoom = GetControl(IDC_BTN_ZOOM);
	CWnd* pBtnPan = GetControl(IDC_BTN_PAN);
	CWnd* pBtnRot = GetControl(IDC_BTN_ROTATE);
	CWnd* pBtnFit = GetControl(IDC_BTN_FIT);
	CWnd* pBtnHFlip = GetControl(IDC_BTN_HFLIP);
	CWnd* pBtnVFlip = GetControl(IDC_BTN_VFLIP);

	MoveControlToRight(pBtnNone);
	MoveControlToRight(pBtnZoom);
	MoveControlToRight(pBtnPan);
	MoveControlToRight(pBtnRot);
	MoveControlToRight(pBtnFit);
	MoveControlToRight(pBtnHFlip);
	MoveControlToRight(pBtnVFlip);
}

void CDICOMViewerDlg::MoveControlToRight(CWnd* control)
{
	if (control->GetSafeHwnd()) {
		CRect clientRect;
		GetClientRect(clientRect);

		CRect wndRect;
		control->GetWindowRect(wndRect);
		ScreenToClient(wndRect);

		CPoint offset = clientRect.BottomRight() - m_LastClientBottomRight;

		// move to right , bottom
		//wndRect.OffsetRect(offset);

		// move to right
		wndRect.OffsetRect(offset.x, 0);
		
		control->MoveWindow(wndRect);
		control->Invalidate();
	}

}

CWnd* CDICOMViewerDlg::GetControl(int nId)
{
	return (CWnd*)GetDlgItem(nId);
}

반응형

'[====== Development ======] > C++' 카테고리의 다른 글

Log4cxx Library Build  (0) 2021.07.30
c++/cli 문자 타입 변환  (0) 2021.07.24
GetVersionExA 에러  (0) 2021.07.22
C++ MBCS 경고 무시  (0) 2021.06.08
C++ Multibyte to Unicode  (0) 2021.06.04

+ Recent posts