#include "stdafx.h" #include "Resource.h" #include "TaskDialogSamples.h" ///////////////// TEST CODE /////////////////// enum { IDC_BUTTON_STATE = 101, IDC_BUTTON_MODE, }; CProgressEffectsDialog::CProgressEffectsDialog(CWnd* pWndParent) : CXTPTaskDialog(pWndParent) , m_eState(PBST_NORMAL) , m_bMarquee(TRUE) { SetWindowTitle(_T("Progress Effects")); AddButton(_T("Cycle State"), IDC_BUTTON_STATE); AddButton(_T("Toggle Mode"), IDC_BUTTON_MODE); AddButton(_T("Change password"), IDOK); m_config.dwFlags |= TDF_ALLOW_DIALOG_CANCELLATION | TDF_SHOW_PROGRESS_BAR; } void CProgressEffectsDialog::OnDialogConstructed() { UpdateMainInstruction(); SetButtonElevationRequired(IDOK, TRUE); } void CProgressEffectsDialog::OnButtonClicked(int nButtonID, BOOL& bCloseDialog) { switch (nButtonID) { case IDC_BUTTON_STATE: CycleState(); bCloseDialog = FALSE; break; case IDC_BUTTON_MODE: ToggleMode(); bCloseDialog = FALSE; break; } } void CProgressEffectsDialog::UpdateMainInstruction() { CString strText; switch (m_eState) { case PBST_NORMAL: strText += _T("State: Normal\n"); break; case PBST_PAUSED: strText += _T("State: Paused\n"); break; case PBST_ERROR: strText += _T("State: Error\n"); break; } CString strTemp; strTemp.Format(_T("Marquee: %s"), m_bMarquee ? _T("True") : _T("False")); strText += strTemp; SetMainInstruction(strText); if (m_bMarquee) { SetMarqueeProgressBar(m_bMarquee); StartProgressBarMarquee(TRUE, 10); } else { SetProgressBarRange(0, 50); SetProgressBarPos(25); } } void CProgressEffectsDialog::CycleState() { switch (m_eState) { case PBST_NORMAL: m_eState = PBST_PAUSED; break; case PBST_PAUSED: m_eState = PBST_ERROR; break; case PBST_ERROR: m_eState = PBST_NORMAL; break; } SetProgressBarState(m_eState); UpdateMainInstruction(); } void CProgressEffectsDialog::ToggleMode() { m_bMarquee = !m_bMarquee; SetMarqueeProgressBar(m_bMarquee); UpdateMainInstruction(); } ////////////////////////////////////////////////////////////////////////// // CDynamicTextDialog CDynamicTextDialog::CDynamicTextDialog(CWnd* pWndParent) : CXTPTaskDialog(pWndParent) { SetWindowTitle(_T("Dynamic Text")); SetFooter(_T("Click Button to change text")); SetContent(_T("Some text!")); AddButton(_T("Change Main text"), 100); AddButton(_T("Change Content text"), 101); AddButton(_T("Change Footer text"), 102); EnableMessageBoxStyle(); // Only for our Codejock Implementation EnableCancellation(); EnableHyperlinks(); SetCommonButtons(TDCBF_OK_BUTTON); } void CDynamicTextDialog::OnDialogConstructed() { } void CDynamicTextDialog::OnButtonClicked(int nButtonID, BOOL& bCloseDialog) { switch (nButtonID) { case 100: SetMainInstruction(_T("New text")); EnableButton(100, FALSE); bCloseDialog = FALSE; break; case 101: SetContent(_T("Some New text!")); EnableButton(101, FALSE); bCloseDialog = FALSE; break; case 102: SetFooter(_T("New text")); EnableButton(102, FALSE); bCloseDialog = FALSE; break; } } class CSendFeedbackDialog : public CXTPTaskDialog { public: CSendFeedbackDialog(); virtual ~CSendFeedbackDialog(void); protected: virtual void OnNavigated(); virtual void OnButtonClicked(int /*buttonId*/, BOOL& closeDialog); virtual void OnTimer(DWORD dwMilliSeconds, BOOL& bReset); }; enum { MaxRange = 5000 }; CSendFeedbackDialog::CSendFeedbackDialog() { SetWindowTitle(_T("Error Sample (page 2)")); SetContent(_T("Copying your feedback")); EnableCancellation(); ShowProgressBar(TRUE); EnableCallbackTimer(); } CSendFeedbackDialog::~CSendFeedbackDialog(void) { } void CSendFeedbackDialog::OnNavigated() { SetProgressBarRange(0, MaxRange); } void CSendFeedbackDialog::OnButtonClicked(int /*buttonId*/, BOOL& closeDialog) { closeDialog = TRUE; } void CSendFeedbackDialog::OnTimer(DWORD dwMilliSeconds, BOOL& /*bReset*/) { if (MaxRange >= dwMilliSeconds) { USES_CONVERSION; CString text; text.Format(_T("Sending... %i%%"), MulDiv(dwMilliSeconds, 100, MaxRange)); SetMainInstruction(text); SetProgressBarPos(dwMilliSeconds); SetProgressBarRange(0, MaxRange); } else { SetMainInstruction(_T("Thanks for the feedback!")); SetContent(_T("Our developers will get right on that...")); SetProgressBarPos(MaxRange); } } ////////////////////////////////////////////////////////////////////////// // CTimerDialog::CTimerDialog(CWnd* pWndParent) : CXTPTaskDialog(pWndParent) { SetWindowTitle(_T("Timer Sample")); SetMainInstruction(_T("Timer Sample")); SetMainIcon(TD_INFORMATION_ICON); AddButton(_T("Send Feedback"), 100); SetCommonButtons(TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON); EnableCallbackTimer(); EnableMessageBoxStyle(); // Only for our Codejock Implementation SetVerificationText(_T("Enable Timer")); SetVerifyCheckState(); m_nIcon = 0; } void CTimerDialog::OnDialogConstructed() { } void CTimerDialog::OnButtonClicked(int nButtonID, BOOL& bCloseDialog) { if (nButtonID == 100) { CSendFeedbackDialog fd; fd.DoModal(FALSE); bCloseDialog = FALSE; } } void CTimerDialog::OnVerificationClicked(BOOL bChecked) { m_bUpdateIcon = bChecked; } void CTimerDialog::OnTimer(DWORD dwMilliSeconds, BOOL& bReset) { if (dwMilliSeconds > 700 && m_bUpdateIcon) { m_nIcon = (m_nIcon + 1) % 5; if (m_nIcon < 4) { SetMainIcon(m_nIcon == 0 ? TD_INFORMATION_ICON : m_nIcon == 1 ? TD_WARNING_ICON : m_nIcon == 2 ? TD_ERROR_ICON : TD_SHIELD_ICON); } else { SetMainIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME)); } bReset = TRUE; } }