Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
Modal Dialog
Abstract:
This contains the abstract class CModalDialog and the trivial sub class CModalOkDialog which does a simple ok dialog.
Author:
Marc Reyhner 8/28/2000
--*/
#include "stdafx.h"
#include "ModalDialog.h"
#include "eZippy.h"
INT_PTR CModalDialog::DoModal( IN LPCTSTR lpTemplate, IN HWND hWndParent )
/*++
Routine Description:
This does a modal dialog from the given template.
Arguments:
lpTemplate - Template to use see docs on DialogBoxParam
hWndParent - Parent window for the dialog
Return value: Dialog return code see docs on DialogBoxParam
--*/ { return DialogBoxParam(g_hInstance,lpTemplate,hWndParent,_DialogProc,(LPARAM)this); }
INT_PTR CALLBACK CModalDialog::_DialogProc( IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam )
/*++
Routine Description:
If this is a WM_INITDIALOG OnCreate is called. Otherwise the non-static DialogProc function is called.
Arguments:
See win32 DialogProc docs
Return value: TRUE - Message was handles
FALSE - We did not handle the message
--*/ { CModalDialog *rDialog;
if (uMsg == WM_INITDIALOG) { rDialog = (CModalDialog*)lParam; SetWindowLongPtr(hwndDlg,DWLP_USER,lParam); return rDialog->OnCreate(hwndDlg); } rDialog = (CModalDialog*)GetWindowLongPtr(hwndDlg,DWLP_USER); if (!rDialog) { return FALSE; } return rDialog->DialogProc(hwndDlg,uMsg,wParam,lParam); }
INT_PTR CModalDialog::OnCreate( IN HWND hWnd )
/*++
Routine Description:
Empty OnCreate handler for subclasses which don't want to overide this. There is no need for a subclass to call this function if it does something in OnCreate
Arguments:
hWnd - the dialog window.
Return value: TRUE - Always return success (sets keyboard focus).
--*/ { return TRUE; }
INT_PTR CALLBACK CModalOkDialog::DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
/*++
Routine Description:
The one override for CModalOkDialog simply terminates the dialog when an IDOK or IDCANCEL command is received
Arguments:
See win32 DialogProc docs
Return value: TRUE - We handled the message
FALSE - We didn't handle the message
--*/ { WORD command;
if (uMsg == WM_COMMAND) { command = LOWORD(wParam); if (command == IDOK||command==IDCANCEL) { EndDialog(hwndDlg,command); return TRUE; }
}
return FALSE; }
|