TaskPageRadioButtons.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:5k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // TaskPageRadioButtons.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "VistaTaskDialog.h"
  5. #include "TaskSheetProperties.h"
  6. #include "TaskPageRadioButtons.h"
  7. #include "TaskEditButtonDlg.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CTaskPageRadioButtons property page
  15. IMPLEMENT_DYNCREATE(CTaskPageRadioButtons, CPropertyPage)
  16. CTaskPageRadioButtons::CTaskPageRadioButtons() : CPropertyPage(CTaskPageRadioButtons::IDD)
  17. {
  18. //{{AFX_DATA_INIT(CTaskPageRadioButtons)
  19. m_bNoDefault = FALSE;
  20. //}}AFX_DATA_INIT
  21. }
  22. CTaskPageRadioButtons::~CTaskPageRadioButtons()
  23. {
  24. }
  25. void CTaskPageRadioButtons::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CPropertyPage::DoDataExchange(pDX);
  28. //{{AFX_DATA_MAP(CTaskPageRadioButtons)
  29. DDX_Control(pDX, IDC_TXT_DEFAULT, m_txtDefault);
  30. DDX_Control(pDX, IDC_BTN_REMOVE, m_btnRemove);
  31. DDX_Control(pDX, IDC_BTN_EDIT, m_btnEdit);
  32. DDX_Control(pDX, IDC_BTN_ADD, m_btnAdd);
  33. DDX_Control(pDX, IDC_LIST_CUSTOM, m_listCustom);
  34. DDX_Control(pDX, IDC_COMBO_DEFAULT, m_comboDefault);
  35. DDX_Check(pDX, IDC_CHK_NODEFAULT, m_bNoDefault);
  36. //}}AFX_DATA_MAP
  37. }
  38. BEGIN_MESSAGE_MAP(CTaskPageRadioButtons, CPropertyPage)
  39. //{{AFX_MSG_MAP(CTaskPageRadioButtons)
  40. ON_BN_CLICKED(IDC_CHK_NODEFAULT, OnChkNoDefault)
  41. ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
  42. ON_BN_CLICKED(IDC_BTN_EDIT, OnBtnEdit)
  43. ON_BN_CLICKED(IDC_BTN_REMOVE, OnBtnRemove)
  44. ON_CBN_SELENDOK(IDC_COMBO_DEFAULT, OnSelEndOkDefault)
  45. ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_CUSTOM, OnItemChangedListCustom)
  46. //}}AFX_MSG_MAP
  47. END_MESSAGE_MAP()
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CTaskPageRadioButtons message handlers
  50. void CTaskPageRadioButtons::OnChkNoDefault()
  51. {
  52. UpdateData();
  53. m_comboDefault.EnableWindow(!m_bNoDefault);
  54. m_txtDefault.EnableWindow(!m_bNoDefault);
  55. }
  56. void CTaskPageRadioButtons::OnSelEndOkDefault()
  57. {
  58. UpdateData();
  59. }
  60. void CTaskPageRadioButtons::OnBtnAdd() 
  61. {
  62. // TODO: Add your control notification handler code here
  63. CTaskEditButtonDlg dlg(&m_comboDefault, FALSE, m_pDlgParent);
  64. if (dlg.DoModal() == IDOK)
  65. {
  66. CString strID;
  67. strID.Format(_T("%d"), dlg.m_nID);
  68. int nIndex = m_listCustom.GetItemCount();
  69. m_listCustom.InsertItem(nIndex, dlg.m_strText);
  70. m_listCustom.SetItemText(nIndex, 1, strID);
  71. }
  72. m_listCustom.SetFocus();
  73. }
  74. void CTaskPageRadioButtons::OnBtnEdit() 
  75. {
  76. // TODO: Add your control notification handler code here
  77. POSITION pos = m_listCustom.GetFirstSelectedItemPosition();
  78. if (pos)
  79. {
  80. CTaskEditButtonDlg dlg(&m_comboDefault, TRUE, m_pDlgParent);
  81. int nIndex = m_listCustom.GetNextSelectedItem(pos);
  82. dlg.m_strText = m_listCustom.GetItemText(nIndex, 0);
  83. dlg.m_nID = _ttoi(m_listCustom.GetItemText(nIndex, 1));
  84. if (dlg.DoModal() == IDOK)
  85. {
  86. CString strID;
  87. strID.Format(_T("%d"), dlg.m_nID);
  88. m_listCustom.SetItemText(nIndex, 0, dlg.m_strText);
  89. m_listCustom.SetItemText(nIndex, 1, strID);
  90. }
  91. }
  92. m_listCustom.SetFocus();
  93. }
  94. void CTaskPageRadioButtons::OnBtnRemove() 
  95. {
  96. // TODO: Add your control notification handler code here
  97. POSITION pos = m_listCustom.GetFirstSelectedItemPosition();
  98. if (pos)
  99. {
  100. if (::MessageBox(m_hWnd, _T("Are you sure you want to delete this item?"),
  101. _T("Confirm Delete"), MB_YESNO|MB_ICONQUESTION) == IDYES)
  102. {
  103. int nIndex = m_listCustom.GetNextSelectedItem(pos);
  104. if (nIndex != LB_ERR)
  105. {
  106. int nID = _ttoi(m_listCustom.GetItemText(nIndex, 1));
  107. CString strText = m_listCustom.GetItemText(nIndex, 0);
  108. m_pDlgParent->UpdateButtonMap(
  109. strText, nID, &m_comboDefault, FALSE);
  110. m_listCustom.DeleteItem(nIndex);
  111. }
  112. }
  113. }
  114. m_listCustom.SetFocus();
  115. }
  116. void CTaskPageRadioButtons::OnItemChangedListCustom(NMHDR* /*pNMHDR*/, LRESULT* pResult) 
  117. {
  118. EnableButtons();
  119. *pResult = 0;
  120. }
  121. void CTaskPageRadioButtons::InsertItem(CString strText, UINT nID)
  122. {
  123. CString strID;
  124. strID.Format(_T("%d"), nID);
  125. int nIndex = m_listCustom.GetItemCount();
  126. m_listCustom.InsertItem(nIndex, strText);
  127. m_listCustom.SetItemText(nIndex, 1, strID);
  128. m_pDlgParent->UpdateButtonMap(
  129. strText, nID, &m_comboDefault, TRUE);
  130. }
  131. void CTaskPageRadioButtons::InsertItem(UINT nString, UINT nID)
  132. {
  133. CString strText;
  134. strText.LoadString(nString);
  135. InsertItem(strText, nID);
  136. }
  137. BOOL CTaskPageRadioButtons::OnInitDialog() 
  138. {
  139. CPropertyPage::OnInitDialog();
  140. // TODO: Add extra initialization here
  141. m_pDlgParent = DYNAMIC_DOWNCAST(CTaskSheetProperties, GetParent());
  142. ASSERT_VALID(m_pDlgParent);
  143. m_listCustom.InsertColumn(0, _T("Text"),  LVCFMT_LEFT, 160);
  144. m_listCustom.InsertColumn(1, _T("Value"), LVCFMT_LEFT, 60);
  145. ListView_SetExtendedListViewStyle(
  146. m_listCustom.m_hWnd, LVS_EX_FULLROWSELECT);
  147. //InsertItem(IDS_RB_GOOD, RB_GOOD);
  148. //InsertItem(IDS_RB_OK,   RB_OK);
  149. //InsertItem(IDS_RB_BAD,  RB_BAD);
  150. return TRUE;  // return TRUE unless you set the focus to a control
  151.               // EXCEPTION: OCX Property Pages should return FALSE
  152. }
  153. BOOL CTaskPageRadioButtons::OnSetActive()
  154. {
  155. if (!CPropertyPage::OnSetActive())
  156. return FALSE;
  157. EnableButtons();
  158. return TRUE;
  159. }
  160. void CTaskPageRadioButtons::EnableButtons()
  161. {
  162. if (::IsWindow(m_listCustom.m_hWnd))
  163. {
  164. BOOL bEnable = (m_listCustom.GetSelectedCount() > 0);
  165. m_btnEdit.EnableWindow(bEnable);
  166. m_btnRemove.EnableWindow(bEnable);
  167. }
  168. }