QListCtrlPpg.cpp
上传用户:cnjubao
上传日期:2007-01-02
资源大小:34k
文件大小:5k
源码类别:

ListView/ListBox

开发平台:

Visual C++

  1. /************************************
  2.   REVISION LOG ENTRY
  3.   Revision By: Mihai Filimon
  4.   Revised on 11/2/98 21:20:30
  5.   Comments: QListCtrlPpg.cpp : Implementation of the CQListCtrlPropPage property page class.
  6.  ************************************/
  7. #include "stdafx.h"
  8. #include "QListCtrl.h"
  9. #include "QListCtrlPpg.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. IMPLEMENT_DYNCREATE(CQListCtrlPropPage, COlePropertyPage)
  16. /////////////////////////////////////////////////////////////////////////////
  17. // Message map
  18. BEGIN_MESSAGE_MAP(CQListCtrlPropPage, COlePropertyPage)
  19. //{{AFX_MSG_MAP(CQListCtrlPropPage)
  20. //}}AFX_MSG_MAP
  21. END_MESSAGE_MAP()
  22. /////////////////////////////////////////////////////////////////////////////
  23. // Initialize class factory and guid
  24. IMPLEMENT_OLECREATE_EX(CQListCtrlPropPage, "QLISTCTRL.QListCtrlPropPage.1",
  25. 0xbfcc1bc7, 0x7257, 0x11d2, 0x86, 0xe6, 0, 0x40, 0x5, 0x5c, 0x8, 0xd9)
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CQListCtrlPropPage::CQListCtrlPropPageFactory::UpdateRegistry -
  28. // Adds or removes system registry entries for CQListCtrlPropPage
  29. BOOL CQListCtrlPropPage::CQListCtrlPropPageFactory::UpdateRegistry(BOOL bRegister)
  30. {
  31. if (bRegister)
  32. return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(),
  33. m_clsid, IDS_QLISTCTRL_PPG);
  34. else
  35. return AfxOleUnregisterClass(m_clsid, NULL);
  36. }
  37. /////////////////////////////////////////////////////////////////////////////
  38. // CQListCtrlPropPage::CQListCtrlPropPage - Constructor
  39. #define sC _separatorColumnHeader
  40. #define sH _separatorHeader
  41. static const CString defaultText =  CString(_T("<... "Col1")) + sH + _T("Hght1") + sH + _T("Just1") + sC + _T(" ... ") + sC + _T("ColN") + sH + _T("HghtN") + sH + _T("JustN" ...>");
  42. CQListCtrlPropPage::CQListCtrlPropPage() :
  43. COlePropertyPage(IDD, IDS_QLISTCTRL_PPG_CAPTION),m_labelHeader(defaultText)
  44. {
  45. //{{AFX_DATA_INIT(CQListCtrlPropPage)
  46. m_bGridLines = FALSE;
  47. m_bMultiSelect = FALSE;
  48. m_bNoHeader = FALSE;
  49. m_bSColumn = FALSE;
  50. //}}AFX_DATA_INIT
  51. }
  52. /////////////////////////////////////////////////////////////////////////////
  53. // CQListCtrlPropPage::DoDataExchange - Moves data between page and properties
  54. void CQListCtrlPropPage::DoDataExchange(CDataExchange* pDX)
  55. {
  56. //{{AFX_DATA_MAP(CQListCtrlPropPage)
  57. DDP_Check(pDX, IDC_CHECK_GRIDLINES, m_bGridLines, _T("GridLines") );
  58. DDX_Check(pDX, IDC_CHECK_GRIDLINES, m_bGridLines);
  59. DDP_Check(pDX, IDC_CHECK_MULTISELECT, m_bMultiSelect, _T("MultiSelect") );
  60. DDX_Check(pDX, IDC_CHECK_MULTISELECT, m_bMultiSelect);
  61. DDP_Check(pDX, IDC_CHECK_NOHEADER, m_bNoHeader, _T("NoHeader") );
  62. DDX_Check(pDX, IDC_CHECK_NOHEADER, m_bNoHeader);
  63. DDP_Check(pDX, IDC_CHECK_SCOLUMN, m_bSColumn, _T("SColumn"));
  64. DDX_Check(pDX, IDC_CHECK_SCOLUMN, m_bSColumn);
  65. //}}AFX_DATA_MAP
  66. DDP_PostProcessing(pDX);
  67. long nHeight = 0;
  68. if (pDX->m_bSaveAndValidate)
  69. {
  70. m_sHeader = m_labelHeader.GetText();
  71. m_sHeight = m_labelHeight.GetText();
  72. nHeight = abs(atoi(m_sHeight));
  73. }
  74. DDP_DEFINE<CString>(this, pDX->m_bSaveAndValidate, &m_sHeader, _T("Header"), VT_BSTR);
  75. DDP_DEFINE<long>(this, pDX->m_bSaveAndValidate, &nHeight, _T("ItemHeight"), VT_I4);
  76. m_sHeight.Format(_T("%i"), nHeight);
  77. }
  78. /////////////////////////////////////////////////////////////////////////////
  79. // CQListCtrlPropPage message handlers
  80. // Function name : CQListCtrlPropPage::OnInitDialog
  81. // Description     : Call to subclass all controls
  82. // Return type : BOOL 
  83. BOOL CQListCtrlPropPage::OnInitDialog() 
  84. {
  85. COlePropertyPage::OnInitDialog();
  86. m_labelHeader.SubclassDlgItem(IDC_CUSTOM_HEADER, this);
  87.  m_labelHeader.SetText(m_sHeader);
  88. m_labelHeight.SubclassDlgItem(IDC_CUSTOM_HEIGHT, this);
  89.  m_labelHeight.SetText(m_sHeight);
  90. m_labelSeparators.SubclassDlgItem(IDC_CUSTOM_SEPARATORS, this);
  91. CComboBox* pCombo = (CComboBox*)GetDlgItem(IDC_COMBO_SEPARATORS);
  92. int nC = pCombo->AddString(CString(_T("Columns: '")) + _separatorColumnHeader + TCHAR('''));
  93. pCombo->AddString(CString(_T("Height,Justify: '")) + _separatorHeader + TCHAR('''));
  94. m_labelSeparators.Attach(pCombo->m_hWnd);
  95. CString s; pCombo->GetLBText(nC, s);
  96. m_labelSeparators.SetText(s);
  97. pCombo->SetCurSel(nC);
  98. return FALSE;  // return TRUE unless you set the focus to a control
  99.               // EXCEPTION: OCX Property Pages should return FALSE
  100. }
  101. // Function name : CQListCtrlPropPage::WindowProc
  102. // Description     : If something is change in one of CTEditLabels then will propage the modified flag
  103. // Return type : LRESULT 
  104. // Argument         :  UINT message
  105. // Argument         : WPARAM wParam
  106. // Argument         : LPARAM lParam
  107. LRESULT CQListCtrlPropPage::WindowProc( UINT message, WPARAM wParam, LPARAM lParam )
  108. {
  109. if (message == WM_COMMAND)
  110. if (HIWORD(wParam) == EN_CHANGE)
  111. SetModifiedFlag();
  112. return COlePropertyPage::WindowProc( message, wParam, lParam );
  113. }