PropertiesDlg.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // PropertiesDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "TreeCtrl.h"
  5. #include "PropertiesDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CPropertiesDlg dialog
  13. CPropertiesDlg::CPropertiesDlg(CWnd* pParent /*=NULL*/)
  14. : CDialog(CPropertiesDlg::IDD, pParent)
  15. , m_pTreeCtrl(NULL)
  16. {
  17. //{{AFX_DATA_INIT(CPropertiesDlg)
  18. m_nIndex = 0;
  19. m_bBoldCheck = FALSE;
  20. m_strFontSize = _T("");
  21. //}}AFX_DATA_INIT
  22. m_crText = ::GetSysColor(COLOR_WINDOWTEXT);
  23. m_crBack = ::GetSysColor(COLOR_WINDOW);
  24. m_strFontSize = _T("8");
  25. }
  26. void CPropertiesDlg::DoDataExchange(CDataExchange* pDX)
  27. {
  28. CDialog::DoDataExchange(pDX);
  29. //{{AFX_DATA_MAP(CPropertiesDlg)
  30. DDX_Control(pDX, IDC_BTN_APPLY, m_btnApply);
  31. DDX_Control(pDX, IDC_SIZE_COMBO, m_comboSize);
  32. DDX_Control(pDX, IDC_COLOR_TEXT, m_cpText);
  33. DDX_Control(pDX, IDC_COLOR_BACK, m_cpBack);
  34. DDX_Control(pDX, IDC_FONT_COMBO, m_comboFont);
  35. DDX_CBIndex(pDX, IDC_FONT_COMBO, m_nIndex);
  36. DDX_Check(pDX, IDC_BOLD_CHECK, m_bBoldCheck);
  37. DDX_CBString(pDX, IDC_SIZE_COMBO, m_strFontSize);
  38. //}}AFX_DATA_MAP
  39. }
  40. BEGIN_MESSAGE_MAP(CPropertiesDlg, CDialog)
  41. //{{AFX_MSG_MAP(CPropertiesDlg)
  42. ON_BN_CLICKED(IDC_BOLD_CHECK, OnBoldCheck)
  43. ON_CBN_SELENDOK(IDC_SIZE_COMBO, OnSelendokSizeCombo)
  44. ON_CBN_SELENDOK(IDC_FONT_COMBO, OnSelendokFontCombo)
  45. ON_CPN_XT_SELENDOK(IDC_COLOR_TEXT, OnSelEndOkColorText)
  46. ON_CPN_XT_SELENDOK(IDC_COLOR_BACK, OnSelEndOkColorBack)
  47. ON_CBN_EDITCHANGE(IDC_SIZE_COMBO, OnEditchangeSizeCombo)
  48. ON_BN_CLICKED(IDC_BTN_APPLY, OnBtnApply)
  49. //}}AFX_MSG_MAP
  50. END_MESSAGE_MAP()
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CPropertiesDlg message handlers
  53. void CPropertiesDlg::OnSelendokFontCombo()
  54. {
  55. m_comboFont.GetSelFont(m_LogFont);
  56. }
  57. void CPropertiesDlg::OnSelendokSizeCombo()
  58. {
  59. UpdateData();
  60. }
  61. void CPropertiesDlg::OnBoldCheck()
  62. {
  63. UpdateData();
  64. }
  65. void CPropertiesDlg::OnSelEndOkColorText()
  66. {
  67. // a color selection was made, update the
  68. // appropriate member data.
  69. m_crText = m_cpText.GetColor();
  70. }
  71. void CPropertiesDlg::OnSelEndOkColorBack()
  72. {
  73. // a color selection was made, update the
  74. // appropriate member data.
  75. m_crBack = m_cpBack.GetColor();
  76. }
  77. void CPropertiesDlg::OnEditchangeSizeCombo()
  78. {
  79. UpdateData();
  80. }
  81. BOOL CPropertiesDlg::OnInitDialog() 
  82. {
  83. CDialog::OnInitDialog();
  84. // TODO: Add extra initialization here
  85. ASSERT_VALID(m_pTreeCtrl);
  86. m_cpText.SetColor(m_crText);
  87. m_cpBack.SetColor(m_crBack);
  88. m_comboSize.SetCurSel(0);
  89. // select the tree control's font
  90. LOGFONT lf;
  91. m_pTreeCtrl->GetFont()->GetLogFont(&lf);
  92. m_comboFont.InitControl(lf.lfFaceName, 285);
  93. return TRUE;  // return TRUE unless you set the focus to a control
  94.               // EXCEPTION: OCX Property Pages should return FALSE
  95. }
  96. void CPropertiesDlg::UpdateItem(HTREEITEM hItem)
  97. {
  98. m_pTreeCtrl->SetItemFont(hItem, m_LogFont);
  99. m_pTreeCtrl->SetItemBold(hItem, m_bBoldCheck);
  100. m_pTreeCtrl->SetItemColor(hItem, m_crText);
  101. m_pTreeCtrl->SetItemBackColor(hItem, m_crBack);
  102. }
  103. void CPropertiesDlg::OnBtnApply() 
  104. {
  105. ASSERT_VALID(m_pTreeCtrl);
  106. HDC hDC = ::GetDC(m_pTreeCtrl->m_hWnd);
  107. m_LogFont.lfHeight = -MulDiv(_ttoi(m_strFontSize), ::GetDeviceCaps(hDC, LOGPIXELSY), 72);
  108. ::ReleaseDC(m_pTreeCtrl->m_hWnd, hDC);
  109. if (m_pTreeCtrl->IsMultiSelect())
  110. {
  111. HTREEITEM hItem = m_pTreeCtrl->GetFirstSelectedItem();
  112. while (hItem != NULL)
  113. {
  114. UpdateItem(hItem);
  115. m_pTreeCtrl->SetItemState(hItem, 0, TVIS_SELECTED);
  116. hItem = m_pTreeCtrl->GetNextSelectedItem(hItem);
  117. }
  118. }
  119. else
  120. {
  121. HTREEITEM hItem = m_pTreeCtrl->GetSelectedItem();
  122. UpdateItem(hItem);
  123. }
  124. m_pTreeCtrl->SendMessage(WM_ERASEBKGND, (WPARAM)hDC, (LPARAM)0);
  125. m_pTreeCtrl->Invalidate();
  126. CDialog::OnOK();
  127. }
  128. int CPropertiesDlg::DoModalEx(CXTTreeCtrl* pTreeCtrl) 
  129. {
  130. ASSERT_VALID(pTreeCtrl);
  131. m_pTreeCtrl = pTreeCtrl;
  132. return (int)CDialog::DoModal();
  133. }