windows-nt/Source/XPSP1/NT/shell/osshell/dskquota/ui/yntoall.cpp
2020-09-26 16:20:57 +08:00

208 lines
6.1 KiB
C++

///////////////////////////////////////////////////////////////////////////////
/* File: yntoall.cpp
Description: Implements the YesNoToAll dialog.
Revision History:
Date Description Programmer
-------- --------------------------------------------------- ----------
05/28/97 Initial creation. BrianAu
*/
///////////////////////////////////////////////////////////////////////////////
#include "pch.h"
#pragma hdrstop
#include "yntoall.h"
#include "resource.h"
///////////////////////////////////////////////////////////////////////////////
/* Function: YesNoToAllDialog::YesNoToAllDialog
Description: Class constructor.
Arguments:
idDialogTemplate - ID number for the dialog's resource template.
Returns: Nothing.
Revision History:
Date Description Programmer
-------- --------------------------------------------------- ----------
05/28/97 Initial creation. BrianAu
*/
///////////////////////////////////////////////////////////////////////////////
YesNoToAllDialog::YesNoToAllDialog(
UINT idDialogTemplate
) : m_idDialogTemplate(idDialogTemplate),
m_hwndCbxApplyToAll(NULL),
m_hwndTxtMsg(NULL),
m_bApplyToAll(FALSE),
m_pszTitle(NULL),
m_pszText(NULL)
{
DBGTRACE((DM_VIEW, DL_HIGH, TEXT("YesNoToAllDialog::YesNoToAllDialog")));
//
// Do nothing.
//
}
///////////////////////////////////////////////////////////////////////////////
/* Function: YesNoToAllDialog::~YesNoToAllDialog
Description: Class destructor.
Arguments: None.
Returns: Nothing.
Revision History:
Date Description Programmer
-------- --------------------------------------------------- ----------
05/28/97 Initial creation. BrianAu
*/
///////////////////////////////////////////////////////////////////////////////
YesNoToAllDialog::~YesNoToAllDialog(
VOID
)
{
DBGTRACE((DM_VIEW, DL_HIGH, TEXT("YesNoToAllDialog::YesNoToAllDialog")));
//
// Call the Destroy() function to destroy the progress dialog window.
//
delete[] m_pszTitle;
delete[] m_pszText;
}
///////////////////////////////////////////////////////////////////////////////
/* Function: YesNoToAllDialog::Create
Description: Creates the dialog.
Arguments:
hInstance - Instance handle for the DLL containing the dialog
resource template.
hwndParent - Parent window for dialog.
lpszTitle - Title for dialog.
lpszText - Text message for dialog.
Returns:
TRUE = Dialog was created.
FALSE = Dialog was not created.
Revision History:
Date Description Programmer
-------- --------------------------------------------------- ----------
05/28/97 Initial creation. BrianAu
*/
///////////////////////////////////////////////////////////////////////////////
INT_PTR
YesNoToAllDialog::CreateAndRun(
HINSTANCE hInstance,
HWND hwndParent,
LPCTSTR pszTitle,
LPCTSTR pszText
)
{
DBGASSERT((NULL != pszTitle));
DBGASSERT((NULL != pszText));
//
// Set these in member variables so that the text can be set in the
// dialog in response to WM_INITDIALOG.
//
m_pszTitle = StringDup(pszTitle);
m_pszText = StringDup(pszText);
return DialogBoxParam(hInstance,
MAKEINTRESOURCE(m_idDialogTemplate),
hwndParent,
DlgProc,
(LPARAM)this);
}
///////////////////////////////////////////////////////////////////////////////
/* Function: YesNoToAllDialog::DlgProc [static]
Description: Message procedure for the dialog.
Arguments: Standard Win32 message proc arguments.
Returns: Standard Win32 message proc return values.
Revision History:
Date Description Programmer
-------- --------------------------------------------------- ----------
05/28/97 Initial creation. BrianAu
*/
///////////////////////////////////////////////////////////////////////////////
INT_PTR CALLBACK
YesNoToAllDialog::DlgProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
//
// Retrieve the dialog object's ptr from the window's userdata.
// Place there in response to WM_INITDIALOG.
//
YesNoToAllDialog *pThis = (YesNoToAllDialog *)GetWindowLongPtr(hwnd, DWLP_USER);
switch(uMsg)
{
case WM_INITDIALOG:
//
// Store "this" ptr in window's userdata.
//
SetWindowLongPtr(hwnd, DWLP_USER, (INT_PTR)lParam);
pThis = (YesNoToAllDialog *)lParam;
//
// Center popup on the desktop.
//
::CenterPopupWindow(hwnd, GetDesktopWindow());
pThis->m_hwndTxtMsg = GetDlgItem(hwnd, IDC_TXT_YNTOALL);
pThis->m_hwndCbxApplyToAll = GetDlgItem(hwnd, IDC_CBX_YNTOALL);
SetWindowText(pThis->m_hwndTxtMsg, pThis->m_pszText);
SetWindowText(hwnd, pThis->m_pszTitle);
SendMessage(pThis->m_hwndCbxApplyToAll,
BM_SETCHECK,
pThis->m_bApplyToAll ? (WPARAM)BST_CHECKED : (WPARAM)BST_UNCHECKED,
0);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDCANCEL:
case IDYES:
case IDNO:
DBGASSERT((NULL != pThis));
pThis->m_bApplyToAll = (BST_CHECKED == SendMessage(pThis->m_hwndCbxApplyToAll, BM_GETCHECK, 0, 0));
EndDialog(hwnd, LOWORD(wParam));
break;
}
break;
}
return FALSE;
}