PropGridDlg.cpp 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. // PropGridDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "PropGrid.h"
  5. #include "PropGridDlg.h"
  6. #include ".\propgriddlg.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #endif
  10. // CPropGridDlg dialog
  11. CPropGridDlg::CPropGridDlg(CWnd* pParent /*=NULL*/)
  12. : CDialog(CPropGridDlg::IDD, pParent)
  13. {
  14. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  15. }
  16. void CPropGridDlg::DoDataExchange(CDataExchange* pDX)
  17. {
  18. CDialog::DoDataExchange(pDX);
  19. DDX_Control(pDX, IDC_GRID, m_ctrlGrid);
  20. }
  21. BEGIN_MESSAGE_MAP(CPropGridDlg, CDialog)
  22. ON_WM_PAINT()
  23. ON_WM_QUERYDRAGICON()
  24. ON_BN_CLICKED(IDOK, OnBnClickedOk)
  25. ON_MESSAGE(WM_PG_ITEMCHANGED, OnItemChanged)
  26. ON_BN_CLICKED(IDC_COLLAPSE_ALL, OnBnClickedCollapseAll)
  27. ON_BN_CLICKED(IDC_EXPAND_ALL, OnBnClickedExpandAll)
  28. ON_BN_CLICKED(IDC_CUSTOM_COLORS, OnBnClickedCustomColors)
  29. ON_BN_CLICKED(IDC_CATEGORIZED, OnBnClickedCategorized)
  30. ON_BN_CLICKED(IDC_ALPHABETICAL, OnBnClickedAlphabetical)
  31. ON_BN_CLICKED(IDC_NOSORT, OnBnClickedNosort)
  32. END_MESSAGE_MAP()
  33. // CPropGridDlg message handlers
  34. BOOL CPropGridDlg::OnInitDialog()
  35. {
  36. CDialog::OnInitDialog();
  37. // Set the icon for this dialog. The framework does this automatically
  38. // when the application's main window is not a dialog
  39. SetIcon(m_hIcon, TRUE); // Set big icon
  40. SetIcon(m_hIcon, FALSE); // Set small icon
  41. // basic items
  42. HSECTION hs = m_ctrlGrid.AddSection("Basic Items");
  43. //m_ctrlGrid.SetShadeColor(RGB(255,122,122));
  44. m_ctrlGrid.AddStringItem(hs, "String", "A single line string item");
  45. m_ctrlGrid.AddTextItem(hs, "Text", "A multi line text item.\r\nSecond line...");
  46. m_ctrlGrid.AddStringItem(hs, "Disabled item", "A disabled item", false);
  47. m_ctrlGrid.AddIntegerItem(hs, "Integer", 10);
  48. m_ctrlGrid.AddIntegerItem(hs, "Formatted Integer", 8, "%d inches");
  49. m_ctrlGrid.AddDoubleItem(hs, "Double", 7.33);
  50. m_ctrlGrid.AddDoubleItem(hs, "Formatted Double", 10.25, "%gmm");
  51. m_ctrlGrid.AddBoolItem(hs, "Boolean", true);
  52. m_ctrlGrid.AddCheckItem(hs, "Check", true);
  53. // custom items
  54. hs = m_ctrlGrid.AddSection("Custom Items");
  55. m_ctrlGrid.AddCustomItem(hs, "Custom In-place Edit", &m_item_serial);
  56. m_ctrlGrid.AddCustomItem(hs, "Custom Modal Edit", &m_item_rect);
  57. m_ctrlGrid.AddCustomItem(hs, "Ccustom Dropdown Edit", &m_item_tree);
  58. m_ctrlGrid.AddCustomItem(hs, "Full Custom Edit", &m_item_gradient);
  59. // more items inserted before the custom ones
  60. hs = m_ctrlGrid.AddSection("More Items", true, hs);
  61. // a combo
  62. vector<string> v;
  63. v.push_back("English");
  64. v.push_back("French");
  65. v.push_back("German");
  66. v.push_back("Spanish");
  67. m_ctrlGrid.AddComboItem(hs, "Combo", v, 2, true);
  68. // some "simple"
  69. m_ctrlGrid.AddDateItem(hs, "Date", COleDateTime::GetCurrentTime());
  70. m_ctrlGrid.AddDateItem(hs, "Formatted Date", COleDateTime::GetCurrentTime(), "%A, %d %B %Y");
  71. m_ctrlGrid.AddDateTimeItem(hs, "Date Time", COleDateTime::GetCurrentTime());
  72. m_ctrlGrid.AddColorItem(hs, "Color", RGB(255,156,12));
  73. m_ctrlGrid.AddFileItem(hs, "File", "C:\\AUTOEXEC.BAT", "All Files (*.*)|*.*||");
  74. m_ctrlGrid.AddFolderItem(hs, "Folder", "C:\\", "Select a folder");
  75. // a font
  76. LOGFONT lf;
  77. CFont font;
  78. font.CreatePointFont(80, "Tahoma");
  79. font.GetLogFont(&lf);
  80. m_ctrlGrid.AddFontItem(hs, "Font", lf, true);
  81. // customization
  82. hs = m_ctrlGrid.AddSection("Grid customization");
  83. m_hItemShade = m_ctrlGrid.AddBoolItem(hs, "Shade titles", m_ctrlGrid.GetShadeTitles());
  84. m_hItemLines = m_ctrlGrid.AddBoolItem(hs, "Draw lines", m_ctrlGrid.GetDrawLines());
  85. m_hItemGutter = m_ctrlGrid.AddBoolItem(hs, "Draw gutter", m_ctrlGrid.GetDrawGutter());
  86. m_hItemFocusDis = m_ctrlGrid.AddBoolItem(hs, "Focus disabled items", m_ctrlGrid.GetFocusDisabled());
  87. // stuff
  88. m_ctrlGrid.SetOkCancelStrings("OK", "Annuler");
  89. m_ctrlGrid.SetDateTimeStrings("Date", "Heure");
  90. //
  91. ((CButton*)GetDlgItem(IDC_CATEGORIZED))->SetCheck(1);
  92. return TRUE; // return TRUE unless you set the focus to a control
  93. }
  94. // If you add a minimize button to your dialog, you will need the code below
  95. // to draw the icon. For MFC applications using the document/view model,
  96. // this is automatically done for you by the framework.
  97. void CPropGridDlg::OnPaint()
  98. {
  99. if (IsIconic())
  100. {
  101. CPaintDC dc(this); // device context for painting
  102. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  103. // Center icon in client rectangle
  104. int cxIcon = GetSystemMetrics(SM_CXICON);
  105. int cyIcon = GetSystemMetrics(SM_CYICON);
  106. CRect rect;
  107. GetClientRect(&rect);
  108. int x = (rect.Width() - cxIcon + 1) / 2;
  109. int y = (rect.Height() - cyIcon + 1) / 2;
  110. // Draw the icon
  111. dc.DrawIcon(x, y, m_hIcon);
  112. }
  113. else
  114. {
  115. CDialog::OnPaint();
  116. }
  117. }
  118. // The system calls this function to obtain the cursor to display while the user drags
  119. // the minimized window.
  120. HCURSOR CPropGridDlg::OnQueryDragIcon()
  121. {
  122. return static_cast<HCURSOR>(m_hIcon);
  123. }
  124. void CPropGridDlg::OnBnClickedOk()
  125. {
  126. //string strValue;
  127. //if (m_ctrlGrid.GetItemValue(m_hItem, strValue))
  128. // AfxMessageBox(strValue.c_str());
  129. OnOK();
  130. }
  131. LRESULT CPropGridDlg::OnItemChanged(WPARAM wParam, LPARAM lParam)
  132. {
  133. if (wParam == m_hItemLines)
  134. {
  135. bool draw_lines;
  136. m_ctrlGrid.GetItemValue(m_hItemLines, draw_lines);
  137. m_ctrlGrid.SetDrawLines(draw_lines);
  138. }
  139. else if (wParam == m_hItemShade)
  140. {
  141. bool shade_titles;
  142. m_ctrlGrid.GetItemValue(m_hItemShade, shade_titles);
  143. m_ctrlGrid.SetShadeTitles(shade_titles);
  144. }
  145. else if (wParam == m_hItemGutter)
  146. {
  147. bool draw_gutter;
  148. m_ctrlGrid.GetItemValue(m_hItemGutter, draw_gutter);
  149. m_ctrlGrid.SetDrawGutter(draw_gutter);
  150. }
  151. else if (wParam == m_hItemFocusDis)
  152. {
  153. bool focus_disabled;
  154. m_ctrlGrid.GetItemValue(m_hItemFocusDis, focus_disabled);
  155. m_ctrlGrid.SetFocusDisabled(focus_disabled);
  156. }
  157. return 0;
  158. }
  159. void CPropGridDlg::OnBnClickedCollapseAll()
  160. {
  161. m_ctrlGrid.ExpandAll(false);
  162. }
  163. void CPropGridDlg::OnBnClickedExpandAll()
  164. {
  165. m_ctrlGrid.ExpandAll(true);
  166. }
  167. void CPropGridDlg::OnBnClickedCustomColors()
  168. {
  169. CButton* pBtn = (CButton*) GetDlgItem(IDC_CUSTOM_COLORS);
  170. if (pBtn->GetCheck() == 0)
  171. {
  172. m_ctrlGrid.SetBackColor(GetSysColor(COLOR_WINDOW));
  173. m_ctrlGrid.SetShadeColor(GetSysColor(COLOR_3DFACE));
  174. m_ctrlGrid.SetTextColor(GetSysColor(COLOR_WINDOWTEXT));
  175. m_ctrlGrid.SetTitleColor(GetSysColor(COLOR_WINDOWTEXT));
  176. }
  177. else
  178. {
  179. m_ctrlGrid.SetBackColor(RGB(0xFF, 0xFF, 0xE0));
  180. m_ctrlGrid.SetShadeColor(RGB(0,187,94));
  181. m_ctrlGrid.SetTextColor(RGB(0,0,192));
  182. m_ctrlGrid.SetTitleColor(RGB(255,255,255));
  183. }
  184. }
  185. void CPropGridDlg::OnBnClickedCategorized()
  186. {
  187. m_ctrlGrid.SetDisplayMode(CPropertyGrid::DM_CATEGORIZED);
  188. GetDlgItem(IDC_EXPAND_ALL)->EnableWindow(TRUE);
  189. GetDlgItem(IDC_COLLAPSE_ALL)->EnableWindow(TRUE);
  190. }
  191. void CPropGridDlg::OnBnClickedAlphabetical()
  192. {
  193. m_ctrlGrid.SetDisplayMode(CPropertyGrid::DM_ALPHABETICAL);
  194. GetDlgItem(IDC_EXPAND_ALL)->EnableWindow(FALSE);
  195. GetDlgItem(IDC_COLLAPSE_ALL)->EnableWindow(FALSE);
  196. }
  197. void CPropGridDlg::OnBnClickedNosort()
  198. {
  199. m_ctrlGrid.SetDisplayMode(CPropertyGrid::DM_NOSORT);
  200. GetDlgItem(IDC_EXPAND_ALL)->EnableWindow(FALSE);
  201. GetDlgItem(IDC_COLLAPSE_ALL)->EnableWindow(FALSE);
  202. }