Leaked source code of windows server 2003
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.
 
 
 
 
 
 

118 lines
3.2 KiB

/*++
Copyright (C) Microsoft Corporation, 1998 - 1998
All rights reserved.
Module Name:
msgbox.hxx
Abstract:
Message box function with help button.
Author:
copied from nt\printscan\ui\printui code
Revision History:
--*/
#ifndef _MSGBOX_HXX_
#define _MSGBOX_HXX_
#include "resource.h"
typedef struct MSG_HLPMAP
{
UINT uIdMessage; // Mapped message in resouce file
} *PMSG_HLPMAP;
int DoHelpMessageBox(HWND hWndIn, LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt);
int DoHelpMessageBox(HWND hWndIn, UINT iResourceID, UINT nType, UINT nIDPrompt);
//
// Callback function called when the help button is clicked.
//
typedef BOOL (WINAPI *pfHelpCallback)( HWND hwnd, PVOID pRefData );
//
// Message box function that can handle the help button with
// a windows that does not have a known parent.
//
INT
MessageBoxHelper(
IN HWND hWnd,
IN LPCTSTR pszMsg,
IN LPCTSTR pszTitle,
IN UINT uFlags,
IN pfHelpCallback pCallBack = NULL, OPTIONAL
IN PVOID RefData = NULL OPTIONAL
);
//
// Dialog box helper class to catch the WM_HELP
// message when there is a help button on
// a message box.
//
class TMessageBoxDialog
{
public:
TMessageBoxDialog(
IN HWND hWnd,
IN UINT uFlags,
IN LPCTSTR pszTitle,
IN LPCTSTR pszMsg,
IN pfHelpCallback pCallback,
IN PVOID pRefData
) : _hWnd( hWnd ),
_uFlags( uFlags ),
_pszTitle( pszTitle ),
_pszMsg( pszMsg ),
_pCallback( pCallback ),
_pRefData( pRefData ),
_iRetval( 0 )
{};
~TMessageBoxDialog(VOID){};
inline HWND& hDlg(){return _hDlg;}
inline HWND const & hDlg() const{return _hDlg;}
BOOL bSetText(LPCTSTR pszTitle){return SetWindowText( _hDlg, pszTitle );};
VOID vForceCleanup(VOID){SetWindowLongPtr( _hDlg, DWLP_USER, 0L );};
BOOL bValid(VOID) const{return TRUE;};
INT iMessageBox(VOID)
{
_iRetval = 0;
DialogBoxParam(_Module.GetResourceInstance(),MAKEINTRESOURCE(IDD_MESSAGE_BOX_DLG),_hWnd,TMessageBoxDialog::SetupDlgProc,(LPARAM)this);
return _iRetval;
};
static INT_PTR CALLBACK SetupDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
protected:
VOID vSetDlgMsgResult(LONG_PTR lResult){SetWindowLongPtr( _hDlg, DWLP_MSGRESULT, (LPARAM)lResult);};
VOID vSetParentDlgMsgResult(LRESULT lResult){SetWindowLongPtr( GetParent( _hDlg ), DWLP_MSGRESULT, (LPARAM)lResult );};
private:
//
// Copying and assignment are not defined.
//
TMessageBoxDialog(const TMessageBoxDialog &);
TMessageBoxDialog & operator =(const TMessageBoxDialog &);
BOOL bHandleMessage(IN UINT uMsg,IN WPARAM wParam,IN LPARAM lParam);
HWND _hDlg;
HWND _hWnd;
UINT _uFlags;
LPCTSTR _pszTitle;
LPCTSTR _pszMsg;
INT _iRetval;
PVOID _pRefData;
pfHelpCallback _pCallback;
};
#endif