새 파일 |
| | |
| | | #include "StdAfx.h" |
| | | #include "akWndArrange.h" |
| | | |
| | | |
| | | CakWndArrange::CakWndArrange(void) |
| | | { |
| | | m_pWndParent = NULL; |
| | | m_rectOriginal.SetRect(0,0,0,0); |
| | | } |
| | | |
| | | |
| | | CakWndArrange::~CakWndArrange(void) |
| | | { |
| | | clear(); |
| | | } |
| | | |
| | | void CakWndArrange::clear() |
| | | { |
| | | m_vecWndChild.clear(); |
| | | } |
| | | |
| | | void CakWndArrange::setParentWnd( CWnd* pWnd ) |
| | | { |
| | | m_pWndParent = pWnd; |
| | | pWnd->GetClientRect(m_rectOriginal); |
| | | } |
| | | |
| | | void CakWndArrange::addChildWnd( CWnd* pWnd, int nStyle ) |
| | | { |
| | | |
| | | _WndData data; |
| | | data.nStyle = nStyle; |
| | | data.hWnd = pWnd->GetSafeHwnd(); |
| | | |
| | | pWnd->GetWindowRect(&data.rectOrginal); |
| | | m_pWndParent->ScreenToClient(&data.rectOrginal); |
| | | |
| | | m_vecWndChild.push_back(data); |
| | | } |
| | | |
| | | void CakWndArrange::setChildStyle( CWnd* pWnd, int nStyle ) |
| | | { |
| | | HWND hWnd = pWnd->GetSafeHwnd(); |
| | | for(int i=0; i<m_vecWndChild.size(); i++) |
| | | { |
| | | if(m_vecWndChild[i].hWnd == hWnd) |
| | | { |
| | | m_vecWndChild[i].nStyle = nStyle; |
| | | } |
| | | } |
| | | } |
| | | |
| | | void CakWndArrange::process( int nWidth, int nHeight ) |
| | | { |
| | | if(nWidth*nHeight <= 0) return; |
| | | int nSize = m_vecWndChild.size(); |
| | | |
| | | _WndData WndChild; |
| | | CRect rectParentOrg = m_rectOriginal; |
| | | CRect rectNew; |
| | | for(int i=0; i<nSize; i++) |
| | | { |
| | | WndChild = m_vecWndChild[i]; |
| | | |
| | | rectNew = WndChild.rectOrginal; |
| | | if(WA_RIGHTTOP & WndChild.nStyle) |
| | | { |
| | | rectNew.left = nWidth - ((rectParentOrg.right)-WndChild.rectOrginal.left); |
| | | rectNew.right = rectNew.left + WndChild.rectOrginal.Width(); |
| | | } |
| | | else if(WA_LEFTBOTTOM & WndChild.nStyle) |
| | | { |
| | | rectNew.top = nHeight - ((rectParentOrg.bottom)-WndChild.rectOrginal.top); |
| | | rectNew.bottom = rectNew.top + WndChild.rectOrginal.Height(); |
| | | } |
| | | else if(WA_RIGHTBOTTOM & WndChild.nStyle) |
| | | { |
| | | rectNew.left = nWidth - ((rectParentOrg.right)-WndChild.rectOrginal.left); |
| | | rectNew.right = rectNew.left + WndChild.rectOrginal.Width(); |
| | | } |
| | | else if(WA_LEFTTOP & WndChild.nStyle) |
| | | { |
| | | |
| | | } |
| | | |
| | | if(WA_RESIZE_WIDTH & WndChild.nStyle) |
| | | { |
| | | rectNew.right += (nWidth-rectParentOrg.Width()); |
| | | } |
| | | if(WA_RESIZE_HEIGHT & WndChild.nStyle) |
| | | { |
| | | rectNew.bottom += (nHeight-rectParentOrg.Height()); |
| | | } |
| | | |
| | | MoveWindow(WndChild.hWnd, rectNew.left, rectNew.top, rectNew.Width(), rectNew.Height(), TRUE); |
| | | } |
| | | |
| | | } |