TaskEditButtonDlg.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
- // TaskEditButtonDlg.cpp : implementation file
- //
- #include "stdafx.h"
- #include "VistaTaskDialog.h"
- #include "TaskSheetProperties.h"
- #include "TaskEditButtonDlg.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CTaskEditButtonDlg dialog
- CTaskEditButtonDlg::CTaskEditButtonDlg(CComboBox* pWndCombo /*=NULL*/, BOOL bIsEdit /*=TRUE*/, CWnd* pParent /*=NULL*/)
- : CDialog(CTaskEditButtonDlg::IDD, pParent)
- , m_bIsEdit(bIsEdit)
- , m_pWndCombo(pWndCombo)
- {
- //{{AFX_DATA_INIT(CTaskEditButtonDlg)
- m_strText = _T("");
- m_nID = 100;
- //}}AFX_DATA_INIT
- m_pDlgParent = DYNAMIC_DOWNCAST(CTaskSheetProperties, pParent);
- ASSERT_VALID(m_pDlgParent);
- //AddButton(L"OK", IDOK);
- //AddButton(L"Cancel", IDCANCEL);
- //AddButton(L"Retry", IDRETRY);
- //AddButton(L"Yes", IDYES);
- //AddButton(L"No", IDNO);
- //AddButton(L"Cancel", IDCLOSE);
- GetNextAvailableID();
- }
- void CTaskEditButtonDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CTaskEditButtonDlg)
- DDX_Control(pDX, IDC_EDIT_ID, m_wndEditCtrl);
- DDX_Control(pDX, IDC_SPIN_ID, m_wndSpinCtrl);
- DDX_Control(pDX, IDC_EDIT_TEXT, m_wndEditText);
- DDX_Text(pDX, IDC_EDIT_TEXT, m_strText);
- DDX_Text(pDX, IDC_EDIT_ID, m_nID);
- DDV_MinMaxInt(pDX, m_nID, 100, 200);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CTaskEditButtonDlg, CDialog)
- //{{AFX_MSG_MAP(CTaskEditButtonDlg)
- ON_WM_DESTROY()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CTaskEditButtonDlg message handlers
- BOOL CTaskEditButtonDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
-
- // TODO: Add extra initialization here
- m_wndSpinCtrl.SetRange(100,200);
- if (!m_bIsEdit)
- {
- SetWindowText(_T("Add Button"));
- }
- return TRUE; // return TRUE unless you set the focus to a control
- // EXCEPTION: OCX Property Pages should return FALSE
- }
- void CTaskEditButtonDlg::AddButton(PCWSTR pszText, int nButtonID)
- {
- TASKDIALOG_BUTTON button;
- button.pszButtonText = pszText;
- button.nButtonID = nButtonID;
- m_arButtons.Add(button);
- }
- void CTaskEditButtonDlg::GetNextAvailableID(BOOL bUpdateData /*=FALSE*/)
- {
- if (::IsWindow(m_pDlgParent->GetSafeHwnd()))
- {
- CButtonMap& map = m_pDlgParent->GetButtonMap();
- POSITION pos = map.GetStartPosition();
- while (pos != NULL)
- {
- int nID; CString strText;
- map.GetNextAssoc(pos, nID, strText);
- m_nID = __max(m_nID, nID);
- }
- m_nID++;
- m_strText.Format(_T("New Button %d"), m_nID);
- if (bUpdateData)
- UpdateData(FALSE);
- }
- }
- void CTaskEditButtonDlg::OnOK()
- {
- // Don't allow buttons with ID's that are already in use.
- for (int i = 0; i <= m_arButtons.GetUpperBound(); i++)
- {
- TASKDIALOG_BUTTON& button = m_arButtons.GetAt(i);
- if (m_nID == button.nButtonID)
- {
- USES_CONVERSION;
- CString strBuffer;
- strBuffer.Format(IDS_ERROR_RESERVED,
- m_nID, W2CA(button.pszButtonText));
- AfxMessageBox(strBuffer, MB_ICONEXCLAMATION|MB_OK);
- GetNextAvailableID(TRUE);
- return;
- }
- }
- if (::IsWindow(m_pDlgParent->GetSafeHwnd()))
- {
- m_wndEditText.GetWindowText(m_strText);
- UpdateData(FALSE);
- if (m_bIsEdit)
- {
- m_pDlgParent->UpdateButtonMap(
- m_strText, m_nID, m_pWndCombo, FALSE);
- }
- UpdateData();
- if (m_pDlgParent->UpdateButtonMap(
- m_strText, m_nID, m_pWndCombo, TRUE))
- {
- CDialog::OnOK();
- }
- else
- {
- GetNextAvailableID(TRUE);
- }
- }
- }
- void CTaskEditButtonDlg::OnDestroy()
- {
- CDialog::OnDestroy();
-
- // TODO: Add your message handler code here
-
- }