RECTDLG.CPP
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:3k
源码类别:

界面编程

开发平台:

Visual C++

  1. // rectdlg.cpp : implementation file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "drawcli.h"
  14. #include "rectdlg.h"
  15. #ifdef _DEBUG
  16. #undef THIS_FILE
  17. static char BASED_CODE THIS_FILE[] = __FILE__;
  18. #endif
  19. #define __LOCALMSG_InternalUpdateControls (WM_USER+333)
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CRectDlg dialog
  22. COLORREF CRectDlg::g_clrTransparent = COLORREF(-1);
  23. CRectDlg::CRectDlg(CWnd* /*pParent = NULL*/)
  24. : CPropertyPage(CRectDlg::IDD)
  25. {
  26. //{{AFX_DATA_INIT(CRectDlg)
  27. m_bNoFill = FALSE;
  28. m_nPenSize = 0;
  29. //}}AFX_DATA_INIT
  30. m_clrFill = m_clrOutline = g_clrTransparent;
  31. }
  32. void CRectDlg::DoDataExchange(CDataExchange* pDX)
  33. {
  34. CDialog::DoDataExchange(pDX);
  35. //{{AFX_DATA_MAP(CRectDlg)
  36. DDX_Control(pDX, IDC_SPIN1, m_SpinCtrl);
  37. DDX_Check(pDX, IDC_NOFILL, m_bNoFill);
  38. DDX_Text(pDX, IDC_WEIGHT, m_nPenSize);
  39. DDV_MinMaxUInt(pDX, m_nPenSize, 0, 100);
  40. DDX_Control(pDX, IDC_BUTTON_COLOR_OUTLINE, m_BtnColorOutline);
  41. DDX_Control(pDX, IDC_BUTTON_COLOR_FILL, m_BtnColorFill);
  42. //}}AFX_DATA_MAP
  43. }
  44. BEGIN_MESSAGE_MAP(CRectDlg, CDialog)
  45. //{{AFX_MSG_MAP(CRectDlg)
  46. //}}AFX_MSG_MAP
  47. ON_BN_CLICKED(IDC_NOFILL, _UpdateControls)
  48. ON_EN_CHANGE(IDC_WEIGHT, _UpdateControls)
  49. ON_MESSAGE(
  50. __LOCALMSG_InternalUpdateControls,
  51. OnInternalUpdateControls
  52. )
  53. ON_REGISTERED_MESSAGE(
  54. CExtPopupColorMenuWnd::g_nMsgNotifyColorChangedFinally,
  55. OnColorChangedFinally
  56. )
  57. END_MESSAGE_MAP()
  58. /////////////////////////////////////////////////////////////////////////////
  59. // CRectDlg message handlers
  60. BOOL CRectDlg::OnInitDialog()
  61. {
  62. CDialog::OnInitDialog();
  63. m_SpinCtrl.SetRange(0, 100);
  64. m_SpinCtrl.SetBase(10);
  65. m_SpinCtrl.SetPos( /*1*/ m_nPenSize );
  66. m_BtnColorOutline.m_bEnableBtnColorDefault
  67. = m_BtnColorFill.m_bEnableBtnColorDefault
  68. = false;
  69. m_BtnColorOutline.m_clrDefault
  70. = m_BtnColorOutline.m_clrSelected
  71. = m_clrOutline;
  72. m_BtnColorFill.m_clrDefault
  73. = m_BtnColorFill.m_clrSelected
  74. = m_clrFill;
  75. PostMessage( __LOCALMSG_InternalUpdateControls );
  76. return TRUE;
  77. }
  78. LRESULT CRectDlg::OnColorChangedFinally(WPARAM wParam, LPARAM lParam)
  79. {
  80. wParam;
  81. lParam;
  82. m_clrFill = m_BtnColorFill.m_clrSelected;
  83. m_clrOutline = m_BtnColorOutline.m_clrSelected;
  84. PostMessage( __LOCALMSG_InternalUpdateControls );
  85. return 0;
  86. }
  87. LRESULT CRectDlg::OnInternalUpdateControls(WPARAM wParam, LPARAM lParam)
  88. {
  89. wParam;
  90. lParam;
  91. UpdateData();
  92. if( m_BtnColorOutline.GetSafeHwnd() != NULL )
  93. m_BtnColorOutline.EnableWindow( m_nPenSize != 0 );
  94. if( m_BtnColorFill.GetSafeHwnd() != NULL )
  95. m_BtnColorFill.EnableWindow( !m_bNoFill );
  96. return 0;
  97. }
  98. void CRectDlg::_UpdateControls()
  99. {
  100. PostMessage( __LOCALMSG_InternalUpdateControls );
  101. }