123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- // PropGridDlg.cpp : implementation file
- //
- #include "stdafx.h"
- #include "PropGrid.h"
- #include "PropGridDlg.h"
- #include ".\propgriddlg.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- // CPropGridDlg dialog
- CPropGridDlg::CPropGridDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CPropGridDlg::IDD, pParent)
- {
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- }
- void CPropGridDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_GRID, m_ctrlGrid);
- }
- BEGIN_MESSAGE_MAP(CPropGridDlg, CDialog)
- ON_WM_PAINT()
- ON_WM_QUERYDRAGICON()
- ON_BN_CLICKED(IDOK, OnBnClickedOk)
- ON_MESSAGE(WM_PG_ITEMCHANGED, OnItemChanged)
- ON_BN_CLICKED(IDC_COLLAPSE_ALL, OnBnClickedCollapseAll)
- ON_BN_CLICKED(IDC_EXPAND_ALL, OnBnClickedExpandAll)
- ON_BN_CLICKED(IDC_CUSTOM_COLORS, OnBnClickedCustomColors)
- ON_BN_CLICKED(IDC_CATEGORIZED, OnBnClickedCategorized)
- ON_BN_CLICKED(IDC_ALPHABETICAL, OnBnClickedAlphabetical)
- ON_BN_CLICKED(IDC_NOSORT, OnBnClickedNosort)
- END_MESSAGE_MAP()
- // CPropGridDlg message handlers
- BOOL CPropGridDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- // Set the icon for this dialog. The framework does this automatically
- // when the application's main window is not a dialog
- SetIcon(m_hIcon, TRUE); // Set big icon
- SetIcon(m_hIcon, FALSE); // Set small icon
- // basic items
- HSECTION hs = m_ctrlGrid.AddSection("Basic Items");
- //m_ctrlGrid.SetShadeColor(RGB(255,122,122));
- m_ctrlGrid.AddStringItem(hs, "String", "A single line string item");
- m_ctrlGrid.AddTextItem(hs, "Text", "A multi line text item.\r\nSecond line...");
- m_ctrlGrid.AddStringItem(hs, "Disabled item", "A disabled item", false);
- m_ctrlGrid.AddIntegerItem(hs, "Integer", 10);
- m_ctrlGrid.AddIntegerItem(hs, "Formatted Integer", 8, "%d inches");
- m_ctrlGrid.AddDoubleItem(hs, "Double", 7.33);
- m_ctrlGrid.AddDoubleItem(hs, "Formatted Double", 10.25, "%gmm");
- m_ctrlGrid.AddBoolItem(hs, "Boolean", true);
- m_ctrlGrid.AddCheckItem(hs, "Check", true);
- // custom items
- hs = m_ctrlGrid.AddSection("Custom Items");
- m_ctrlGrid.AddCustomItem(hs, "Custom In-place Edit", &m_item_serial);
- m_ctrlGrid.AddCustomItem(hs, "Custom Modal Edit", &m_item_rect);
- m_ctrlGrid.AddCustomItem(hs, "Ccustom Dropdown Edit", &m_item_tree);
- m_ctrlGrid.AddCustomItem(hs, "Full Custom Edit", &m_item_gradient);
- // more items inserted before the custom ones
- hs = m_ctrlGrid.AddSection("More Items", true, hs);
- // a combo
- vector<string> v;
- v.push_back("English");
- v.push_back("French");
- v.push_back("German");
- v.push_back("Spanish");
- m_ctrlGrid.AddComboItem(hs, "Combo", v, 2, true);
- // some "simple"
- m_ctrlGrid.AddDateItem(hs, "Date", COleDateTime::GetCurrentTime());
- m_ctrlGrid.AddDateItem(hs, "Formatted Date", COleDateTime::GetCurrentTime(), "%A, %d %B %Y");
- m_ctrlGrid.AddDateTimeItem(hs, "Date Time", COleDateTime::GetCurrentTime());
- m_ctrlGrid.AddColorItem(hs, "Color", RGB(255,156,12));
- m_ctrlGrid.AddFileItem(hs, "File", "C:\\AUTOEXEC.BAT", "All Files (*.*)|*.*||");
- m_ctrlGrid.AddFolderItem(hs, "Folder", "C:\\", "Select a folder");
- // a font
- LOGFONT lf;
- CFont font;
- font.CreatePointFont(80, "Tahoma");
- font.GetLogFont(&lf);
- m_ctrlGrid.AddFontItem(hs, "Font", lf, true);
- // customization
- hs = m_ctrlGrid.AddSection("Grid customization");
- m_hItemShade = m_ctrlGrid.AddBoolItem(hs, "Shade titles", m_ctrlGrid.GetShadeTitles());
- m_hItemLines = m_ctrlGrid.AddBoolItem(hs, "Draw lines", m_ctrlGrid.GetDrawLines());
- m_hItemGutter = m_ctrlGrid.AddBoolItem(hs, "Draw gutter", m_ctrlGrid.GetDrawGutter());
- m_hItemFocusDis = m_ctrlGrid.AddBoolItem(hs, "Focus disabled items", m_ctrlGrid.GetFocusDisabled());
- // stuff
- m_ctrlGrid.SetOkCancelStrings("OK", "Annuler");
- m_ctrlGrid.SetDateTimeStrings("Date", "Heure");
- //
- ((CButton*)GetDlgItem(IDC_CATEGORIZED))->SetCheck(1);
- return TRUE; // return TRUE unless you set the focus to a control
- }
- // If you add a minimize button to your dialog, you will need the code below
- // to draw the icon. For MFC applications using the document/view model,
- // this is automatically done for you by the framework.
- void CPropGridDlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // device context for painting
- SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
- // Center icon in client rectangle
- int cxIcon = GetSystemMetrics(SM_CXICON);
- int cyIcon = GetSystemMetrics(SM_CYICON);
- CRect rect;
- GetClientRect(&rect);
- int x = (rect.Width() - cxIcon + 1) / 2;
- int y = (rect.Height() - cyIcon + 1) / 2;
- // Draw the icon
- dc.DrawIcon(x, y, m_hIcon);
- }
- else
- {
- CDialog::OnPaint();
- }
- }
- // The system calls this function to obtain the cursor to display while the user drags
- // the minimized window.
- HCURSOR CPropGridDlg::OnQueryDragIcon()
- {
- return static_cast<HCURSOR>(m_hIcon);
- }
- void CPropGridDlg::OnBnClickedOk()
- {
- //string strValue;
- //if (m_ctrlGrid.GetItemValue(m_hItem, strValue))
- // AfxMessageBox(strValue.c_str());
- OnOK();
- }
- LRESULT CPropGridDlg::OnItemChanged(WPARAM wParam, LPARAM lParam)
- {
- if (wParam == m_hItemLines)
- {
- bool draw_lines;
- m_ctrlGrid.GetItemValue(m_hItemLines, draw_lines);
- m_ctrlGrid.SetDrawLines(draw_lines);
- }
- else if (wParam == m_hItemShade)
- {
- bool shade_titles;
- m_ctrlGrid.GetItemValue(m_hItemShade, shade_titles);
- m_ctrlGrid.SetShadeTitles(shade_titles);
- }
- else if (wParam == m_hItemGutter)
- {
- bool draw_gutter;
- m_ctrlGrid.GetItemValue(m_hItemGutter, draw_gutter);
- m_ctrlGrid.SetDrawGutter(draw_gutter);
- }
- else if (wParam == m_hItemFocusDis)
- {
- bool focus_disabled;
- m_ctrlGrid.GetItemValue(m_hItemFocusDis, focus_disabled);
- m_ctrlGrid.SetFocusDisabled(focus_disabled);
- }
- return 0;
- }
- void CPropGridDlg::OnBnClickedCollapseAll()
- {
- m_ctrlGrid.ExpandAll(false);
- }
- void CPropGridDlg::OnBnClickedExpandAll()
- {
- m_ctrlGrid.ExpandAll(true);
- }
- void CPropGridDlg::OnBnClickedCustomColors()
- {
- CButton* pBtn = (CButton*) GetDlgItem(IDC_CUSTOM_COLORS);
- if (pBtn->GetCheck() == 0)
- {
- m_ctrlGrid.SetBackColor(GetSysColor(COLOR_WINDOW));
- m_ctrlGrid.SetShadeColor(GetSysColor(COLOR_3DFACE));
- m_ctrlGrid.SetTextColor(GetSysColor(COLOR_WINDOWTEXT));
- m_ctrlGrid.SetTitleColor(GetSysColor(COLOR_WINDOWTEXT));
- }
- else
- {
- m_ctrlGrid.SetBackColor(RGB(0xFF, 0xFF, 0xE0));
- m_ctrlGrid.SetShadeColor(RGB(0,187,94));
- m_ctrlGrid.SetTextColor(RGB(0,0,192));
- m_ctrlGrid.SetTitleColor(RGB(255,255,255));
- }
- }
- void CPropGridDlg::OnBnClickedCategorized()
- {
- m_ctrlGrid.SetDisplayMode(CPropertyGrid::DM_CATEGORIZED);
- GetDlgItem(IDC_EXPAND_ALL)->EnableWindow(TRUE);
- GetDlgItem(IDC_COLLAPSE_ALL)->EnableWindow(TRUE);
- }
- void CPropGridDlg::OnBnClickedAlphabetical()
- {
- m_ctrlGrid.SetDisplayMode(CPropertyGrid::DM_ALPHABETICAL);
- GetDlgItem(IDC_EXPAND_ALL)->EnableWindow(FALSE);
- GetDlgItem(IDC_COLLAPSE_ALL)->EnableWindow(FALSE);
- }
- void CPropGridDlg::OnBnClickedNosort()
- {
- m_ctrlGrid.SetDisplayMode(CPropertyGrid::DM_NOSORT);
- GetDlgItem(IDC_EXPAND_ALL)->EnableWindow(FALSE);
- GetDlgItem(IDC_COLLAPSE_ALL)->EnableWindow(FALSE);
- }
|