354 lines
5.5 KiB
C++
354 lines
5.5 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (C) Microsoft Corporation, 1994 - 1998
|
||
|
All rights reserved.
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
GenWin.hxx
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Generic window handler
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Albert Ting (AlbertT) 21-May-1994
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _GENWIN_HXX
|
||
|
#define _GENWIN_HXX
|
||
|
|
||
|
/********************************************************************
|
||
|
|
||
|
Generic window class to transform windows into pseudo-objects.
|
||
|
|
||
|
Normally, the wndprocs do not have any C++ objects associated
|
||
|
with them (they are static functions; all instance data must be
|
||
|
stored in HWND GetWindowLong data).
|
||
|
|
||
|
This is a simple thunk that takes a message, looks up the object
|
||
|
based on GetWindowLong( hwnd, GWL_USERDATA ) then call the object.
|
||
|
|
||
|
In order to use this class, derive classes from this class then
|
||
|
override the nHandleMessage virtual function. When your window
|
||
|
receives a message, your derived class will get called from the
|
||
|
virtual member function.
|
||
|
|
||
|
********************************************************************/
|
||
|
|
||
|
class MGenericWin {
|
||
|
|
||
|
SIGNATURE( 'genw' )
|
||
|
ALWAYS_VALID
|
||
|
SAFE_NEW
|
||
|
|
||
|
public:
|
||
|
|
||
|
MGenericWin(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
virtual
|
||
|
~MGenericWin(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VAR( HWND, hwnd );
|
||
|
|
||
|
BOOL
|
||
|
bSetText(
|
||
|
LPCTSTR pszTitle
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
vForceCleanup(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
static
|
||
|
LPARAM APIENTRY
|
||
|
SetupWndProc(
|
||
|
HWND hwnd,
|
||
|
UINT uMsg,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam
|
||
|
);
|
||
|
|
||
|
private:
|
||
|
|
||
|
MGenericWin(
|
||
|
const MGenericWin &
|
||
|
);
|
||
|
|
||
|
MGenericWin &
|
||
|
operator =(
|
||
|
const MGenericWin &
|
||
|
);
|
||
|
|
||
|
virtual
|
||
|
LPARAM
|
||
|
nHandleMessage(
|
||
|
UINT uMsg,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam
|
||
|
) = 0;
|
||
|
|
||
|
static
|
||
|
LPARAM APIENTRY
|
||
|
ThunkWndProc(
|
||
|
HWND hwnd,
|
||
|
UINT uMsg,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam);
|
||
|
};
|
||
|
|
||
|
/********************************************************************
|
||
|
|
||
|
Generic class to transform property pages into pseudo-objects.
|
||
|
|
||
|
Same as GenericWin except used for dialog boxes.
|
||
|
|
||
|
********************************************************************/
|
||
|
|
||
|
class MGenericProp {
|
||
|
|
||
|
SIGNATURE( 'genp' )
|
||
|
ALWAYS_VALID
|
||
|
SAFE_NEW
|
||
|
|
||
|
public:
|
||
|
|
||
|
MGenericProp(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
virtual
|
||
|
~MGenericProp(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VAR( HWND, hDlg );
|
||
|
|
||
|
BOOL
|
||
|
bSetText(
|
||
|
LPCTSTR pszTitle
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
vForceCleanup(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
static
|
||
|
INT_PTR APIENTRY
|
||
|
SetupDlgProc(
|
||
|
HWND hDlg,
|
||
|
UINT uMsg,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam
|
||
|
);
|
||
|
|
||
|
static
|
||
|
UINT CALLBACK
|
||
|
CallbackProc(
|
||
|
HWND hDlg,
|
||
|
UINT uMsg,
|
||
|
LPPROPSHEETPAGE ppsp
|
||
|
);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
VOID
|
||
|
vSetDlgMsgResult(
|
||
|
LONG_PTR lResult
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
vSetParentDlgMsgResult(
|
||
|
LRESULT lResult
|
||
|
);
|
||
|
|
||
|
private:
|
||
|
|
||
|
MGenericProp(
|
||
|
const MGenericProp &
|
||
|
);
|
||
|
|
||
|
MGenericProp &
|
||
|
operator =(
|
||
|
const MGenericProp &
|
||
|
);
|
||
|
|
||
|
virtual
|
||
|
BOOL
|
||
|
bHandleMessage(
|
||
|
UINT uMsg,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam
|
||
|
) = 0;
|
||
|
|
||
|
virtual
|
||
|
BOOL
|
||
|
bCreate(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
virtual
|
||
|
VOID
|
||
|
vDestroy(
|
||
|
VOID
|
||
|
);
|
||
|
};
|
||
|
|
||
|
|
||
|
/********************************************************************
|
||
|
|
||
|
Generic class to transform dialog into pseudo-objects.
|
||
|
|
||
|
Same as GenericWin except used for dialog boxes.
|
||
|
|
||
|
********************************************************************/
|
||
|
|
||
|
class MGenericDialog {
|
||
|
|
||
|
SIGNATURE( 'gend' )
|
||
|
ALWAYS_VALID
|
||
|
SAFE_NEW
|
||
|
|
||
|
public:
|
||
|
|
||
|
MGenericDialog(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
virtual
|
||
|
~MGenericDialog(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VAR( HWND, hDlg );
|
||
|
|
||
|
BOOL
|
||
|
bSetText(
|
||
|
LPCTSTR pszTitle
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
vForceCleanup(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
static
|
||
|
INT_PTR APIENTRY
|
||
|
SetupDlgProc(
|
||
|
HWND hDlg,
|
||
|
UINT uMsg,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam
|
||
|
);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
VOID
|
||
|
vSetDlgMsgResult(
|
||
|
LONG_PTR lResult
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
vSetParentDlgMsgResult(
|
||
|
LRESULT lResult
|
||
|
);
|
||
|
|
||
|
private:
|
||
|
|
||
|
MGenericDialog(
|
||
|
const MGenericDialog &
|
||
|
);
|
||
|
|
||
|
MGenericDialog &
|
||
|
operator =(
|
||
|
const MGenericDialog &
|
||
|
);
|
||
|
|
||
|
virtual
|
||
|
BOOL
|
||
|
bHandleMessage(
|
||
|
UINT uMsg,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam
|
||
|
) = 0;
|
||
|
};
|
||
|
|
||
|
/********************************************************************
|
||
|
|
||
|
MSingletonWin
|
||
|
|
||
|
Used to enforce a single window based on a printer name and type.
|
||
|
(The name and type are composed to form a printer pidl.)
|
||
|
|
||
|
Note: this class must be bRegisterWindowed and destroyed in
|
||
|
the same thread--the one that owns the window.
|
||
|
|
||
|
********************************************************************/
|
||
|
|
||
|
class MSingletonWin {
|
||
|
|
||
|
SIGNATURE( 'siwn' )
|
||
|
SAFE_NEW
|
||
|
|
||
|
public:
|
||
|
|
||
|
VAR( HWND, hwnd );
|
||
|
VAR( TString, strPrinterName );
|
||
|
VAR( BOOL, bModal );
|
||
|
|
||
|
MSingletonWin(
|
||
|
LPCTSTR pszPrinterName,
|
||
|
HWND hwnd = NULL,
|
||
|
BOOL bModal = FALSE
|
||
|
);
|
||
|
|
||
|
virtual
|
||
|
~MSingletonWin(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
bValid(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
bRegisterWindow(
|
||
|
DWORD dwType
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
bIsWindowPresent(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
private:
|
||
|
|
||
|
HANDLE _hClassPidl;
|
||
|
|
||
|
//
|
||
|
// Operator = and copy not defined.
|
||
|
//
|
||
|
MSingletonWin&
|
||
|
operator=(
|
||
|
MSingletonWin& rhs
|
||
|
);
|
||
|
|
||
|
MSingletonWin(
|
||
|
MSingletonWin& rhs
|
||
|
);
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|