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;
}