FillSetDlg.cpp
资源名称:44757463.rar [点击查看]
上传用户:lj3531212
上传日期:2007-06-18
资源大小:346k
文件大小:5k
源码类别:
绘图程序
开发平台:
Visual C++
- // FillSetDlg.cpp : implementation file
- //
- #include "stdafx.h"
- #include "GraphSoft.h"
- #include "FillSetDlg.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CFillSetDlg dialog
- CFillSetDlg::CFillSetDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CFillSetDlg::IDD, pParent)
- {
- //{{AFX_DATA_INIT(CFillSetDlg)
- // NOTE: the ClassWizard will add member initialization here
- //}}AFX_DATA_INIT
- m_NoFillRect.left=1;
- m_NoFillRect.right=30;
- m_NoFillRect.top=0;
- m_NoFillRect.bottom=31;
- m_SolidRect.left=0;
- m_SolidRect.right=30;
- m_SolidRect.top=31;
- m_SolidRect.bottom=61;
- m_nOld=0;
- m_nCurrent=0;
- m_nSelect=-1;
- m_nMargin=1;
- m_pWndParent=pParent;
- }
- void CFillSetDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CFillSetDlg)
- // NOTE: the ClassWizard will add DDX and DDV calls here
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CFillSetDlg, CDialog)
- //{{AFX_MSG_MAP(CFillSetDlg)
- ON_WM_KILLFOCUS()
- ON_WM_LBUTTONDOWN()
- ON_WM_LBUTTONUP()
- ON_WM_MOUSEMOVE()
- ON_WM_PAINT()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CFillSetDlg message handlers
- BOOL CFillSetDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- // TODO: Add extra initialization here
- return TRUE; // return TRUE unless you set the focus to a control
- // EXCEPTION: OCX Property Pages should return FALSE
- }
- void CFillSetDlg::OnKillFocus(CWnd* pNewWnd)
- {
- CDialog::OnKillFocus(pNewWnd);
- // TODO: Add your message handler code here
- this->PostMessage(WM_COMMAND,IDCANCEL) ;
- }
- void CFillSetDlg::OnLButtonDown(UINT nFlags, CPoint point)
- {
- // TODO: Add your message handler code here and/or call default
- int i ;
- if(m_NoFillRect.PtInRect(point)) {
- SetStyle(0);
- this->PostMessage(WM_COMMAND,IDCANCEL) ;
- }else if(m_SolidRect.PtInRect(point)) {
- SetStyle(1);
- this->PostMessage(WM_COMMAND,IDCANCEL) ;
- }
- CDialog::OnLButtonDown(nFlags, point);
- }
- void CFillSetDlg::OnLButtonUp(UINT nFlags, CPoint point)
- {
- // TODO: Add your message handler code here and/or call default
- CDialog::OnLButtonUp(nFlags, point);
- }
- void CFillSetDlg::OnMouseMove(UINT nFlags, CPoint point)
- {
- // TODO: Add your message handler code here and/or call default
- BOOL flag = FALSE ;
- if(m_NoFillRect.PtInRect(point)) {
- if(this->m_nSelect!=0) {
- CClientDC dc(this);
- int old = m_nSelect ;
- m_nSelect = -1 ;
- if(old>=0) draw_cell(&dc,old) ;
- m_nSelect = 0 ;
- draw_cell(&dc,0) ;
- }
- flag = TRUE ;
- }
- if(!flag){
- if(m_SolidRect.PtInRect(point)) {
- if(m_nSelect!=1) {
- CClientDC dc(this);
- int old = m_nSelect ;
- m_nSelect = -1 ;
- if(old>=0) draw_cell(&dc,old) ;
- m_nSelect = 1 ;
- draw_cell(&dc,1) ;
- }
- flag = TRUE ;
- }
- }
- CDialog::OnMouseMove(nFlags, point);
- }
- void CFillSetDlg::OnPaint()
- {
- CPaintDC dc(this); // device context for painting
- // TODO: Add your message handler code here
- draw_cell(&dc,0);
- draw_cell(&dc,1) ;
- // Do not call CDialog::OnPaint() for painting messages
- }
- BOOL CFillSetDlg::GetCellRect(int i,CRect* pRect)
- {
- BOOL bRltVal=FALSE;
- if(i==0){
- *pRect=m_NoFillRect;
- bRltVal=TRUE;
- }else if(i==1){
- *pRect=m_SolidRect;
- bRltVal=TRUE;
- }
- return bRltVal;
- }
- void CFillSetDlg::draw_cell(CDC* pDC,int i)
- {
- if(i==0) {
- CRect rect = m_NoFillRect ;
- // Fill background
- pDC->FillSolidRect(rect, ::GetSysColor(COLOR_3DFACE));
- if (i==this->m_nSelect) pDC->DrawEdge(rect, BDR_RAISEDINNER, BF_RECT);
- else if (i==this->m_nCurrent) pDC->DrawEdge(rect, BDR_SUNKENOUTER, BF_RECT);
- //Fill Black color
- CPen pen;
- pen.CreatePen(PS_SOLID, 1, ::GetSysColor(COLOR_3DSHADOW));
- CBrush brush ;
- brush.CreateSolidBrush(::GetSysColor(COLOR_3DFACE)) ;
- CPen* pOldPen = (CPen*) pDC->SelectObject(&pen);
- CBrush* pOldBrush = (CBrush*) pDC->SelectObject(&brush);
- rect.DeflateRect(2*m_nMargin,2*m_nMargin);
- pDC->Rectangle(rect);
- pDC->SelectObject(pOldBrush);
- pDC->SelectObject(pOldPen);
- }else if(i==1) {
- CRect rect = m_SolidRect ;
- // Fill background
- pDC->FillSolidRect(rect, ::GetSysColor(COLOR_3DFACE));
- if (i==this->m_nSelect) pDC->DrawEdge(rect, BDR_RAISEDINNER, BF_RECT);
- else if (i==this->m_nCurrent) pDC->DrawEdge(rect, BDR_SUNKENOUTER, BF_RECT);
- //Fill Black color
- CPen pen;
- pen.CreatePen(PS_SOLID, 1, ::GetSysColor(COLOR_3DSHADOW));
- CBrush brush ;
- brush.CreateSolidBrush(RGB(0,0,0)) ;
- CPen* pOldPen = (CPen*) pDC->SelectObject(&pen);
- CBrush* pOldBrush = (CBrush*) pDC->SelectObject(&brush);
- rect.DeflateRect(2*m_nMargin,2*m_nMargin);
- pDC->Rectangle(rect);
- pDC->SelectObject(pOldBrush);
- pDC->SelectObject(pOldPen);
- }
- }
- void CFillSetDlg::Init()
- {
- m_nSelect=-1;
- }
- void CFillSetDlg::SetStyle(int nStyle)
- {
- m_nCurrent=nStyle;
- if(m_pWndParent!=NULL)
- m_pWndParent->PostMessage(WM_SETFILLSTYLE,WPARAM(nStyle));
- }