ColorSelect.cpp
资源名称:44757463.rar [点击查看]
上传用户:lj3531212
上传日期:2007-06-18
资源大小:346k
文件大小:18k
源码类别:
绘图程序
开发平台:
Visual C++
- #include "stdafx.h"
- #include "ColorSelect.h"
- #include "GraphSoftView.h"
- #include "MainFrm.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- #define LPARAM_X(lp) ((int)(short)LOWORD(lp))
- #define LPARAM_Y(lp) ((int)(short)HIWORD(lp))
- #define WM_SETCOLOR WM_USER+1
- #define WM_COLORDLG WM_USER+2
- #define IDC_COLORDLG_BUTTON 100
- /////////////////////////////////////////////////////////////////////////////
- // CColorSelect
- CColorSelect::CColorSelect()
- {
- int cxCursor = ::GetSystemMetrics(SM_CXCURSOR);
- int cyCursor = ::GetSystemMetrics(SM_CYCURSOR);
- m_hCursorStraw = NULL;
- m_CurrentColor = RGB(0,0,0);
- m_hPaletteWnd = NULL;
- m_bPaletteWndActive = FALSE;
- }
- CColorSelect::~CColorSelect()
- {
- ::DestroyCursor(m_hCursorStraw);
- }
- BEGIN_MESSAGE_MAP(CColorSelect, CButton)
- //{{AFX_MSG_MAP(CColorSelect)
- ON_WM_LBUTTONDOWN()
- ON_WM_LBUTTONUP()
- ON_WM_SETCURSOR()
- ON_WM_PAINT()
- ON_WM_MOUSEMOVE()
- ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
- ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)
- ON_WM_LBUTTONDBLCLK()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CColorSelect message handlers
- void CColorSelect::OnLButtonDown(UINT nFlags, CPoint point)
- {
- // CButton::OnLButtonDown(nFlags, point);
- if(m_rectSel.PtInRect(point))//如果点中的是右边箭头部分
- {
- ::ClientToScreen(this->m_hWnd,&point);
- if(CreatePaletteWindow())
- {
- nFlags = (UINT)m_CurrentColor;
- ::PostMessage(m_hPaletteWnd,WM_LBUTTONDOWN,nFlags,MAKELPARAM(point.x,point.y));
- }
- HWND hwndParent = GetParent()->m_hWnd;
- if(hwndParent)
- {
- POINT p1,p2;
- RECT rect;
- ::GetWindowRect(m_hWnd,&rect);
- p1.x = rect.left;
- p1.y = rect.top;
- p2.x = rect.right;
- p2.y = rect.bottom;
- ::ScreenToClient(hwndParent,&p1);
- ::ScreenToClient(hwndParent,&p2);
- rect.left = p1.x;
- rect.top = p1.y;
- rect.right = p2.x;
- rect.bottom = p2.y;
- ::InvalidateRect(hwndParent,&rect,TRUE);
- }
- }
- else
- {
- //如果点中的是左边部分。。。
- CPaintDC dc(this); // device context for painting
- dc.DrawEdge(&m_rectFill,BDR_SUNKENINNER,BF_RECT);
- }
- }
- void CColorSelect::OnLButtonUp(UINT nFlags, CPoint point)
- {
- if(NULL!=m_hPaletteWnd){
- if((COLORREF)nFlags != m_CurrentColor){
- SetColor((COLORREF)nFlags);
- }
- DestroyPaletteWindow();
- }
- Invalidate();
- }
- LONG FAR PASCAL CColorSelect::PaletteWndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
- {
- HDC hDC;
- PAINTSTRUCT ps;
- POINT point;
- CRect crtColorRect(5,87,50,103);
- static POINT oldPoint;
- static BOOL bMouseMoved = FALSE;
- static HWND hwndParent;
- static HWND hwndColorBtn;
- static HFONT hFont = NULL;
- static COLORREF crtColor,oldColor;
- static int iActiveRect = -1;
- CPen pen3DDKShadow(PS_SOLID,1,::GetSysColor(COLOR_3DDKSHADOW));
- CPen penW(PS_SOLID,1,RGB(0xff,0xff,0xff));
- CPen penB(PS_SOLID,1,RGB(0,0,0));
- CRect rectColorBtn(135,90,151,106);
- static int nDrawColorBtnFlag; //1----sunken
- //2----raised
- switch(nMsg)
- {
- case WM_CREATE:
- {
- hwndParent = ((LPCREATESTRUCT)lParam)->hwndParent;
- crtColor = ::GetSysColor(COLOR_3DFACE);
- LOGFONT logFont;
- ZeroMemory((void*)&logFont,sizeof(logFont));
- strcpy(logFont.lfFaceName,"宋体");
- logFont.lfHeight = -12;
- logFont.lfWeight = 400;
- logFont.lfCharSet = GB2312_CHARSET;
- logFont.lfOutPrecision = 3;
- logFont.lfClipPrecision = 2;
- logFont.lfQuality = 1;
- logFont.lfPitchAndFamily = 2;
- hFont = ::CreateFontIndirect(&logFont);
- ////色彩对话框按钮
- hwndColorBtn = ::CreateWindow("BUTTON","",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,rectColorBtn.left ,rectColorBtn.top,rectColorBtn.Width(),rectColorBtn.Height(),hWnd,HMENU(IDC_COLORDLG_BUTTON),::AfxGetInstanceHandle(),NULL);
- if(hwndColorBtn)
- ::ShowWindow(hwndColorBtn,SW_SHOW);
- nDrawColorBtnFlag=1;
- }
- break;
- case WM_DESTROY:
- ::DeleteObject(hFont);
- break;
- case WM_DRAWITEM:
- {
- LPDRAWITEMSTRUCT lpDis = (LPDRAWITEMSTRUCT)lParam;
- if(lpDis->CtlID == IDC_COLORDLG_BUTTON)
- {
- CRect rect=lpDis->rcItem;
- ::FillRect(lpDis->hDC,&rect,(HBRUSH)::GetStockObject(BLACK_BRUSH));
- ::Rectangle(lpDis->hDC,rect.left+1,rect.top+1,rect.right-1,rect.bottom-1);
- ::SetBkColor(lpDis->hDC, RGB(0xff,0,0));
- ::ExtTextOut(lpDis->hDC, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);
- rect.left+=4;
- rect.top+=4;
- ::Rectangle(lpDis->hDC,rect.left+1,rect.top+1,rect.right-1,rect.bottom-1);
- ::SetBkColor(lpDis->hDC, RGB(0,0xff,0));
- ::ExtTextOut(lpDis->hDC, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);
- rect.left+=4;
- rect.top+=4;
- ::Rectangle(lpDis->hDC,rect.left+1,rect.top+1,rect.right-1,rect.bottom-1);
- ::SetBkColor(lpDis->hDC, RGB(0,0,0xff));
- ::ExtTextOut(lpDis->hDC, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);
- rect=lpDis->rcItem;
- //::DrawEdge(lpDis->hDC,&rect,BDR_RAISEDINNER,BF_RECT);
- }
- }
- break;
- case WM_SETCOLOR:
- crtColor = (COLORREF)wParam;
- oldColor = crtColor;
- break;
- case WM_COMMAND:
- ::PostMessage(hwndParent,WM_COLORDLG,NULL,NULL);
- break;
- case WM_MOUSEMOVE:
- {
- BOOL bInCtrlArea = FALSE;
- point.x = LPARAM_X(lParam);
- point.y = LPARAM_Y(lParam);
- ::ClientToScreen(hWnd,&point);
- HWND hwndPoint = ::WindowFromPoint(point);
- //::ScreenToClient(hWnd,&point);
- //{
- // if(hwndPoint==hwndColorBtn){// &&nDrawColorBtnFlag==2
- // HDC hDC;
- // hDC = ::GetWindowDC(hwndPoint);
- // CRect rect(0,0,16,16);
- // ::DrawEdge(hDC,&rect,BDR_SUNKENINNER,BF_RECT);
- // nDrawColorBtnFlag=1;
- // TRACE("hwndColorBtn:%dn",hwndColorBtn);
- // }else if(hwndPoint==hWnd&&nDrawColorBtnFlag!=1&&rectColorBtn.PtInRect(point)){
- // HDC hDC;
- // hDC = ::GetWindowDC(hwndPoint);
- // ::DrawEdge(hDC,&rectColorBtn,BDR_SUNKENINNER,BF_RECT);
- // nDrawColorBtnFlag=1;
- // TRACE("hwndColorBtn:%dn",hwndColorBtn);
- // }else if(hwndPoint==hWnd&&nDrawColorBtnFlag==1){
- // HDC hDC;
- // hDC = ::GetWindowDC(hwndPoint);
- // ::DrawEdge(hDC,&rectColorBtn,BDR_RAISEDINNER,BF_RECT);
- // nDrawColorBtnFlag=2;
- // }
- // TRACE("hwndpoind :%d, hwndParent:%d,hwndColorBtn:%dn",hwndPoint,hWnd,hwndColorBtn);
- //}
- //::ClientToScreen(hWnd,&point);
- if(point.x != oldPoint.x || point.y != oldPoint.y)
- {
- bMouseMoved = TRUE;
- if(hwndPoint)
- {
- COLORREF crtTMPColor;
- CRect rect;
- HDC hDC;
- hDC = ::GetWindowDC(hwndPoint);
- ::GetWindowRect(hwndPoint,&rect);
- int i=0,j=0;
- i=(point.x-rect.left)/20;
- j=(point.y-rect.top)/10;
- crtTMPColor = GetPixel(hDC,i*20 + 5,j*10+5);
- ::ReleaseDC(hWnd,hDC);
- RECT redrawRect;
- redrawRect.left = 0;
- redrawRect.right = 160;
- redrawRect.top = 80;
- redrawRect.bottom = 110;
- ::GetWindowRect(hWnd,&rect);
- rect.bottom = rect.top + 80;
- int iCurrentActiveRect;
- //
- if(rect.PtInRect(point))///判断鼠标是否在当前窗口的色彩区域
- {
- ////计算位于哪个方框内////
- point.x -= rect.left;
- point.y -= rect.top;
- if(point.x%20 != 0 && point.y%10 != 0)
- iCurrentActiveRect = point.y/10*8 + point.x/20;
- else
- iCurrentActiveRect = -1;
- }else{
- iCurrentActiveRect = -1;
- crtColor = oldColor;
- if(hwndColorBtn == hwndPoint)
- ::ReleaseCapture();
- else
- bInCtrlArea = TRUE;
- }
- if(iCurrentActiveRect != iActiveRect)
- {
- ///清除原焦点
- CRect ActiveRect;
- ActiveRect.left = iActiveRect%8*20;
- ActiveRect.top = iActiveRect/8*10;
- ActiveRect.right = ActiveRect.left + 20;
- ActiveRect.bottom = ActiveRect.top + 10;
- ::InvalidateRect(hWnd,&ActiveRect,TRUE);
- ///新焦点
- if(iCurrentActiveRect != -1)
- {
- crtColor = crtTMPColor;
- ActiveRect.left = iCurrentActiveRect%8*20;
- ActiveRect.top = iCurrentActiveRect/8*10;
- ActiveRect.right = ActiveRect.left + 20;
- ActiveRect.bottom = ActiveRect.top + 10;
- ::InvalidateRect(hWnd,&ActiveRect,TRUE);
- }
- ::InvalidateRect(hWnd,&redrawRect,TRUE);
- iActiveRect = iCurrentActiveRect;
- }
- }
- }
- if(bInCtrlArea)
- ::PostMessage(hwndParent,WM_SETCURSOR,NULL,MAKELPARAM(1,0));
- else
- ::PostMessage(hwndParent,WM_SETCURSOR,NULL,NULL);
- }
- break;
- case WM_ACTIVATE:
- if(LOWORD(wParam) != WA_INACTIVE)
- break;
- case WM_LBUTTONUP:
- point.x = LPARAM_X(lParam);
- point.y = LPARAM_Y(lParam);
- if(bMouseMoved || ( point.x == oldPoint.x && point.y == oldPoint.y ))
- ::PostMessage(hwndParent,WM_LBUTTONUP,(UINT)crtColor,lParam);
- break;
- case WM_LBUTTONDOWN:
- oldPoint.x = LPARAM_X(lParam);
- oldPoint.y = LPARAM_Y(lParam);
- bMouseMoved = FALSE;
- ::InvalidateRect(hWnd,&crtColorRect,TRUE);
- break;
- case WM_ERASEBKGND:
- {
- hDC = (HDC)wParam;
- HPEN oldPen = (HPEN)::SelectObject(hDC,penB);
- for(int i=0;i<=8;i++)
- {
- ::MoveToEx(hDC,i*20,0,NULL);
- ::LineTo(hDC,i*20,80);
- }
- for(i=0;i<=8;i++)
- {
- ::MoveToEx(hDC,0,i*10,NULL);
- ::LineTo(hDC,160,i*10);
- }
- CRect btmRect(0,80,160,110);
- ::FillRect(hDC,btmRect,(HBRUSH)::GetStockObject(LTGRAY_BRUSH));
- ::Rectangle(hDC,crtColorRect.left-1,crtColorRect.top-1,crtColorRect.right + 1,crtColorRect.bottom + 1);
- ::SelectObject(hDC,oldPen);
- }
- break;
- case WM_PAINT:
- {
- hDC = ::BeginPaint(hWnd,&ps);
- CDC dc;
- dc.Attach(hDC);
- CRect rect;
- int x1,y1,i,j,k;
- UCHAR R=0,G=0,B=0;
- //xgl 2004.3.11
- //初始颜色的配置:分R,G,B三块,4*4为基元,先行后列,B 增加;基元内:R按行增加,G按列增加
- for(j = 0;j < 8;j++)
- for(i = 0;i < 8;i++)
- {
- x1 = j*20;
- y1 = i*10;
- //85=256/3;
- R=85*(i%4);
- G=85*(j%4);
- B=((i/4)*2+j/4)*85;
- rect.SetRect(x1,y1,x1+20,y1+10);
- dc.FillSolidRect(rect,RGB(0,200,200));
- rect.SetRect(x1+2,y1+1,x1+18,y1+9);
- dc.FillSolidRect(rect,RGB(10,10,10));
- rect.SetRect(x1+3,y1+2,x1+17,y1+8);
- dc.FillSolidRect(rect,RGB(R,G,B));
- }
- if(iActiveRect != -1)
- {
- CRect ActiveRect;
- ActiveRect.left = iActiveRect%8*20;
- ActiveRect.top = iActiveRect/8*10;
- ActiveRect.right = ActiveRect.left + 20;
- ActiveRect.bottom = ActiveRect.top + 10;
- dc.DrawFocusRect(ActiveRect);
- }
- rect.SetRect(0,81,160,82);
- dc.FillSolidRect(rect,RGB(0,0,0));
- rect.SetRect(0,82,160,110);
- dc.FillSolidRect(rect,RGB(12,180,180));
- dc.FillSolidRect(crtColorRect.left-2,crtColorRect.top-2,crtColorRect.Width()+4,crtColorRect.Height()+4,RGB(0,0,0));
- dc.FillSolidRect(crtColorRect,crtColor);
- char strColor[8]="#";
- sprintf(strColor+1,"%02X%02X%02X",GetRValue(crtColor),GetGValue(crtColor),GetBValue(crtColor));
- HFONT hOldFont = (HFONT)dc.SelectObject(hFont);
- dc.SetBkMode(TRANSPARENT);
- dc.TextOut(80,90,strColor,7);
- dc.SelectObject(hOldFont);
- dc.Detach();
- ::EndPaint(hWnd,&ps);
- }
- break;
- default:
- return(::DefWindowProc(hWnd,nMsg,wParam,lParam));
- }
- return NULL;
- }
- BOOL CColorSelect::CreatePaletteWindow()
- {
- if(!m_bPaletteWndActive)
- {
- // 创建调色板子窗口
- WNDCLASS wndcls;
- wndcls.style = CS_HREDRAW | CS_VREDRAW;
- wndcls.lpfnWndProc = PaletteWndProc;
- wndcls.cbClsExtra = wndcls.cbWndExtra = 0;
- wndcls.hInstance = ::AfxGetInstanceHandle();
- wndcls.hIcon = NULL;
- wndcls.hCursor = NULL;
- wndcls.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);
- wndcls.lpszMenuName = NULL;
- wndcls.lpszClassName = "ColorPalette";
- if (!::RegisterClass(&wndcls))
- AfxThrowResourceException();
- HDC hDC = ::GetDC(m_hWnd);
- int scrWidth = ::GetDeviceCaps(hDC,HORZRES);
- int scrHeight = ::GetDeviceCaps(hDC,VERTRES);
- ::ReleaseDC(m_hWnd,hDC);
- CRect rect;
- GetWindowRect(rect);
- rect.top = rect.bottom - 1;
- if(rect.left > scrWidth-160)
- rect.left = scrWidth-160;
- else if(rect.left < 0)
- rect.left = 0;
- if(rect.top > scrHeight-110)
- rect.top = rect.top-110;
- rect.bottom = rect.top + 110;
- rect.right = rect.left + 160;
- if(!(m_hPaletteWnd = ::CreateWindowEx(WS_EX_TOPMOST,"ColorPalette","Palatte",WS_POPUP|WS_BORDER|WS_VISIBLE,rect.left,rect.top,rect.Width(),rect.Height(),m_hWnd,NULL,wndcls.hInstance,NULL)))
- return FALSE;
- }
- ::PostMessage(m_hPaletteWnd,WM_SETCOLOR,(WPARAM)m_CurrentColor,NULL);
- ::ShowWindow(m_hPaletteWnd,SW_SHOW);
- ::SetCapture(m_hPaletteWnd);
- m_bPaletteWndActive = TRUE;
- return TRUE;
- }
- void CColorSelect::DestroyPaletteWindow()
- {
- ::DestroyWindow(m_hPaletteWnd);
- ::UnregisterClass("ColorPalette",::AfxGetInstanceHandle());
- m_bPaletteWndActive = FALSE;
- m_hPaletteWnd = NULL;
- }
- BOOL CColorSelect::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
- {
- if(m_bPaletteWndActive && m_hCursorStraw && nHitTest != 1)
- ::SetCursor(m_hCursorStraw);
- else
- ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
- return TRUE;
- }
- void CColorSelect::GetColor(CString& strColor)
- {
- char cColor[8]="#";
- sprintf(cColor+1,"%02X%02X%02X",GetRValue(m_CurrentColor),GetGValue(m_CurrentColor),GetBValue(m_CurrentColor));
- strColor = cColor;
- }
- COLORREF CColorSelect::GetColor()
- {
- return m_CurrentColor;
- }
- LRESULT CColorSelect::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
- {
- if(message == WM_COLORDLG)
- {
- DestroyPaletteWindow();
- CColorDialog dlg;
- //dlg.m_cc.Flags |= CC_FULLOPEN;
- if(dlg.DoModal() == IDOK){
- SetColor(dlg.GetColor());
- }
- return TRUE;
- }
- else
- return CButton::DefWindowProc(message, wParam, lParam);
- }
- void CColorSelect::SetColor(COLORREF ref)
- {
- m_CurrentColor = ref;
- ((CGraphSoftView*)((CMainFrame*)AfxGetApp()->GetMainWnd())->GetActiveView())->m_clrCurrentColor=ref;
- Invalidate();
- }
- void CColorSelect::OnPaint()
- {
- CPaintDC dc(this); // device context for painting
- // TODO: Add your message handler code here
- //xiagl@fnst 2004.3.10(add_start)
- //Draw the left half of ColorPicker
- dc.FillSolidRect(m_rectFill,RGB(((int)GetRValue(m_CurrentColor)+128)%256,((int)GetGValue(m_CurrentColor)+128)%256,((int)GetBValue(m_CurrentColor)+128)%256));
- CPen pen1,*m_poldPen;
- LOGBRUSH m_logbr1;
- m_logbr1.lbStyle=BS_SOLID;
- m_logbr1.lbColor=m_CurrentColor;
- pen1.CreatePen(PS_GEOMETRIC, m_rectFill.Height()/8, &m_logbr1);
- m_poldPen=dc.SelectObject(&pen1);
- dc.MoveTo(m_rectFill.left+m_rectFill.Width()/8,m_rectFill.top+m_rectFill.Height()*7/8);
- dc.LineTo(m_rectFill.Width()/2,m_rectFill.top+m_rectFill.Height()/8);
- dc.LineTo(m_rectFill.left+m_rectFill.Width()*7/8,m_rectFill.top+m_rectFill.Height()*7/8);
- dc.LineTo(m_rectFill.left+m_rectFill.Width()*7/8-2,m_rectFill.top+m_rectFill.Height()*7/8-2);
- dc.MoveTo(m_rectFill.left+m_rectFill.Width()*5/16,m_rectFill.top+m_rectFill.Height()/2);
- dc.LineTo(m_rectFill.left+m_rectFill.Width()*11/16,m_rectFill.top+m_rectFill.Height()/2);
- dc.SelectObject(m_poldPen);
- //Draw the right half of ColorPicker
- CPoint points[3];
- points[0].x=m_rectSel.left+m_rectSel.Width()*1.0/4;
- points[0].y=m_rectSel.Height()*0.5;
- points[1].x=m_rectSel.left+m_rectSel.Width()*1.0/2;
- points[1].y=m_rectSel.Height()*0.7;
- points[2].x=m_rectSel.left+m_rectSel.Width()*3.0/4+1;
- points[2].y=m_rectSel.Height()*0.5;
- CRgn rgn;
- rgn.CreatePolygonRgn(points,3,1);
- CBrush brush,*p_oldbr;
- brush.CreateSolidBrush(RGB(0,0,0));
- p_oldbr=dc.SelectObject(&brush);
- dc.FillRgn(&rgn,&brush);
- dc.SelectObject(p_oldbr);
- //xiagl@fnst 2004.3.10(add_start)
- // Do not call CButton::OnPaint() for painting messages
- }
- void CColorSelect::SetFillRect(CRect rect)
- {
- this->m_rectFill.left=rect.left;
- this->m_rectFill.right=rect.right;
- this->m_rectFill.top=rect.top;
- this->m_rectFill.bottom=rect.bottom;
- }
- void CColorSelect::SetFillRect(int left,int top,int right,int bottom)
- {
- this->m_rectFill.left=left;
- this->m_rectFill.right=right;
- this->m_rectFill.top=top;
- this->m_rectFill.bottom=bottom;
- }
- CRect CColorSelect::GetFillRect()
- {
- return this->m_rectFill;
- }
- void CColorSelect::SetSelRect(CRect rect)
- {
- this->m_rectSel.left=rect.left;
- this->m_rectSel.right=rect.right;
- this->m_rectSel.top=rect.top;
- this->m_rectSel.bottom=rect.bottom;
- }
- void CColorSelect::SetSelRect(int left,int top,int right,int bottom)
- {
- this->m_rectSel.left=left;
- this->m_rectSel.right=right;
- this->m_rectSel.top=top;
- this->m_rectSel.bottom=bottom;
- }
- CRect CColorSelect::GetSelRect()
- {
- return this->m_rectSel;
- }
- void CColorSelect::OnMouseMove(UINT nFlags, CPoint point)
- {
- // TODO: Add your message handler code here and/or call default
- TRACKMOUSEEVENT tme;
- tme.cbSize = sizeof(tme);
- tme.hwndTrack = m_hWnd;
- tme.dwFlags = TME_LEAVE | TME_HOVER;
- tme.dwHoverTime = 1;
- _TrackMouseEvent(&tme);
- CClientDC dc(this);
- if(m_rectFill.PtInRect(point)){
- dc.DrawEdge(&m_rectFill,BDR_RAISEDINNER,BF_RECT);
- dc.DrawEdge(&m_rectSel,BDR_RAISEDINNER,BF_RECT);
- }else if(m_rectSel.PtInRect(point)){
- dc.DrawEdge(&m_rectFill,BDR_RAISEDINNER,BF_RECT);
- dc.DrawEdge(&m_rectSel,BDR_RAISEDINNER,BF_RECT);
- }
- CButton::OnMouseMove(nFlags, point);
- }
- LRESULT CColorSelect::OnMouseLeave(WPARAM wParam, LPARAM lParam)
- {
- HWND hwndParent = GetParent()->m_hWnd;
- if(hwndParent)
- {
- POINT p1,p2;
- RECT rect;
- ::GetWindowRect(m_hWnd,&rect);
- p1.x = rect.left;
- p1.y = rect.top;
- p2.x = rect.right;
- p2.y = rect.bottom;
- ::ScreenToClient(hwndParent,&p1);
- ::ScreenToClient(hwndParent,&p2);
- rect.left = p1.x;
- rect.top = p1.y;
- rect.right = p2.x;
- rect.bottom = p2.y;
- ::InvalidateRect(hwndParent,&rect,TRUE);
- }
- return 0;
- }
- LRESULT CColorSelect::OnMouseHover(WPARAM wParam, LPARAM lParam)
- {
- return 0;
- }
- void CColorSelect::OnLButtonDblClk(UINT nFlags, CPoint point)
- {
- // TODO: Add your message handler code here and/or call default
- //CButton::OnLButtonDblClk(nFlags, point);
- }