www.pudn.com > SDKSkin.rar > SkinAdjust.cpp


// SkinAdjust.cpp 
#include "stdafx.h" 
#include "SkinAdjust.h" 
#include "SkinIni.h" 
#include "RNHBitmap.h" 
 
SkinAdjust::SkinAdjust(SKINMSG msg_) 
{ 
	SetMsg(msg_); 
} 
 
SkinAdjust::~SkinAdjust() 
{ 
} 
 
LRESULT SkinAdjust::AdjustNcCalcSize() 
{ 
	if(SkinWndState::IsMenu(wMsg._hWnd) || 
		!SkinWndState::HasBorders(wMsg._hWnd) || 
		SkinIni::Instance()->IsValid() == false) 
	{ 
		return SkinResList::CallDefWndProc(wMsg); 
	} 
 
	BOOL bCalcValidRects = (BOOL)wMsg._wPm; 
	 
	if(bCalcValidRects) 
	{ 
		NCCALCSIZE_PARAMS *lpncsp = (NCCALCSIZE_PARAMS *)wMsg._lPm; 
 
		if(SkinWndState::IsDrawCaption(wMsg._hWnd)) 
		{ 
			lpncsp->rgrc[1] = lpncsp->rgrc[0]; 
		 
			if(SkinWndState::GetWndMenu(wMsg._hWnd)) 
			{ 
				//lpncsp->rgrc[0].top += SkinCommon::GetCYMenu(); 
				lpncsp->rgrc[0].top += SkinMenuBar::CaclMenuBarHei(wMsg._hWnd); 
			} 
			 
			lpncsp->rgrc[0].left += skIni->GetFrmParam().nLeftWidth; 
			lpncsp->rgrc[0].top += skIni->GetFrmParam().nTopHeight;			 
			lpncsp->rgrc[0].right -= skIni->GetFrmParam().nRightWidth; 
			lpncsp->rgrc[0].bottom -= skIni->GetFrmParam().nBotHeight; 
		} 
		else 
		{ 
			lpncsp->rgrc[2].left = lpncsp->rgrc[1].left+skIni->GetFrmParam().nLBorWid; 
			lpncsp->rgrc[2].top = lpncsp->rgrc[1].top+skIni->GetFrmParam().nTBorHei; 
			lpncsp->rgrc[2].right = lpncsp->rgrc[1].right-skIni->GetFrmParam().nRBorWid; 
			lpncsp->rgrc[2].bottom = lpncsp->rgrc[1].bottom-skIni->GetFrmParam().nBBorHei; 
			 
			lpncsp->rgrc[1] = lpncsp->rgrc[0]; 
 
			lpncsp->rgrc[0].left += skIni->GetFrmParam().nLBorWid; 
			lpncsp->rgrc[0].top += skIni->GetFrmParam().nTBorHei;			 
			lpncsp->rgrc[0].right -= skIni->GetFrmParam().nRBorWid; 
			lpncsp->rgrc[0].bottom -= skIni->GetFrmParam().nBBorHei; 
		} 
 
		return WVR_VALIDRECTS | WVR_REDRAW; 
		return PROC_FILTER; 
	} 
	else 
	{ 
		/*LPRECT lpncsp = (LPRECT)wMsg._lPm; 
		lpncsp->left += skIni->GetFrmParam().nLeftWidth; 
		lpncsp->top += skIni->GetFrmParam().nTopHeight;	 
		if(::GetMenu(wMsg._hWnd)) 
		{ 
			lpncsp->top += SkinCommon::GetCYMenu(); 
		} 
		lpncsp->right -= skIni->GetFrmParam().nRightWidth; 
		lpncsp->bottom -= skIni->GetFrmParam().nBotHeight;*/ 
		//return PROC_FILTER; 
	} 
	return SkinResList::CallDefWndProc(wMsg); 
} 
 
