16,472
社区成员
发帖
与我相关
我的任务
分享
protected:
CStatusBar m_wndStatusBar;
CTimeBar m_TimeBar;
CSplitterWndEx m_wndSplitter;
CColorBar m_ColorBar;
bool m_IsButtonDown; //鼠标左键是否已经按下过
colorbar_button* m_SelectButton; //被选中的元素
vector<colorbar_button*>::iterator vi;
for(vi=m_ButtonList.begin();vi!=m_ButtonList.end();++vi)
{
delete (*vi);
}
class CSplitterWndEx:public CSplitterWnd
{
private:
CColorX m_BorderColor; //边框颜色
CColorX m_BorderFillColor; //边框填充色
bool m_IsClick; //是否处于调整模式
public:
GET_SET_ACCESSOR(CColorX,BorderColor);
GET_SET_ACCESSOR(CColorX,BorderFillColor);
CSplitterWndEx();
public:
virtual void OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rect);
DECLARE_MESSAGE_MAP()
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
};
void CSplitterWndEx::OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rect)
{
// TODO: 在此添加专用代码和/或调用基类
int CX_BORDER=1,CY_BORDER=1;
if(pDC==NULL)
{
RedrawWindow(rect,NULL,RDW_INVALIDATE|RDW_NOCHILDREN);
return;
}
ASSERT_VALID(pDC);
CRect rc=rect;
switch(nType)
{
case splitBorder:
{
//重画分割窗口边界,使之为红色
pDC->Draw3dRect(rc,m_BorderColor.ToRGB(),m_BorderColor.ToRGB());
rc.InflateRect(-CX_BORDER,-CY_BORDER);
pDC->Draw3dRect(rc,m_BorderColor.ToRGB(),m_BorderColor.ToRGB());
break;
}
case splitBox:
{
pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));
rc.InflateRect(-CX_BORDER,-CY_BORDER);
pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));
rc.InflateRect(-CX_BORDER,-CY_BORDER);
pDC->FillSolidRect(rc,RGB(0,0,0));
pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));
break;;
}
case splitBar:
{
//重画分割条,使之为绿色
pDC->FillSolidRect(rc,m_BorderFillColor.ToRGB());
break;
}
default:
ASSERT(FALSE);
}
}
CSplitterWndEx::CSplitterWndEx()
{
m_BorderColor=D3DCOLOR_ARGB(255,200,200,200);
m_BorderFillColor=D3DCOLOR_ARGB(255,150,150,150);
m_IsClick=false;
}
BEGIN_MESSAGE_MAP(CSplitterWndEx, CSplitterWnd)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
END_MESSAGE_MAP()
void CSplitterWndEx::OnLButtonDown(UINT nFlags, CPoint point)
{
CSplitterWnd::OnLButtonDown(nFlags, point);
GetGlobalEngine()->Stop();
}
void CSplitterWndEx::OnLButtonUp(UINT nFlags, CPoint point)
{
CSplitterWnd::OnLButtonUp(nFlags, point);
GetGlobalEngine()->Start();
}