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

Graph program

Development Platform:

Visual C++

  1. // SystemToolbar.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "..//Solidgraph.h"
  5. #include "SystemToolbar.h"
  6. #include ".systemtoolbar.h"
  7. // CSystemToolbar
  8. IMPLEMENT_DYNAMIC(CSystemToolbar, CEGToolBar)
  9. CSystemToolbar::CSystemToolbar()
  10. {
  11. }
  12. CSystemToolbar::~CSystemToolbar()
  13. {
  14. }
  15. BEGIN_MESSAGE_MAP(CSystemToolbar, CEGToolBar)
  16. ON_WM_CTLCOLOR()
  17. END_MESSAGE_MAP()
  18. void   CSystemToolbar::LoadControls()
  19. {
  20. //SetButtonInfo(10, ID_SLOI, TBBS_SEPARATOR, 100);
  21. CRect rect;
  22. /*GetItemRect(10, &rect);
  23. rect.top = 1;
  24. rect.bottom = rect.top + 200;
  25. rect.right = rect.left+100;
  26. if (!m_LayersComboBox.Create(
  27. CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL,
  28. rect, this, ID_SLOI))
  29. {
  30. TRACE("Failed to create combo-boxn");
  31. return;
  32. }*/
  33. SetButtonInfo(4, ID_TOCHN1, TBBS_SEPARATOR, 50);
  34. GetItemRect(4, &rect);
  35. rect.right = rect.left+50;
  36. rect.top = 1;
  37. if (!m_empty_static.Create("       ",WS_VISIBLE,rect, this))
  38. {
  39. TRACE("Failed to create staticn");
  40. return;
  41. }
  42. rect.top = 5;
  43. CString prSt;
  44. prSt.LoadString(IDS_PRECISION_STRING);
  45. if (!m_Precision_label.Create(prSt,WS_VISIBLE|WS_TABSTOP,rect, this,ID_TOCHN1))
  46. {
  47. TRACE("Failed to create staticn");
  48. return;
  49. }
  50. SetButtonInfo(5, ID_TOCHN2, TBBS_SEPARATOR, 100);
  51. GetItemRect(5, &rect);
  52. rect.top = 1;
  53. rect.bottom = rect.top + 200;
  54. rect.right = rect.left+100;
  55. if (!m_PrecisionComboBox.Create(
  56. CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL,
  57. rect, this, ID_TOCHN2))
  58. {
  59. TRACE("Failed to create combo-boxn");
  60. return;
  61. }
  62. CString precStr;
  63. for (int i=0;i<PREC_COUNT;i++)
  64. {
  65. precStr.Format("%.3f",precisions[i]);
  66. m_PrecisionComboBox.AddString(precStr);
  67. }
  68. SetButtonInfo(7, ID_CVET, TBBS_SEPARATOR, 100);
  69. GetItemRect(7, &rect);
  70. unsigned int ComboH = rect.Height()-6;
  71. rect.top = 1;
  72. rect.bottom = rect.top + 200;
  73. rect.right = rect.left+100;
  74. if (!m_ColorComboBox.Create(CBS_DROPDOWNLIST|CBS_OWNERDRAWFIXED|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL,
  75. rect, this, ID_CVET))
  76. {
  77. TRACE("Failed to create combo-boxn");
  78. return;
  79. }
  80. m_ColorComboBox.SetItemHeight(-1,ComboH);
  81. m_ColorComboBox.InitializeDefaultColors();
  82. SetButtonInfo(9, ID_TOLZHINA, TBBS_SEPARATOR, 100);
  83. GetItemRect(9, &rect);
  84. rect.top = 1;
  85. rect.bottom = rect.top + 200;
  86. rect.right = rect.left+100;
  87. if (!m_line_thicknessComboBox.Create(CBS_DROPDOWNLIST|CBS_OWNERDRAWFIXED|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL,
  88. rect, this, ID_TOLZHINA))
  89. {
  90. TRACE("Failed to create combo-boxn");
  91. return;
  92. }
  93. m_line_thicknessComboBox.SetItemHeight(-1,ComboH);
  94. SetButtonInfo(11, ID_TIPLINII, TBBS_SEPARATOR, 100);
  95. GetItemRect(11, &rect);
  96. rect.top = 1;
  97. rect.bottom = rect.top + 200;
  98. rect.right = rect.left+100;
  99. if (!m_line_typeComboBox.Create(CBS_DROPDOWNLIST|CBS_OWNERDRAWFIXED|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL,
  100. rect, this, ID_TIPLINII))
  101. {
  102. TRACE("Failed to create combo-boxn");
  103. return;
  104. }
  105. m_line_typeComboBox.SetItemHeight(-1,ComboH);
  106. SetButtonInfo(14, ID_ATT_FONTS, TBBS_SEPARATOR, 100);
  107. GetItemRect(14, &rect);
  108. rect.top = 1;
  109. rect.bottom = rect.top + 200;
  110. rect.right = rect.left+100;
  111. if (!m_Fonts_ComboBox.Create(CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL,
  112. rect, this, ID_ATT_FONTS))
  113. {
  114. TRACE("Failed to create combo-boxn");
  115. return;
  116. }
  117. m_Fonts_ComboBox.SetItemHeight(-1,ComboH);
  118. }
  119. void  CSystemToolbar::SetView(CSolidgraphView* v)
  120. {
  121. ASSERT(v);
  122. m_view = v;
  123. /*m_LayersComboBox.ResetContent();
  124. CString  labl;
  125. labl.LoadString(IDS_LAYER_LABEL);
  126. CString  curLbl;
  127. unsigned char lCnt = sgGetScene()->GetLayersCount();
  128. for (unsigned char i=0;i<lCnt;i++)
  129. {
  130. curLbl.Format(" %i",i);
  131. m_LayersComboBox.AddString(labl+curLbl);
  132. }
  133. m_LayersComboBox.SetCurSel(0);*/
  134. if (global_3D_document)
  135. {
  136. SCENE_SETUPS  tmpCV;
  137. global_3D_document->GetSceneSetups(tmpCV);
  138. //m_LayersComboBox.SetCurSel(tmpCV.CurrentLayer);
  139. m_PrecisionComboBox.SetCurSel(tmpCV.CurrentPrecision);
  140. m_ColorComboBox.SetCurSel(tmpCV.CurrentColor);
  141. m_line_thicknessComboBox.SetCurSel(tmpCV.CurrentLineThickness);
  142. m_line_typeComboBox.SetCurSel(tmpCV.CurrentLineType);
  143. }
  144. else
  145. {
  146. ASSERT(0);
  147. //m_LayersComboBox.SetCurSel(0);
  148. m_PrecisionComboBox.SetCurSel(0);
  149. m_ColorComboBox.SetCurSel(0);
  150. m_line_thicknessComboBox.SetCurSel(0);
  151. m_line_typeComboBox.SetCurSel(0);
  152. }
  153. }
  154. void    CSystemToolbar::UpdateSystemToolbar()
  155. {
  156. ASSERT(m_view);
  157. /*m_LayersComboBox.ResetContent();
  158. CString  labl;
  159. labl.LoadString(IDS_LAYER_LABEL);
  160. CString  curLbl;
  161. unsigned char lCnt = sgGetScene()->GetLayersCount();
  162. for (unsigned char i=0;i<lCnt;i++)
  163. {
  164. curLbl.Format(" %i",i);
  165. m_LayersComboBox.AddString(labl+curLbl);
  166. }*/
  167. SCENE_SETUPS  tmpCV;
  168. if (global_3D_document)
  169. global_3D_document->GetSceneSetups(tmpCV);
  170. //m_LayersComboBox.SetCurSel(tmpCV.CurrentLayer);
  171. //m_view->GetDocument()->SetCurLayer(tmpCV.CurrentLayer);
  172. m_Fonts_ComboBox.ResetContent();
  173. /*
  174. Only in register version
  175. */
  176. }
  177. HBRUSH CSystemToolbar::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  178. {
  179. HBRUSH hbr = CEGToolBar::OnCtlColor(pDC, pWnd, nCtlColor);
  180. //if(pWnd->GetDlgCtrlID() == ID_TOCHN1)
  181. if (pWnd->GetRuntimeClass()==RUNTIME_CLASS(CStatic))
  182. {
  183. pDC->SetBkMode(TRANSPARENT);
  184. LOGBRUSH lb;
  185. lb.lbStyle = BS_NULL;
  186. lb.lbColor = RGB(255, 0, 255);
  187. lb.lbHatch = HS_HORIZONTAL | HS_VERTICAL;
  188. hbr = CreateBrushIndirect(&lb);
  189. }
  190. // TODO: Return a different brush if the default is not desired
  191. return hbr;
  192. }
  193. #define    CONTROLS_FONT_HEIGHT    12
  194. #define    CONTROLS_FONT_WEIDTH     FW_NORMAL
  195. #define    CONTROLS_FONT    _T("MS Shell Dlg")
  196. BEGIN_MESSAGE_MAP(CMyComboBox, CComboBox)
  197. ON_WM_CREATE()
  198. END_MESSAGE_MAP()
  199. int CMyComboBox::OnCreate(LPCREATESTRUCT lpCreateStruct)
  200. {
  201. if (CComboBox::OnCreate(lpCreateStruct) == -1)
  202. return -1;
  203. if( !CreateFont(CONTROLS_FONT_HEIGHT, CONTROLS_FONT_WEIDTH, CONTROLS_FONT) )
  204. {
  205. TRACE0("Failed to create font for combo boxn");
  206. return -1;      // fail to create
  207. }
  208. return 0;
  209. }
  210. BOOL CMyComboBox::CreateFont(LONG lfHeight, LONG lfWeight, LPCTSTR lpszFaceName)
  211. {
  212. //  Create a font for the combobox
  213. LOGFONT logFont;
  214. memset(&logFont, 0, sizeof(logFont));
  215. if (!::GetSystemMetrics(SM_DBCSENABLED))
  216. {
  217. // Since design guide says toolbars are fixed height so is the font.
  218. logFont.lfHeight = lfHeight;
  219. logFont.lfWeight = lfWeight;
  220. CString strDefaultFont = lpszFaceName;
  221. lstrcpy(logFont.lfFaceName, strDefaultFont);
  222. if (!m_font.CreateFontIndirect(&logFont))
  223. {
  224. TRACE("Could Not create font for combon");
  225. return FALSE;
  226. }
  227. }
  228. else
  229. {
  230. m_font.Attach(::GetStockObject(SYSTEM_FONT));
  231. }
  232. SetFont(&m_font);
  233. return TRUE;
  234. }
  235. BEGIN_MESSAGE_MAP(CLayersComboBox, CMyComboBox)
  236. ON_CONTROL_REFLECT(CBN_SELCHANGE, OnCbnSelchange)
  237. END_MESSAGE_MAP()
  238. void CLayersComboBox::OnCbnSelchange()
  239. {
  240. SCENE_SETUPS tmpSS;
  241. global_3D_document->GetSceneSetups(tmpSS);
  242. tmpSS.CurrentLayer = GetCurSel();
  243. global_3D_document->SetSceneSetups(tmpSS);
  244. }
  245. BEGIN_MESSAGE_MAP(CPrecisionComboBox, CMyComboBox)
  246. ON_CONTROL_REFLECT(CBN_SELCHANGE, OnCbnSelchange)
  247. END_MESSAGE_MAP()
  248. void CPrecisionComboBox::OnCbnSelchange()
  249. {
  250. SCENE_SETUPS tmpSS;
  251. global_3D_document->GetSceneSetups(tmpSS);
  252. tmpSS.CurrentPrecision = GetCurSel();
  253. global_3D_document->SetSceneSetups(tmpSS);
  254. }
  255. BEGIN_MESSAGE_MAP(CPrecisionStatic, CStatic)
  256. ON_WM_CREATE()
  257. // ON_WM_ERASEBKGND()
  258. END_MESSAGE_MAP()
  259. int CPrecisionStatic::OnCreate(LPCREATESTRUCT lpCreateStruct)
  260. {
  261. if (CStatic::OnCreate(lpCreateStruct) == -1)
  262. return -1;
  263. if( !CreateFont(CONTROLS_FONT_HEIGHT, CONTROLS_FONT_WEIDTH, CONTROLS_FONT) )
  264. {
  265. TRACE0("Failed to create font for combo boxn");
  266. return -1;      // fail to create
  267. }
  268. return 0;
  269. }
  270. BOOL CPrecisionStatic::CreateFont(LONG lfHeight, LONG lfWeight, LPCTSTR lpszFaceName)
  271. {
  272. //  Create a font for the combobox
  273. LOGFONT logFont;
  274. memset(&logFont, 0, sizeof(logFont));
  275. if (!::GetSystemMetrics(SM_DBCSENABLED))
  276. {
  277. // Since design guide says toolbars are fixed height so is the font.
  278. logFont.lfHeight = lfHeight;
  279. logFont.lfWeight = lfWeight;
  280. CString strDefaultFont = lpszFaceName;
  281. lstrcpy(logFont.lfFaceName, strDefaultFont);
  282. if (!m_font.CreateFontIndirect(&logFont))
  283. {
  284. TRACE("Could Not create font for combon");
  285. return FALSE;
  286. }
  287. }
  288. else
  289. {
  290. m_font.Attach(::GetStockObject(SYSTEM_FONT));
  291. }
  292. SetFont(&m_font);
  293. return TRUE;
  294. }
  295. BEGIN_MESSAGE_MAP(CColorComboBox, CColorPickerCB)
  296. ON_CONTROL_REFLECT(CBN_SELCHANGE, OnCbnSelchange)
  297. END_MESSAGE_MAP()
  298. void CColorComboBox::OnCbnSelchange()
  299. {
  300. SCENE_SETUPS tmpSS;
  301. global_3D_document->GetSceneSetups(tmpSS);
  302. tmpSS.CurrentColor = GetCurSel();
  303. global_3D_document->SetSceneSetups(tmpSS);
  304. }
  305. BEGIN_MESSAGE_MAP(CLineThicknessComboBox, CLineThiknessCombo)
  306. ON_CONTROL_REFLECT(CBN_SELCHANGE, OnCbnSelchange)
  307. END_MESSAGE_MAP()
  308. void CLineThicknessComboBox::OnCbnSelchange()
  309. {
  310. SCENE_SETUPS tmpSS;
  311. global_3D_document->GetSceneSetups(tmpSS);
  312. tmpSS.CurrentLineThickness = GetCurSel();
  313. global_3D_document->SetSceneSetups(tmpSS);
  314. }
  315. BEGIN_MESSAGE_MAP(CLineTypeComboBox, CLineStyleCombo)
  316. ON_CONTROL_REFLECT(CBN_SELCHANGE, OnCbnSelchange)
  317. END_MESSAGE_MAP()
  318. void CLineTypeComboBox::OnCbnSelchange()
  319. {
  320. SCENE_SETUPS tmpSS;
  321. global_3D_document->GetSceneSetups(tmpSS);
  322. tmpSS.CurrentLineType = GetCurSel();
  323. global_3D_document->SetSceneSetups(tmpSS);
  324. }
  325. BEGIN_MESSAGE_MAP(CFontsComboBox, CMyComboBox)
  326. ON_CONTROL_REFLECT(CBN_SELCHANGE, OnCbnSelchange)
  327. END_MESSAGE_MAP()
  328. void CFontsComboBox::OnCbnSelchange()
  329. {
  330. /*
  331. Only in register version
  332. */
  333. }