LRESULT SkinAdjust::NcHitTest() 
{ 
	//return HTCLIENT; 
	if(SkinWndState::IsDrawCaption(wMsg._hWnd) == false) 
	{ 
		return PROC_DEFAULT; 
	} 
	SKRect htWndRect = SkinRect::GetWndRect(wMsg._hWnd); 
 
	RECT htRect = {0,0,0,0}; 
	int	 nTmHei = 0; 
	POINT pt; 
	pt.x = LOWORD(wMsg._lPm) - htWndRect.left(); 
	pt.y = HIWORD(wMsg._lPm) - htWndRect.top(); 
	 
	/*htRect.left = skIni->GetFrmParam().nLeftWidth; 
	htRect.top = skIni->GetFrmParam().nTopHeight; 
	htRect.right = htWndRect.Width() - skIni->GetFrmParam().nRightWidth; 
	htRect.bottom = htWndRect.Height() - skIni->GetFrmParam().nBotHeight; 
	if(PtInRect(&htRect,pt)) 
	{ 
		return HTCLIENT; 
	}*/ 
	 
	if(PtInRect(&(htRect=SkinRect::Close(wMsg._hWnd)),pt)) 
	{ 
		return HTCLOSE; 
	} 
	nTmHei = htRect.bottom; 
	htRect.bottom = htRect.top; 
	htRect.top = 0; 
	if(PtInRect(&htRect,pt)) 
	{ 
		return HTCAPTION; 
	} 
	htRect.top = nTmHei; 
	htRect.bottom = skIni->GetFrmParam().nTopHeight; 
	if(PtInRect(&htRect,pt)) 
	{ 
		return HTCAPTION; 
	} 
	 
	if(PtInRect(&(htRect=SkinRect::Max(wMsg._hWnd)),pt)) 
	{ 
		if(SkinWndState::HasMaxBox(wMsg._hWnd)) 
		{ 
			return HTMAXBUTTON; 
		} 
		else return HTCAPTION; 
	} 
	nTmHei = htRect.bottom; 
	htRect.bottom = htRect.top; 
	htRect.top = 0; 
 
	if(PtInRect(&htRect,pt)) 
	{ 
		return HTCAPTION; 
	} 
	htRect.top = nTmHei; 
	htRect.bottom = skIni->GetFrmParam().nTopHeight; 
	if(PtInRect(&htRect,pt)) 
	{ 
		return HTCAPTION; 
	} 
 
	if(PtInRect(&(htRect=SkinRect::Min(wMsg._hWnd)),pt)) 
	{ 
		if(SkinWndState::HasMinBox(wMsg._hWnd)) 
		{ 
			return HTMINBUTTON; 
		} 
		else return HTCAPTION; 
	} 
	nTmHei = htRect.bottom;	 
	htRect.bottom = htRect.top; 
	htRect.top = 0; 
	 
	if(PtInRect(&htRect,pt)) 
	{ 
		return HTCAPTION; 
	} 
	htRect.top = nTmHei; 
	htRect.bottom = skIni->GetFrmParam().nTopHeight; 
	if(PtInRect(&htRect,pt)) 
	{ 
		return HTCAPTION; 
	} 
	htRect = SkinRect::Caption(wMsg._hWnd); 
	htRect.top += SkinCommon::GetCYFrm(); 
	if(PtInRect(&htRect,pt)) 
	{ 
		return HTCAPTION; 
	} 
	if(SkinWndState::GetWndMenu(wMsg._hWnd)) 
	{ 
		htRect.top = htRect.bottom; 
		htRect.bottom = htRect.top + SkinMenuBar::CaclMenuBarHei(wMsg._hWnd);//SkinCommon::GetCYMenu(); 
		htRect.left = skIni->GetFrmParam().nLeftWidth; 
		htRect.right = htWndRect.Width()-skIni->GetFrmParam().nRightWidth; 
		if(PtInRect(&htRect,pt)) 
		{ 
			return HTMENU; 
		} 
	} 
	if(PtInRect(&(htRect=SkinRect::Icon(wMsg._hWnd)),pt)) 
	{ 
		return HTSYSMENU; 
	} 
	if(SkinWndState::IsSizable(wMsg._hWnd)) 
	{ 
		if(PtInRect(&(htRect=SkinRect::TopLeft(wMsg._hWnd)),pt)) 
		{ 
			return HTTOPLEFT; 
		} 
		if(PtInRect(&(htRect=SkinRect::LMFrm(wMsg._hWnd)),pt)) 
		{ 
			return HTLEFT; 
		} 
		if(PtInRect(&(htRect=SkinRect::BotLeft(wMsg._hWnd)),pt)) 
		{ 
			return HTBOTTOMLEFT; 
		} 
		if(PtInRect(&(htRect=SkinRect::BMFrm(wMsg._hWnd)),pt)) 
		{ 
			return HTBOTTOM; 
		} 
		 
		if(PtInRect(&(htRect=SkinRect::BotRight(wMsg._hWnd)),pt)) 
		{ 
			return HTBOTTOMRIGHT; 
		} 
		if(PtInRect(&(htRect=SkinRect::RMFrm(wMsg._hWnd)),pt)) 
		{ 
			return HTRIGHT; 
		} 
		htRect = SkinRect::TMFrm(wMsg._hWnd); 
		htRect.bottom = SkinCommon::GetCYFrm(); 
		if(PtInRect(&htRect,pt)) 
		{ 
			return HTTOP; 
		} 
	} 
 
	htRect = SkinRect::TopRight(wMsg._hWnd); 
	if(PtInRect(&htRect,pt)) 
	{ 
		if(SkinWndState::IsSizable(wMsg._hWnd)) 
		{ 
			return HTTOPRIGHT; 
		} 
		else 
		{ 
			return HTCAPTION; 
		} 
	} 
 
	return HTCLIENT; 
	return PROC_DEFAULT; 
}