NewItemDlg.cpp
上传用户:shgx688
上传日期:2009-12-27
资源大小:855k
文件大小:4k
源码类别:

SNMP编程

开发平台:

MultiPlatform

  1. // NewItemDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "OAM.h"
  5. #include "NewItemDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CNewItemDlg dialog
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CNewItemDlg dialog
  15. CNewItemDlg::CNewItemDlg(CWnd* pParent /*=NULL*/)
  16. : CDialog(CNewItemDlg::IDD, pParent)
  17. {
  18. //{{AFX_DATA_INIT(CNewItemDlg)
  19. m_nButtonMode = 0;
  20. m_data = 0;
  21. m_text = _T("");
  22. //}}AFX_DATA_INIT
  23. m_pTreeCtrl = NULL;
  24. }
  25. void CNewItemDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. //{{AFX_DATA_MAP(CNewItemDlg)
  29. DDX_Radio(pDX, IDC_BEFORE, m_nButtonMode);
  30. DDX_Text(pDX, IDC_DATA, m_data);
  31. DDX_Text(pDX, IDC_NEW, m_text);
  32. DDX_Control(pDX, IDOK, m_btOk);
  33. DDX_Control(pDX, IDCANCEL, m_btCancel);
  34. //}}AFX_DATA_MAP
  35. }
  36. BEGIN_MESSAGE_MAP(CNewItemDlg, CDialog)
  37. //{{AFX_MSG_MAP(CNewItemDlg)
  38. ON_EN_CHANGE(IDC_NEW, OnChangeNew)
  39. //}}AFX_MSG_MAP
  40. END_MESSAGE_MAP()
  41. /////////////////////////////////////////////////////////////////////////////
  42. // CNewItemDlg message handlers
  43. BOOL CNewItemDlg::OnInitDialog() 
  44. {
  45. //SAMPLE: we'd better have an associated tree control!
  46. // ASSERT(m_pTreeCtrl != NULL);
  47. CDialog::OnInitDialog();
  48. //SAMPLE: what's selected in our control?
  49. HTREEITEM hSelected = m_pTreeCtrl->GetSelectedItem();
  50. //SAMPLE: if nothing, must insert at root
  51. // otherwise, it's the user's choice.
  52. if (hSelected == NULL)
  53. {
  54. m_nInsertMethod = TVI_ROOT;
  55. GetDlgItem(IDC_BEFORE)->EnableWindow(FALSE);
  56. GetDlgItem(IDC_AFTER)->EnableWindow(FALSE);
  57. GetDlgItem(IDC_CHILD)->EnableWindow(FALSE);
  58. SetDlgItemText(IDC_CURRENT, _T("No current item; must insert as root item!"));
  59. m_nButtonMode = 3;
  60. }
  61. else
  62. {
  63. char sz[1024];
  64. TVITEM item;
  65. item.mask = TVIF_TEXT;
  66. item.pszText = sz;
  67. item.cchTextMax = 1024;
  68. item.hItem = hSelected;
  69. if (m_pTreeCtrl->GetItem(&item))
  70. SetDlgItemText(IDC_CURRENT, item.pszText);
  71. else
  72. {
  73. MessageBox(_T("Error retieving current text!"));
  74. EndDialog(IDCANCEL);
  75. }
  76. }
  77. //SAMPLE: initialize the rest of the controls
  78. CEdit* pEdit = (CEdit*) GetDlgItem(IDC_NEW);
  79. // ASSERT(pEdit != NULL);
  80. pEdit->SetLimitText(1024);
  81. pEdit->SetWindowText(_T("New Item"));
  82. //SAMPLE: don't forget to call the base class!
  83. //SAMPLE: we set focus for ourselves, so return FALSE
  84. pEdit->SetFocus();
  85. m_btOk.LoadAVI(IDR_AVI_OK);
  86. m_btCancel.LoadAVI(IDR_AVI_CANCEL);
  87.    UpdateData(FALSE);
  88. return TRUE;
  89. }
  90. void CNewItemDlg::OnChangeNew() 
  91. {
  92. //SAMPLE: if the IDC_NEW becomes empty, disable the OK button
  93. CEdit* pEdit = (CEdit*) GetDlgItem(IDC_NEW);
  94. // ASSERT(pEdit != NULL);
  95. int n = pEdit->GetWindowTextLength();
  96. GetDlgItem(IDOK)->EnableWindow((n != 0));
  97. }
  98. void CNewItemDlg::OnOK() 
  99. {
  100. //SAMPLE: when the user presses OK, decide what to do
  101. UpdateData(TRUE);
  102. // ASSERT(m_pTreeCtrl != NULL);
  103. HTREEITEM hSelected = m_pTreeCtrl->GetSelectedItem();
  104. CString str;
  105. GetDlgItemText(IDC_NEW, str);
  106. HTREEITEM hParent = m_pTreeCtrl->GetParentItem(hSelected);
  107. if (hParent == NULL)
  108. hParent = TVI_ROOT;
  109. //SAMPLE: insert at root
  110. if (m_nButtonMode == 3)
  111. {
  112. m_pTreeCtrl->InsertItem(TVIF_HANDLE ,str,1,1,0,0,m_data,TVI_ROOT, m_nInsertMethod);
  113. }
  114. //HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage, int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam, HTREEITEM hParent, HTREEITEM hInsertAfter );
  115. //SAMPLE: insert after this item
  116. else if (m_nButtonMode == 1)
  117. {
  118. HTREEITEM temp;
  119. temp=m_pTreeCtrl->InsertItem(str,hParent, hSelected);
  120. m_pTreeCtrl->SetItemData(temp,m_data);
  121. }
  122. //SAMPLE: insert before the selected item
  123. else if (m_nButtonMode == 0)
  124. {
  125. HTREEITEM hAfter = m_pTreeCtrl->GetPrevSiblingItem(hSelected);
  126. if (hAfter == NULL)
  127. hAfter = TVI_FIRST;
  128.         HTREEITEM temp;
  129. temp=m_pTreeCtrl->InsertItem(str,hParent, hAfter);
  130.         m_pTreeCtrl->SetItemData(temp,m_data);
  131. }
  132. //SAMPLE: insert as child of the selected item
  133. else
  134. {
  135. HTREEITEM temp;
  136. temp= m_pTreeCtrl->InsertItem(str,hSelected, TVI_FIRST);
  137. m_pTreeCtrl->SetItemData(temp,m_data);
  138. }
  139. CDialog::OnOK();
  140. }