📄 sizebar.cpp
字号:
/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
文件:SizeBar.cpp 类CSizeBar的执行文件
版权:Firebird Software Workroom
声明:任何有机会得到本源程序的人,未经作者明确授权,不得将本源程序
用于任何商业目的。对于非商业目的的使用,亦请在相关文档中说明
其来源。
编写:秦传安 1999.12 - 2000.5
联络:Tel:(0792)6323086 E_mail:chings@163.net
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
#include "fclstd.h"
#include "FBCtrlBar.h"
//#######################################################################
//
// class CSizeBar
//
//#########################################################################
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CSizeBar::CSizeBar()
{
m_hChild = NULL;
}
CSizeBar::~CSizeBar()
{
}
///////////////////////////////////////////////////////////////////////
//窗口过程
LRESULT CSizeBar::WindowProc(UINT msg,WPARAM wParam,LPARAM lParam)
{
LRESULT lResult = 0;
switch(msg)
{
case WM_ERASEBKGND:
{
RECT rc;
GetChildWndRect(&rc);
ExcludeClipRect((HDC)wParam,rc.left,rc.top,rc.right,rc.bottom);
lResult = DefWindowProc(m_hWnd,msg,wParam,lParam);
}
break;
case WM_DRAWITEM:
lResult = SendMessage(m_hChild,msg,wParam,lParam);
break;
default:
lResult = CFBCtrlBar::WindowProc(msg,wParam,lParam);
break;
}
return lResult;
}
//////////////////////////////////////////////////////////////////////////////////////////
void CSizeBar::GetChildWndRect(LPRECT pRect)
{
GetClientRect(m_hWnd,pRect);
switch(m_nDockState)
{
case CB_DOCK_TOP:
pRect->top += 4;
pRect->bottom -= 8;
pRect->left += 14;
pRect->right -= 4;
break;
case CB_DOCK_BOTTOM:
pRect->top += 8;
pRect->bottom -= 4;
pRect->left += 14;
pRect->right -= 4;
break;
case CB_DOCK_LEFT:
pRect->top += 14;
pRect->bottom -= 4;
pRect->left += 4;
pRect->right -= 8;
break;
case CB_DOCK_RIGHT:
pRect->top += 14;
pRect->bottom -= 4;
pRect->left += 8;
pRect->right -= 4;
break;
default:
break;
}
}
//////////////////////////////////////////////////////////////////////////////////////////
void CSizeBar::SetChild(HWND hChild)
{
m_hChild = hChild;
SetParent(hChild,m_hWnd);
}
//////////////////////////////////////////////////////////////////////////////////////////
void CSizeBar::OnSize()
{
CFBCtrlBar::OnSize();
if(!m_hChild)return;
RECT rc;
GetChildWndRect(&rc);
SetWindowPos(m_hChild,NULL,rc.left,rc.top,
rc.right - rc.left,rc.bottom - rc.top,
SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOCOPYBITS);
}
////////////////////////////////////////////////////////////////////////////////
void CSizeBar::OnPaint(HDC hDC,LPRECT prcPaint)
{
RECT rc,rcClient;
GetClientRect(m_hWnd,&rc);
CopyRect(&rcClient,&rc);
switch(m_nDockState)
{
case CB_DOCK_TOP:
{
DrawEdge(hDC,&rcClient,EDGE_ETCHED,BF_LEFT);
DrawEdge(hDC,&rcClient,EDGE_ETCHED,BF_RIGHT);
rcClient.top = rcClient.bottom - 4;
rcClient.left += 1;
rcClient.right -= 1;
DrawEdge(hDC,&rcClient,BDR_RAISEDINNER,BF_TOP);
rc.top += 2;
rc.bottom -= 4;
}
break;
case CB_DOCK_BOTTOM:
{
DrawEdge(hDC,&rcClient,EDGE_ETCHED,BF_BOTTOMLEFT);
DrawEdge(hDC,&rcClient,EDGE_ETCHED,BF_RIGHT);
rcClient.bottom = rcClient.top + 4;
rcClient.left += 1;
rcClient.right -= 1;
DrawEdge(hDC,&rcClient,BDR_RAISEDINNER,BF_BOTTOM);
rc.top += 4;
rc.bottom -= 2;
}
break;
case CB_DOCK_LEFT:
{
DrawEdge(hDC,&rcClient,EDGE_ETCHED,BF_BOTTOMLEFT);
rcClient.left = rcClient.right - 4;
rcClient.top += 1;
rcClient.bottom -= 2;
DrawEdge(hDC,&rcClient,BDR_RAISEDINNER,BF_LEFT);
rc.left += 2;
rc.right -= 4;
}
break;
case CB_DOCK_RIGHT:
{
DrawEdge(hDC,&rcClient,EDGE_ETCHED,BF_BOTTOMRIGHT);
rcClient.right = rcClient.left + 4;
rcClient.top += 1;
rcClient.bottom -= 2;
DrawEdge(hDC,&rcClient,BDR_RAISEDINNER,BF_RIGHT);
rc.left += 4;
rc.right -= 2;
}
break;
}
DrawGripper(hDC,&rc);
CopyRect(&m_rcSizer,&rcClient);
}
////////////////////////////////////////////////////////////////////////////
void CSizeBar::OnNotify(LPNMHDR pNMHDR,LRESULT& lResult)
{
if(pNMHDR->hwndFrom == m_hChild)
lResult = SendMessage(m_hChild,WM_NOTIFY,(WPARAM)pNMHDR->idFrom,(LPARAM)pNMHDR);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -