OptionTreeItemLineThikComboBox.cpp
Upload User: kairuinn
Upload Date: 2009-02-07
Package Size: 2922k
Code Size: 5k
Category:

Graph program

Development Platform:

Visual C++

  1. #include "stdafx.h"
  2. #include "OptionTreeItemLineThikComboBox.h"
  3. // Added Headers
  4. #include "OptionTree.h"
  5. #ifdef _DEBUG
  6. #define new DEBUG_NEW
  7. #undef THIS_FILE
  8. static char THIS_FILE[] = __FILE__;
  9. #endif
  10. /////////////////////////////////////////////////////////////////////////////
  11. // COptionTreeItemLineThikComboBox
  12. COptionTreeItemLineThikComboBox::COptionTreeItemLineThikComboBox()
  13. {
  14. // Initialize variables
  15. m_bFocus = FALSE;
  16. m_lDropDownHeight = OT_COMBO_DROPDOWNHEIGHT;
  17. m_line_thickness = 0;
  18. // Set item type
  19. SetItemType(OT_ITEM_COMBOBOX);
  20. }
  21. COptionTreeItemLineThikComboBox::~COptionTreeItemLineThikComboBox()
  22. {
  23. }
  24. BEGIN_MESSAGE_MAP(COptionTreeItemLineThikComboBox, CLineThiknessCombo)
  25. //{{AFX_MSG_MAP(COptionTreeItemLineThikComboBox)
  26. ON_WM_SETFOCUS()
  27. ON_WM_KILLFOCUS()
  28. //}}AFX_MSG_MAP
  29. END_MESSAGE_MAP()
  30. /////////////////////////////////////////////////////////////////////////////
  31. // COptionTreeItemLineThikComboBox message handlers
  32. void COptionTreeItemLineThikComboBox::DrawAttribute(CDC *pDC, const RECT &rcRect)
  33. {
  34. // If we don't have focus, text is drawn.
  35. if (m_bFocus == TRUE)
  36. {
  37. return;
  38. }
  39. // Make sure options aren't NULL
  40. if (m_otOption == NULL)
  41. {
  42. return;
  43. }
  44. // Make sure there is a window
  45. if (!IsWindow(GetSafeHwnd()))
  46. {
  47. return;
  48. }
  49. // Set window position
  50. if (IsWindow(GetSafeHwnd()))
  51. {
  52. MoveWindow(m_rcAttribute.left, m_rcAttribute.top, m_rcAttribute.Width(), m_rcAttribute.Height());
  53. }
  54. COLORREF crNormal = GetSysColor( COLOR_WINDOW );
  55. CRect rrr = rcRect;
  56. pDC->SetBkColor( crNormal ); // Set BG To Highlight Color
  57. pDC->FillSolidRect( &rrr, crNormal ); // Erase Item
  58. CPen penHighlight(PS_SOLID, m_line_thickness+1, RGB(0,0,0));
  59. CPen* pOldPen = pDC->SelectObject(&penHighlight);
  60. pDC->MoveTo(rcRect.left,
  61. rcRect.top+(rcRect.bottom-rcRect.top)/2);
  62. pDC->LineTo(rcRect.right,
  63. rcRect.top+(rcRect.bottom-rcRect.top)/2);
  64. pDC->SelectObject(pOldPen);
  65. }
  66. void COptionTreeItemLineThikComboBox::OnCommit()
  67. {
  68. // Hide edit control
  69. if (IsWindow(GetSafeHwnd()))
  70. {
  71. // -- Show window
  72. ShowWindow(SW_HIDE);
  73. }
  74. m_line_thickness = GetCurSel();
  75. }
  76. void COptionTreeItemLineThikComboBox::OnRefresh()
  77. {
  78. // Set the window text
  79. if (IsWindow(GetSafeHwnd()))
  80. {
  81. MoveWindow(m_rcAttribute.left, m_rcAttribute.top, m_rcAttribute.Width(), m_rcAttribute.Height());
  82. }
  83. }
  84. void COptionTreeItemLineThikComboBox::OnMove()
  85. {
  86. // Set window position
  87. if (IsWindow(GetSafeHwnd()))
  88. {
  89. MoveWindow(m_rcAttribute.left, m_rcAttribute.top, m_rcAttribute.Width(), m_rcAttribute.Height());
  90. }
  91. // Hide window
  92. if (m_bFocus == FALSE && IsWindow(GetSafeHwnd()))
  93. {
  94. // -- Show window
  95. ShowWindow(SW_HIDE);
  96. }
  97. }
  98. void COptionTreeItemLineThikComboBox::OnActivate()
  99. {
  100. // Make sure window is valid
  101. if (IsWindow(GetSafeHwnd()))
  102. {
  103. // -- Show window
  104. ShowWindow(SW_SHOW);
  105. // -- Set window position
  106. MoveWindow(m_rcAttribute.left, m_rcAttribute.top, m_rcAttribute.Width(), m_rcAttribute.Height() + m_lDropDownHeight);
  107. // -- Set focus
  108. SetFocus();
  109. SetCurSel(m_line_thickness);
  110. }
  111. }
  112. void COptionTreeItemLineThikComboBox::OnSetFocus(CWnd* pOldWnd) 
  113. {
  114. // Mark focus
  115. m_bFocus = TRUE;
  116. CLineThiknessCombo::OnSetFocus(pOldWnd);
  117. }
  118. void COptionTreeItemLineThikComboBox::OnKillFocus(CWnd* pNewWnd) 
  119. {
  120. // Validate
  121. if (m_otOption == NULL)
  122. {
  123. CLineThiknessCombo::OnKillFocus(pNewWnd);
  124. return;
  125. }
  126. // See if new window is tree of list
  127. if (m_otOption->IsChild(pNewWnd) == TRUE)
  128. {
  129. // -- Mark focus
  130. m_bFocus = FALSE;
  131. // -- Commit changes
  132. CommitChanges();
  133. }
  134. CLineThiknessCombo::OnKillFocus(pNewWnd);
  135. }
  136. BOOL COptionTreeItemLineThikComboBox::CreateComboItem(DWORD dwAddStyle)
  137. {
  138. // Declare variables
  139. DWORD dwStyle = WS_CHILD | WS_VISIBLE | 
  140. CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED|WS_VSCROLL;
  141. BOOL bRet = FALSE;
  142. // Make sure options is not NULL
  143. if (m_otOption == NULL)
  144. {
  145. return FALSE;
  146. }
  147. // Create edit control
  148. if (!IsWindow(GetSafeHwnd()))
  149. {
  150. // -- Add style
  151. if (dwAddStyle != 0)
  152. {
  153. dwStyle |= dwAddStyle;
  154. }
  155. // -- Create the combo box
  156. bRet = Create(dwStyle, m_rcAttribute, m_otOption->GetCtrlParent(), GetCtrlID());
  157. // -- Setup combo
  158. if (bRet == TRUE)
  159. {
  160. // -- -- Set font
  161. SetFont(m_otOption->GetNormalFont(), TRUE);
  162. // -- -- Set window position
  163. MoveWindow(m_rcAttribute.left, m_rcAttribute.top, m_rcAttribute.Width(), m_rcAttribute.Height());
  164. // -- -- Hide window
  165. ShowWindow(SW_HIDE);
  166. }
  167. }
  168. return bRet;
  169. }
  170. void COptionTreeItemLineThikComboBox::SetDropDownHeight(long lHeight)
  171. {
  172. // Save variable
  173. m_lDropDownHeight = lHeight;
  174. }
  175. long COptionTreeItemLineThikComboBox::GetDropDownHeight()
  176. {
  177. // Return variable
  178. return m_lDropDownHeight;
  179. }
  180. void COptionTreeItemLineThikComboBox::CleanDestroyWindow()
  181. {
  182. // Destroy window
  183. if (IsWindow(GetSafeHwnd()))
  184. {
  185. // -- Destroy window
  186. DestroyWindow();
  187. }
  188. }
  189. void COptionTreeItemLineThikComboBox::OnDeSelect()
  190. {
  191. // Hide window
  192. if (IsWindow(GetSafeHwnd()))
  193. {
  194. // -- Show window
  195. ShowWindow(SW_HIDE);
  196. }
  197. }
  198. void COptionTreeItemLineThikComboBox::OnSelect()
  199. {
  200. // Do nothing here
  201. }