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.
1428 lines
56 KiB
1428 lines
56 KiB
/*++
|
|
|
|
Copyright (c) 1996-2002 Microsoft Corp. & Ricoh Co., Ltd. All rights reserved.
|
|
|
|
FILE: RPDLUI.CPP
|
|
|
|
Abstract: Main file for OEM UI plugin module.
|
|
|
|
Functions: OEMCommonUIProp
|
|
OEMDocumentPropertySheets
|
|
|
|
Environment: Windows NT Unidrv5 driver
|
|
|
|
Revision History:
|
|
04/01/99 -Masatoshi Kubokura-
|
|
Last modified for Windows2000.
|
|
08/30/99 -Masatoshi Kubokura-
|
|
Began to modify for NT4SP6(Unidrv5.4).
|
|
09/29/99 -Masatoshi Kubokura-
|
|
Last modified for NT4SP6.
|
|
05/22/2000 -Masatoshi Kubokura-
|
|
V.1.03 for NT4
|
|
11/29/2000 -Masatoshi Kubokura-
|
|
Last modified for XP inbox.
|
|
03/01/2002 -Masatoshi Kubokura-
|
|
Include strsafe.h.
|
|
Add FileNameBufSize as arg3 at RWFileData().
|
|
Use safe_sprintfW() instead of wsprintfW().
|
|
03/29/2002 -Masatoshi Kubokura-
|
|
Eliminate "#if 0".
|
|
Use SecureZeroMemory() instead of memset(,0,)
|
|
04/03/2002 -Masatoshi Kubokura-
|
|
Use safe_strlenW() instead of lstrlen().
|
|
|
|
--*/
|
|
|
|
|
|
#include "pdev.h"
|
|
#include "resource.h"
|
|
#include "rpdlui.h"
|
|
#include <prsht.h>
|
|
#ifndef WINNT_40
|
|
#include "strsafe.h" // @Mar/01/2002
|
|
#endif // !WINNT_40
|
|
|
|
//#pragma setlocale(".932") // MSKK 98/7/15, OBSOLETE @Sep/19/98
|
|
|
|
////////////////////////////////////////////////////////
|
|
// GLOBALS
|
|
////////////////////////////////////////////////////////
|
|
HINSTANCE ghInstance = NULL;
|
|
|
|
////////////////////////////////////////////////////////
|
|
// INTERNAL MACROS and DEFINES
|
|
////////////////////////////////////////////////////////
|
|
#if DBG
|
|
//giDebugLevel = DBG_VERBOSE;
|
|
////#define giDebugLevel DBG_VERBOSE // enable VERBOSE() in each file
|
|
#endif
|
|
|
|
// @Apr/04/2002 ->
|
|
#define RES_ID_MASK 0xffff
|
|
#define is_valid_ptr(p) (~RES_ID_MASK & (UINT_PTR)(p))
|
|
// @Apr/04/2002 <-
|
|
|
|
// Resource in other DLL @Sep/24/99
|
|
WCHAR STR_UNIRESDLL[] = L"UNIRES.DLL";
|
|
WCHAR STR_RPDLRESDLL[] = L"RPDLRES.DLL";
|
|
#define UNIRES_DLL 0
|
|
#define RPDLRES_DLL 1
|
|
#define THIS_DLL 2
|
|
// ID of UNIRES.DLL (This comes from STDNAMES.GPD.)
|
|
#define IDS_UNIRES_IMAGECONTROL_DISPLAY 11112
|
|
// ID of RPDLRES.DLL (This comes from RPDLRES.RC.)
|
|
#define IDS_RPDLRES_COLLATETYPE 675 // @Sep/29/99
|
|
|
|
WCHAR REGVAL_ACTUALNAME[] = L"Model"; // @Oct/07/98
|
|
#ifndef GWMODEL // @Sep/26/2000
|
|
#ifndef WINNT_40 // @Sep/01/99
|
|
WCHAR HELPFILENAME[] = L"%s\\3\\RPDLCFG.HLP"; // add "\\3" @Oct/30/98
|
|
#else // WINNT_40
|
|
WCHAR HELPFILENAME[] = L"%s\\2\\RPDLCFG.HLP";
|
|
#endif // WINNT_40
|
|
#else // GWMODEL
|
|
#ifndef WINNT_40
|
|
WCHAR HELPFILENAME[] = L"%s\\3\\RPDLCFG2.HLP";
|
|
#else // WINNT_40
|
|
WCHAR HELPFILENAME[] = L"%s\\2\\RPDLCFG2.HLP";
|
|
#endif // WINNT_40
|
|
#endif // GWMODEL
|
|
|
|
// OBSOLETE @Sep/27/99 ->
|
|
//CHAR UNIDRV_FEATURE_DUPLEX[] = "Duplex";
|
|
//CHAR UNIDRV_DUPLEX_NONE[] = "NONE";
|
|
// @Sep/27/99 <-
|
|
|
|
// OEM items: VariableScaling(1)+Barcode(2)+TOMBO(3)+Duplex(2)
|
|
// (add TOMBO @Sep/15/98)
|
|
#define RPDL_OEM_ITEMS 8
|
|
|
|
#define ITEM_SCALING 0
|
|
#define ITEM_BAR_HEIGHT 1
|
|
#define ITEM_BAR_SUBFONT 2
|
|
#define ITEM_TOMBO_ADD 3
|
|
#define ITEM_TOMBO_ADJX 4
|
|
#define ITEM_TOMBO_ADJY 5
|
|
#define ITEM_BIND_MARGIN 6 // <-3 @Sep/15/98
|
|
#define ITEM_BIND_RIGHT 7 // <-4 @Sep/15/98
|
|
#define DMPUB_SCALING (DMPUB_USER+1+ITEM_SCALING) // 101
|
|
#define DMPUB_BAR_H (DMPUB_USER+1+ITEM_BAR_HEIGHT) // 102
|
|
#define DMPUB_BAR_SUBFONT (DMPUB_USER+1+ITEM_BAR_SUBFONT) // 103
|
|
#define DMPUB_TOMBO_ADD (DMPUB_USER+1+ITEM_TOMBO_ADD) // 104
|
|
#define DMPUB_TOMBO_ADJX (DMPUB_USER+1+ITEM_TOMBO_ADJX) // 105
|
|
#define DMPUB_TOMBO_ADJY (DMPUB_USER+1+ITEM_TOMBO_ADJY) // 106
|
|
#define DMPUB_BIND_MARGIN (DMPUB_USER+1+ITEM_BIND_MARGIN) // 107
|
|
#define DMPUB_BIND_RIGHT (DMPUB_USER+1+ITEM_BIND_RIGHT) // 108
|
|
#define LEVEL_2 2
|
|
#define SEL_YES 0 // <-YES_2STATES @Sep/29/99
|
|
#define SEL_NO 1 // <-NO_2STATES @Sep/29/99
|
|
#define SEL_STANDARD 0 // @Sep/29/99
|
|
#define SEL_DUPLEX_NONE 0 // @Sep/29/99
|
|
|
|
// max string size in resource (RPDLDLG.RC)
|
|
#define ITEM_STR_LEN128 128
|
|
#define ITEM_STR_LEN8 8
|
|
|
|
// string IDs in resource (RPDLDLG.RC)
|
|
WORD wItemStrID[RPDL_OEM_ITEMS] = {
|
|
IDS_RPDL_SCALING,
|
|
IDS_RPDL_BAR_HEIGHT,
|
|
IDS_RPDL_BAR_SUBFONT,
|
|
IDS_RPDL_TOMBO_ADD,
|
|
IDS_RPDL_TOMBO_ADJX,
|
|
IDS_RPDL_TOMBO_ADJY,
|
|
IDS_RPDL_BIND_MARGIN,
|
|
IDS_RPDL_BIND_RIGHT
|
|
};
|
|
|
|
|
|
OPTPARAM MinMaxRangeScalingOP[] = {
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
__TEXT("%"), // pData (postfix)
|
|
IDI_CPSUI_GENERIC_OPTION, // IconID
|
|
0 // lParam
|
|
},
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
NULL, // pData (help line)
|
|
(DWORD)VAR_SCALING_MIN, // IconID (low range)
|
|
VAR_SCALING_MAX // lParam (high range)
|
|
}
|
|
};
|
|
|
|
OPTTYPE TVOTUDArrowScalingOT = {
|
|
sizeof(OPTTYPE), // cbSize
|
|
TVOT_UDARROW, // Type
|
|
0, // Flags OPTTF_xxxx
|
|
2, // Count
|
|
0, // BegCtrlID
|
|
MinMaxRangeScalingOP, // pOptParam
|
|
0 // Style, OTS_xxxx
|
|
};
|
|
|
|
OPTPARAM MinMaxRangeBarHeightOP[] = {
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
__TEXT("mm"), // pData (postfix)
|
|
IDI_CPSUI_GENERIC_OPTION, // IconID
|
|
0 // lParam
|
|
},
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
NULL, // pData (help line)
|
|
(DWORD)BAR_H_MIN, // IconID (low range)
|
|
BAR_H_MAX // lParam (high range)
|
|
}
|
|
};
|
|
|
|
OPTTYPE TVOTUDArrowBarHeightOT = {
|
|
sizeof(OPTTYPE), // cbSize
|
|
TVOT_UDARROW, // Type
|
|
0, // Flags OPTTF_xxxx
|
|
2, // Count
|
|
0, // BegCtrlID
|
|
MinMaxRangeBarHeightOP, // pOptParam
|
|
0 // Style, OTS_xxxx
|
|
};
|
|
|
|
OPTPARAM MinMaxRangeBindMarginOP[] = {
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
__TEXT("mm"), // pData (postfix)
|
|
IDI_CPSUI_GENERIC_OPTION, // IconID
|
|
0 // lParam
|
|
},
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
NULL, // pData (help line)
|
|
(DWORD)BIND_MARGIN_MIN, // IconID (low range)
|
|
BIND_MARGIN_MAX // lParam (high range)
|
|
}
|
|
};
|
|
|
|
OPTTYPE TVOTUDArrowBindMarginOT = {
|
|
sizeof(OPTTYPE), // cbSize
|
|
TVOT_UDARROW, // Type
|
|
0, // Flags OPTTF_xxxx
|
|
2, // Count
|
|
0, // BegCtrlID
|
|
MinMaxRangeBindMarginOP, // pOptParam
|
|
0 // Style, OTS_xxxx
|
|
};
|
|
|
|
// @Sep/15/98 ->
|
|
OPTPARAM MinMaxRangeTOMBO_AdjXOP[] = {
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
__TEXT("x 0.1mm"), // pData (postfix)
|
|
IDI_CPSUI_GENERIC_OPTION, // IconID
|
|
0 // lParam
|
|
},
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
NULL, // pData (help line)
|
|
(DWORD)TOMBO_ADJ_MIN, // IconID (low range)
|
|
TOMBO_ADJ_MAX // lParam (high range)
|
|
}
|
|
};
|
|
|
|
OPTTYPE TVOTUDArrowTOMBO_AdjXOT = {
|
|
sizeof(OPTTYPE), // cbSize
|
|
TVOT_UDARROW, // Type
|
|
0, // Flags OPTTF_xxxx
|
|
2, // Count
|
|
0, // BegCtrlID
|
|
MinMaxRangeTOMBO_AdjXOP, // pOptParam
|
|
0 // Style, OTS_xxxx
|
|
};
|
|
|
|
OPTPARAM MinMaxRangeTOMBO_AdjYOP[] = {
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
__TEXT("x 0.1mm"), // pData (postfix)
|
|
IDI_CPSUI_GENERIC_OPTION, // IconID
|
|
0 // lParam
|
|
},
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
NULL, // pData (help line)
|
|
(DWORD)TOMBO_ADJ_MIN, // IconID (low range)
|
|
TOMBO_ADJ_MAX // lParam (high range)
|
|
}
|
|
};
|
|
|
|
OPTTYPE TVOTUDArrowTOMBO_AdjYOT = {
|
|
sizeof(OPTTYPE), // cbSize
|
|
TVOT_UDARROW, // Type
|
|
0, // Flags OPTTF_xxxx
|
|
2, // Count
|
|
0, // BegCtrlID
|
|
MinMaxRangeTOMBO_AdjYOP, // pOptParam
|
|
0 // Style, OTS_xxxx
|
|
};
|
|
// @Sep/15/98 <-
|
|
|
|
OPTPARAM YesNoOP[] = {
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
NULL, // pData (<-IDS_CPSUI_YES MSKK Sep/11/98)
|
|
// @Sep/06/99 ->
|
|
// IDI_CPSUI_EMPTY, // IconID (<-IDI_CPSUI_YES @Jul/30/98)
|
|
IDI_CPSUI_GENERIC_OPTION, // IconID
|
|
// @Sep/06/99 <-
|
|
1 // lParam
|
|
},
|
|
{
|
|
sizeof(OPTPARAM), // cbSize
|
|
0, // OPTPF_xxx
|
|
0, // style
|
|
NULL, // pData (<-IDS_CPSUI_NO MSKK Sep/11/98)
|
|
// @Sep/06/99 ->
|
|
// IDI_CPSUI_EMPTY, // IconID (<-IDI_CPSUI_NO @Jul/30/98)
|
|
IDI_CPSUI_GENERIC_OPTION, // IconID
|
|
// @Sep/06/99 <-
|
|
0 // lParam
|
|
}
|
|
};
|
|
|
|
OPTTYPE YesNoOT = {
|
|
sizeof(OPTTYPE), // cbSize
|
|
TVOT_2STATES, // Type
|
|
0, // Flags OPTTF_xxxx
|
|
2, // Count
|
|
0, // BegCtrlID
|
|
YesNoOP, // pOptParam
|
|
0 // Style, OTS_xxxx
|
|
};
|
|
|
|
|
|
OPTITEM TVOEMUIOptItems[] = {
|
|
{ // Variable Scaling
|
|
sizeof(OPTITEM), // cbSize(size of this structure)
|
|
LEVEL_2, // Level(level in the tree view)
|
|
0, // DlgPageIdx(Index to the pDlgPage)
|
|
OPTIF_CALLBACK|OPTIF_HAS_POIEXT, // add OPTIF_HAS_POIEXT @May/20/98
|
|
0, // UserData(caller's own data)
|
|
__TEXT(""), // pName(name of the item)
|
|
VAR_SCALING_DEFAULT, // Sel(current selection)
|
|
NULL, // pExtChkBox/pExtPush
|
|
&TVOTUDArrowScalingOT, // pOptType
|
|
50, // HelpIndex(Help file index) @May/20/98
|
|
DMPUB_SCALING // DMPubID(Devmode public filed ID)
|
|
},
|
|
{ // Barcode Height
|
|
sizeof(OPTITEM), // cbSize(size of this structure)
|
|
LEVEL_2, // Level(level in the tree view)
|
|
0, // DlgPageIdx(Index to the pDlgPage)
|
|
OPTIF_CALLBACK|OPTIF_HAS_POIEXT, // add OPTIF_HAS_POIEXT
|
|
0, // UserData(caller's own data)
|
|
__TEXT(""), // pName(name of the item)
|
|
BAR_H_DEFAULT, // Sel(current selection)
|
|
NULL, // pExtChkBox/pExtPush
|
|
&TVOTUDArrowBarHeightOT, // pOptType
|
|
51, // HelpIndex(Help file index)
|
|
DMPUB_BAR_H // DMPubID(Devmode public filed ID)
|
|
},
|
|
{ // Print Barcode with Readable Characters
|
|
sizeof(OPTITEM), // cbSize(size of this structure)
|
|
LEVEL_2, // Level(level in the tree view)
|
|
0, // DlgPageIdx(Index to the pDlgPage)
|
|
OPTIF_CALLBACK|OPTIF_HAS_POIEXT, // add OPTIF_HAS_POIEXT
|
|
0, // UserData(caller's own data)
|
|
__TEXT(""), // pName(name of the item)
|
|
SEL_YES, // Sel(current selection)
|
|
NULL, // pExtChkBox/pExtPush
|
|
&YesNoOT, // pOptType
|
|
52, // HelpIndex(Help file index)
|
|
DMPUB_BAR_SUBFONT // DMPubID(Devmode public filed ID)
|
|
},
|
|
// @Sep/15/98 ->
|
|
{ // Print Crops
|
|
sizeof(OPTITEM), // cbSize(size of this structure)
|
|
LEVEL_2, // Level(level in the tree view)
|
|
0, // DlgPageIdx(Index to the pDlgPage)
|
|
OPTIF_CALLBACK|OPTIF_HAS_POIEXT,
|
|
0, // UserData(caller's own data)
|
|
__TEXT(""), // pName(name of the item)
|
|
SEL_NO, // Sel(current selection)
|
|
NULL, // pExtChkBox/pExtPush
|
|
&YesNoOT, // pOptType
|
|
55, // HelpIndex(Help file index)
|
|
DMPUB_TOMBO_ADD // DMPubID(Devmode public filed ID)
|
|
},
|
|
{ // Adjust Horizontal Distance of Crops
|
|
sizeof(OPTITEM), // cbSize(size of this structure)
|
|
LEVEL_2, // Level(level in the tree view)
|
|
0, // DlgPageIdx(Index to the pDlgPage)
|
|
OPTIF_CALLBACK|OPTIF_HAS_POIEXT,
|
|
0, // UserData(caller's own data)
|
|
__TEXT(""), // pName(name of the item)
|
|
DEFAULT_0, // Sel(current selection)
|
|
NULL, // pExtChkBox/pExtPush
|
|
&TVOTUDArrowTOMBO_AdjXOT, // pOptType
|
|
56, // HelpIndex(Help file index)
|
|
DMPUB_TOMBO_ADJX // DMPubID(Devmode public filed ID)
|
|
},
|
|
{ // Adjust Vertical Distance of Crops
|
|
sizeof(OPTITEM), // cbSize(size of this structure)
|
|
LEVEL_2, // Level(level in the tree view)
|
|
0, // DlgPageIdx(Index to the pDlgPage)
|
|
OPTIF_CALLBACK|OPTIF_HAS_POIEXT,
|
|
0, // UserData(caller's own data)
|
|
__TEXT(""), // pName(name of the item)
|
|
DEFAULT_0, // Sel(current selection)
|
|
NULL, // pExtChkBox/pExtPush
|
|
&TVOTUDArrowTOMBO_AdjYOT, // pOptType
|
|
57, // HelpIndex(Help file index)
|
|
DMPUB_TOMBO_ADJY // DMPubID(Devmode public filed ID)
|
|
},
|
|
// @Sep/15/98 <-
|
|
{ // Binding Margin
|
|
sizeof(OPTITEM), // cbSize(size of this structure)
|
|
LEVEL_2, // Level(level in the tree view)
|
|
0, // DlgPageIdx(Index to the pDlgPage)
|
|
OPTIF_CALLBACK|OPTIF_HAS_POIEXT, // add OPTIF_HAS_POIEXT
|
|
0, // UserData(caller's own data)
|
|
__TEXT(""), // pName(name of the item)
|
|
DEFAULT_0, // Sel(current selection) (0->DEFAULT_0 @Sep/15/98)
|
|
NULL, // pExtChkBox/pExtPush
|
|
&TVOTUDArrowBindMarginOT, // pOptType
|
|
53, // HelpIndex(Help file index)
|
|
DMPUB_BIND_MARGIN // DMPubID(Devmode public filed ID)
|
|
},
|
|
{ // Bind Right Side if Possible
|
|
sizeof(OPTITEM), // cbSize(size of this structure)
|
|
LEVEL_2, // Level(level in the tree view)
|
|
0, // DlgPageIdx(Index to the pDlgPage)
|
|
OPTIF_CALLBACK|OPTIF_HAS_POIEXT, // add OPTIF_HAS_POIEXT
|
|
0, // UserData(caller's own data)
|
|
__TEXT(""), // pName(name of the item)
|
|
SEL_NO, // Sel(current selection)
|
|
NULL, // pExtChkBox/pExtPush
|
|
&YesNoOT, // pOptType
|
|
54, // HelpIndex(Help file index)
|
|
DMPUB_BIND_RIGHT // DMPubID(Devmode public filed ID)
|
|
}
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////////////
|
|
// EXTERNAL
|
|
////////////////////////////////////////////////////////
|
|
extern "C" {
|
|
#ifndef GWMODEL
|
|
extern INT_PTR CALLBACK FaxPageProc(HWND hDlg, UINT uiMsg, WPARAM wParam, LPARAM lParam);
|
|
#endif // !GWMODEL
|
|
#ifdef JOBLOGSUPPORT_DLG
|
|
extern INT_PTR CALLBACK JobPageProc(HWND hDlg, UINT uiMsg, WPARAM wParam, LPARAM lParam);
|
|
#endif // JOBLOGSUPPORT_DLG
|
|
// @Mar/01/2002 ->
|
|
//extern BOOL RWFileData(PFILEDATA pFileData, LPWSTR pwszFileName, LONG type);
|
|
extern BOOL RWFileData(PFILEDATA pFileData, LPWSTR pwszFileName, LONG FileNameBufSize, LONG type);
|
|
extern INT safe_sprintfW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, ...);
|
|
// @Mar/01/2002 <-
|
|
}
|
|
|
|
////////////////////////////////////////////////////////
|
|
// INTERNAL PROTOTYPES
|
|
////////////////////////////////////////////////////////
|
|
LONG APIENTRY DOCPROP_CallBack(PCPSUICBPARAM pCallbackParam, POEMCUIPPARAM pOEMUIParam);
|
|
#ifdef DISKLESSMODEL
|
|
LONG APIENTRY PRNPROP_CallBack(PCPSUICBPARAM pCallbackParam, POEMCUIPPARAM pOEMUIParam);
|
|
#endif // DISKLESSMODEL
|
|
INT SearchItemByName(POPTITEM pOptItem, WORD cOptItem, UINT uiResDLL, UINT uiResID);
|
|
INT SearchItemByID(POPTITEM pOptItem, WORD cOptItem, BYTE DMPubID);
|
|
BOOL IsValidDuplex(POEMCUIPPARAM pOEMUIParam);
|
|
|
|
// Need to export these functions as c declarations.
|
|
extern "C" {
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Function: safe_strlenW
|
|
//////////////////////////////////////////////////////////////////////////
|
|
INT safe_strlenW(wchar_t* psz, size_t cchMax)
|
|
{
|
|
#ifndef WINNT_40
|
|
HRESULT hr;
|
|
size_t cch = 0;
|
|
|
|
hr = StringCchLengthW(psz, cchMax, &cch);
|
|
VERBOSE(("** safe_strlenW: size(lstrlen)=%d **\n", lstrlen(psz)));
|
|
VERBOSE(("** safe_strlenW: size(StringCchLength)=%d **\n", cch));
|
|
if (SUCCEEDED(hr))
|
|
return cch;
|
|
else
|
|
return 0;
|
|
#else // WINNT_40
|
|
return lstrlenW(psz);
|
|
#endif // WINNT_40
|
|
} //*** safe_strlenW
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Function: DllMain
|
|
//
|
|
// Description: Dll entry point for initialization..
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
BOOL WINAPI DllMain(HINSTANCE hInst, WORD wReason, LPVOID lpReserved)
|
|
{
|
|
VERBOSE((DLLTEXT("** enter DllMain **\n")));
|
|
switch(wReason)
|
|
{
|
|
case DLL_PROCESS_ATTACH:
|
|
VERBOSE((DLLTEXT("** Process attach. **\n")));
|
|
|
|
// Save DLL instance for use later.
|
|
ghInstance = hInst;
|
|
break;
|
|
|
|
case DLL_THREAD_ATTACH:
|
|
VERBOSE((DLLTEXT("Thread attach.\n")));
|
|
break;
|
|
|
|
case DLL_PROCESS_DETACH:
|
|
VERBOSE((DLLTEXT("Process detach.\n")));
|
|
break;
|
|
|
|
case DLL_THREAD_DETACH:
|
|
VERBOSE((DLLTEXT("Thread detach.\n")));
|
|
break;
|
|
}
|
|
|
|
return TRUE;
|
|
} //*** DllMain
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Function: OEMCommonUIProp
|
|
//////////////////////////////////////////////////////////////////////////
|
|
BOOL APIENTRY OEMCommonUIProp(DWORD dwMode, POEMCUIPPARAM pOEMUIParam)
|
|
{
|
|
POEMUD_EXTRADATA pOEMExtra = MINIPRIVATE_DM(pOEMUIParam); // @Oct/06/98
|
|
|
|
#if DBG
|
|
LPCSTR OEMCommonUIProp_Mode[] = {
|
|
"Bad Index",
|
|
"OEMCUIP_DOCPROP",
|
|
"OEMCUIP_PRNPROP",
|
|
};
|
|
|
|
giDebugLevel = DBG_VERBOSE;
|
|
VERBOSE((DLLTEXT("OEMCommonUI(%s) entry. cOEMOptItems=%d\n"),
|
|
OEMCommonUIProp_Mode[dwMode], pOEMUIParam->cOEMOptItems));
|
|
#endif // DBG
|
|
|
|
// Sep/26/2000 ->
|
|
// // if called from DrvDevicePropertySheets, exit @Dec/26/97
|
|
// if (OEMCUIP_PRNPROP == dwMode)
|
|
// {
|
|
// pOEMUIParam->cOEMOptItems = 0;
|
|
// return TRUE;
|
|
// }
|
|
// // Validate parameters.
|
|
// if((OEMCUIP_DOCPROP != dwMode) || !IsValidOEMUIParam(dwMode, pOEMUIParam))
|
|
// {
|
|
//#if DBG
|
|
// ERR((DLLTEXT("OEMCommonUI() ERROR_INVALID_PARAMETER.\n"
|
|
// "\tdwMode = %d, pOEMUIParam = %#lx.\n"),
|
|
// dwMode, pOEMUIParam));
|
|
// DumpOEMUIParam(dwMode, pOEMUIParam);
|
|
//#endif // DBG
|
|
// // Return invalid parameter error.
|
|
// SetLastError(ERROR_INVALID_PARAMETER);
|
|
// return FALSE;
|
|
// }
|
|
// Sep/26/2000 <-
|
|
|
|
if(NULL == pOEMUIParam->pOEMOptItems) // The first call
|
|
{
|
|
DWORD dwSize;
|
|
WCHAR wchNameBuf[64];
|
|
|
|
VERBOSE((DLLTEXT(" The 1st call.\n")));
|
|
// Sep/22/2000 ->
|
|
if (OEMCUIP_PRNPROP == dwMode)
|
|
{
|
|
#ifndef DISKLESSMODEL
|
|
pOEMUIParam->cOEMOptItems = 0;
|
|
#else // DISKLESSMODEL
|
|
pOEMUIParam->cOEMOptItems = 1; // dummy item
|
|
#endif // DISKLESSMODEL
|
|
return TRUE;
|
|
}
|
|
// Sep/22/2000 <-
|
|
|
|
// Return number of requested tree view items to add.
|
|
pOEMUIParam->cOEMOptItems = RPDL_OEM_ITEMS;
|
|
|
|
// Clear flag of printer capability.
|
|
BITCLR_UPPER_FLAG(pOEMExtra->fUiOption);
|
|
|
|
// Get actual printer name (completely modify @Oct/07/98)
|
|
if (ERROR_SUCCESS == GetPrinterDataW(pOEMUIParam->hPrinter, REGVAL_ACTUALNAME,
|
|
NULL, (LPBYTE)wchNameBuf, 64, &dwSize))
|
|
{
|
|
WORD wCnt;
|
|
|
|
// Check printer capability from actual printer name.
|
|
for (wCnt = 0; UniqueModel[wCnt].fCapability ; wCnt++)
|
|
{
|
|
if (!lstrcmpW(wchNameBuf, UniqueModel[wCnt].Name))
|
|
{
|
|
VERBOSE((DLLTEXT("** UNIQUE MODEL:%ls **\n"), wchNameBuf));
|
|
pOEMExtra->fUiOption |= UniqueModel[wCnt].fCapability;
|
|
break;
|
|
}
|
|
}
|
|
#ifdef GWMODEL // @Sep/21/2000
|
|
pOEMExtra->fUiOption |= BIT(OPT_VARIABLE_SCALING);
|
|
#endif // GWMODEL
|
|
}
|
|
}
|
|
else // The second call
|
|
{
|
|
POPTITEM pItemDst, pItemSrc;
|
|
WORD wCount;
|
|
WCHAR DrvDirName[MAX_PATH]; // MAX_PATH=260
|
|
DWORD dwSize;
|
|
LPTSTR pHelpFile;
|
|
POPTPARAM lpYNParam ; // MSKK Sep/11/98
|
|
POPTPARAM lpYesParam, lpNoParam ; // @Sep/19/98
|
|
// @Sep/24/99 ->
|
|
POPTITEM pOptItem;
|
|
INT iNum;
|
|
// @Sep/24/99 <-
|
|
|
|
VERBOSE((DLLTEXT(" The 2nd call.\n")));
|
|
// Sep/26/2000 ->
|
|
if (0 == pOEMUIParam->cOEMOptItems)
|
|
return TRUE;
|
|
// Sep/26/2000 <-
|
|
|
|
// Sep/22/2000 ->
|
|
// fill out data for dummy item to call PRNPROP_CallBack
|
|
if (OEMCUIP_PRNPROP == dwMode)
|
|
{
|
|
#ifdef DISKLESSMODEL
|
|
POPTITEM pOptItem = pOEMUIParam->pOEMOptItems;
|
|
pOptItem->cbSize = sizeof(OPTITEM);
|
|
pOptItem->Level = 2; // Level 2
|
|
pOptItem->pName = NULL;
|
|
pOptItem->pOptType = NULL;
|
|
pOptItem->DMPubID = DMPUB_NONE;
|
|
pOptItem->Flags = OPTIF_HIDE | OPTIF_CALLBACK; // invisible and with callback
|
|
pOEMUIParam->OEMCUIPCallback = PRNPROP_CallBack;
|
|
#endif // DISKLESSMODEL
|
|
return TRUE;
|
|
}
|
|
// Sep/22/2000 <-
|
|
|
|
// Init OEMOptItmes.
|
|
// Use SecureZeroMemory @Mar/29/2002 ->
|
|
#if defined(WINNT_40) || defined(RICOH_RELEASE)
|
|
memset(pOEMUIParam->pOEMOptItems, 0, sizeof(OPTITEM) * pOEMUIParam->cOEMOptItems);
|
|
#else
|
|
SecureZeroMemory(pOEMUIParam->pOEMOptItems, sizeof(OPTITEM) * pOEMUIParam->cOEMOptItems);
|
|
#endif
|
|
// Mar/29/2002 <-
|
|
|
|
// Get printerdriver directory where help file is.
|
|
pHelpFile = NULL;
|
|
dwSize = sizeof(DrvDirName);
|
|
if (GetPrinterDriverDirectoryW(NULL, NULL, 1, (PBYTE)DrvDirName, dwSize, &dwSize))
|
|
{
|
|
dwSize += sizeof(HELPFILENAME);
|
|
pHelpFile = (LPTSTR)HeapAlloc(pOEMUIParam->hOEMHeap, HEAP_ZERO_MEMORY, dwSize);
|
|
if (pHelpFile) { // 392060: PREFIX
|
|
safe_sprintfW(pHelpFile, dwSize / sizeof(WCHAR), HELPFILENAME, DrvDirName);
|
|
VERBOSE((DLLTEXT("** PrintDriverDir:size=%d, %ls **\n"), dwSize, pHelpFile));
|
|
}
|
|
}
|
|
|
|
// Fill out tree view items.
|
|
// wCount 0:VariableScaling, 1,2:Barcode, 3-5:TOMBO 6,7:Duplex
|
|
for (wCount = 0; wCount < pOEMUIParam->cOEMOptItems; wCount++)
|
|
{
|
|
pItemDst = &(pOEMUIParam->pOEMOptItems[wCount]);
|
|
pItemSrc = &(TVOEMUIOptItems[wCount]);
|
|
pItemDst->cbSize = pItemSrc->cbSize;
|
|
pItemDst->Level = pItemSrc->Level;
|
|
pItemDst->Flags = pItemSrc->Flags;
|
|
pItemDst->pName = (LPTSTR)HeapAlloc(pOEMUIParam->hOEMHeap,
|
|
HEAP_ZERO_MEMORY, ITEM_STR_LEN128);
|
|
LoadString(ghInstance, wItemStrID[wCount], pItemDst->pName, ITEM_STR_LEN128);
|
|
pItemDst->pOptType = pItemSrc->pOptType;
|
|
pItemDst->DMPubID = pItemSrc->DMPubID;
|
|
|
|
if (pHelpFile)
|
|
{
|
|
// enable help
|
|
pItemDst->HelpIndex = pItemSrc->HelpIndex;
|
|
pItemDst->pOIExt = (POIEXT)HeapAlloc(pOEMUIParam->hOEMHeap, HEAP_ZERO_MEMORY,
|
|
sizeof(OIEXT));
|
|
if (pItemDst->pOIExt) { // 392061: PREFIX
|
|
pItemDst->pOIExt->cbSize = sizeof(OIEXT);
|
|
|
|
// set help file name
|
|
pItemDst->pOIExt->pHelpFile = pHelpFile;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Set strings "Yes"/"No" at item options (MSKK Sep/11/98, LoadString @Sep/19/98)
|
|
// at ITEM_BAR_SUBFONT
|
|
lpYesParam = pOEMUIParam->pOEMOptItems[ITEM_BAR_SUBFONT].pOptType->pOptParam;
|
|
lpYesParam->pData = (LPTSTR)HeapAlloc(pOEMUIParam->hOEMHeap,
|
|
HEAP_ZERO_MEMORY, ITEM_STR_LEN8);
|
|
LoadString(ghInstance, IDS_RPDL_YES, lpYesParam->pData, ITEM_STR_LEN8);
|
|
lpNoParam = lpYesParam + 1;
|
|
lpNoParam->pData = (LPTSTR)HeapAlloc(pOEMUIParam->hOEMHeap,
|
|
HEAP_ZERO_MEMORY, ITEM_STR_LEN8);
|
|
LoadString(ghInstance, IDS_RPDL_NO, lpNoParam->pData, ITEM_STR_LEN8);
|
|
|
|
// at ITEM_TOMBO_ADD @Sep/15/98
|
|
lpYNParam = pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADD].pOptType->pOptParam;
|
|
lpYNParam->pData = lpYesParam->pData;
|
|
(lpYNParam+1)->pData = lpNoParam->pData;
|
|
|
|
// at ITEM_BIND_RIGHT
|
|
lpYNParam = pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].pOptType->pOptParam;
|
|
lpYNParam->pData = lpYesParam->pData;
|
|
(lpYNParam+1)->pData = lpNoParam->pData;
|
|
|
|
|
|
// Initialize options
|
|
if (BITTEST32(pOEMExtra->fUiOption, OPT_VARIABLE_SCALING)) // @Apr/20/98
|
|
pOEMUIParam->pOEMOptItems[ITEM_SCALING].Sel = (LONG)pOEMExtra->UiScale;
|
|
else
|
|
pOEMUIParam->pOEMOptItems[ITEM_SCALING].Flags |= OPTIF_HIDE;
|
|
|
|
// @Sep/24/99 ->
|
|
// If ImageControl isn't set to "Standard", disable Scaling.
|
|
iNum = SearchItemByName((pOptItem = pOEMUIParam->pDrvOptItems),
|
|
(WORD)pOEMUIParam->cDrvOptItems,
|
|
UNIRES_DLL, IDS_UNIRES_IMAGECONTROL_DISPLAY);
|
|
if (0 <= iNum && SEL_STANDARD != (pOptItem+iNum)->Sel)
|
|
pOEMUIParam->pOEMOptItems[ITEM_SCALING].Flags |= OPTIF_DISABLED;
|
|
// @Sep/24/99 <-
|
|
|
|
pOEMUIParam->pOEMOptItems[ITEM_BAR_HEIGHT].Sel = (LONG)pOEMExtra->UiBarHeight;
|
|
if (BITTEST32(pOEMExtra->fUiOption, DISABLE_BAR_SUBFONT))
|
|
pOEMUIParam->pOEMOptItems[ITEM_BAR_SUBFONT].Sel = SEL_NO;
|
|
else
|
|
pOEMUIParam->pOEMOptItems[ITEM_BAR_SUBFONT].Sel = SEL_YES;
|
|
|
|
// @Sep/16/98 ->
|
|
if (BITTEST32(pOEMExtra->fUiOption, ENABLE_TOMBO))
|
|
{
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADD].Sel = SEL_YES;
|
|
}
|
|
else
|
|
{
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADD].Sel = SEL_NO;
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJX].Flags |= OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJY].Flags |= OPTIF_DISABLED;
|
|
}
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJX].Sel = (LONG)pOEMExtra->nUiTomboAdjX;
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJY].Sel = (LONG)pOEMExtra->nUiTomboAdjY;
|
|
// @Sep/16/98 <-
|
|
|
|
if (BITTEST32(pOEMExtra->fUiOption, OPT_NODUPLEX)) // @Apr/20/98
|
|
{
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_MARGIN].Flags |= OPTIF_HIDE;
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Flags |= OPTIF_HIDE;
|
|
}
|
|
else
|
|
{
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_MARGIN].Sel = (LONG)pOEMExtra->UiBindMargin;
|
|
|
|
if (BITTEST32(pOEMExtra->fUiOption, ENABLE_BIND_RIGHT))
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Sel = SEL_YES;
|
|
else
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Sel = SEL_NO;
|
|
|
|
if (!IsValidDuplex(pOEMUIParam))
|
|
{
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_MARGIN].Flags |= OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Flags |= OPTIF_DISABLED;
|
|
}
|
|
}
|
|
|
|
pOEMUIParam->OEMCUIPCallback = DOCPROP_CallBack;
|
|
}
|
|
|
|
return TRUE;
|
|
} //*** OEMCommonUIProp
|
|
|
|
} // End of extern "C"
|
|
|
|
|
|
LONG APIENTRY DOCPROP_CallBack(PCPSUICBPARAM pCallbackParam, POEMCUIPPARAM pOEMUIParam)
|
|
{
|
|
LONG Action = CPSUICB_ACTION_NONE;
|
|
// @Sep/24/99 ->
|
|
POPTITEM pOptItem;
|
|
INT iNum;
|
|
DWORD dwPrevFlags;
|
|
// @Sep/24/99 <-
|
|
|
|
#if DBG
|
|
VERBOSE((DLLTEXT("DOCPROP_CallBack() entry.\n")));
|
|
|
|
switch (pCallbackParam->Reason)
|
|
{
|
|
case CPSUICB_REASON_SEL_CHANGED:
|
|
VERBOSE((DLLTEXT(" CPSUICB_REASON_SEL_CHANGED\n"))); break;
|
|
case CPSUICB_REASON_PUSHBUTTON:
|
|
VERBOSE((DLLTEXT(" CPSUICB_REASON_PUSHBUTTON\n"))); break;
|
|
case CPSUICB_REASON_DLGPROC:
|
|
VERBOSE((DLLTEXT(" CPSUICB_REASON_DLGPROC\n"))); break;
|
|
case CPSUICB_REASON_UNDO_CHANGES:
|
|
VERBOSE((DLLTEXT(" CPSUICB_REASON_UNDO_CHANGES\n"))); break;
|
|
case CPSUICB_REASON_EXTPUSH:
|
|
VERBOSE((DLLTEXT(" CPSUICB_REASON_EXTPUSH\n"))); break;
|
|
case CPSUICB_REASON_APPLYNOW:
|
|
VERBOSE((DLLTEXT(" CPSUICB_REASON_APPLYNOW\n"))); break;
|
|
case CPSUICB_REASON_OPTITEM_SETFOCUS:
|
|
VERBOSE((DLLTEXT(" CPSUICB_REASON_OPTITEM_SETFOCUS\n"))); break;
|
|
case CPSUICB_REASON_ITEMS_REVERTED:
|
|
VERBOSE((DLLTEXT(" CPSUICB_REASON_ITEMS_REVERTED\n"))); break;
|
|
case CPSUICB_REASON_ABOUT:
|
|
VERBOSE((DLLTEXT(" CPSUICB_REASON_ABOUT\n"))); break;
|
|
}
|
|
VERBOSE((DLLTEXT(" DMPubID=%d, Sel=%d, Flags=%x\n"),
|
|
pCallbackParam->pCurItem->DMPubID,
|
|
pCallbackParam->pCurItem->Sel,
|
|
pCallbackParam->pCurItem->Flags));
|
|
#endif // DBG
|
|
|
|
switch (pCallbackParam->Reason)
|
|
{
|
|
case CPSUICB_REASON_OPTITEM_SETFOCUS:
|
|
// @May/22/2000 ->
|
|
#ifdef WINNT_40
|
|
// If collate check box exists (i.e. printer collate is available),
|
|
// set dmCollate.
|
|
|
|
// Search Copies&Collate item
|
|
if ((iNum = SearchItemByID((pOptItem = pOEMUIParam->pDrvOptItems),
|
|
(WORD)pOEMUIParam->cDrvOptItems,
|
|
DMPUB_COPIES_COLLATE)) >= 0)
|
|
{
|
|
if ((pOptItem+iNum)->pExtChkBox && pOEMUIParam->pPublicDM)
|
|
{
|
|
pOEMUIParam->pPublicDM->dmCollate = DMCOLLATE_TRUE;
|
|
pOEMUIParam->pPublicDM->dmFields |= DM_COLLATE;
|
|
}
|
|
}
|
|
#endif // WINNT_40
|
|
// @May/22/2000 <-
|
|
break;
|
|
|
|
case CPSUICB_REASON_SEL_CHANGED:
|
|
// if duplex setting is changed
|
|
if (DMPUB_DUPLEX == pCallbackParam->pCurItem->DMPubID)
|
|
{
|
|
// if duplex is disabled
|
|
if (!IsValidDuplex(pOEMUIParam))
|
|
{
|
|
// disable ITEM_BIND_xxx.
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_MARGIN].Flags |= OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Flags |= OPTIF_DISABLED;
|
|
}
|
|
else
|
|
{
|
|
// enable ITEM_BIND_xxx.
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_MARGIN].Flags &= ~OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Flags &= ~OPTIF_DISABLED;
|
|
}
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_MARGIN].Flags |= OPTIF_CHANGED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Flags |= OPTIF_CHANGED;
|
|
Action = CPSUICB_ACTION_OPTIF_CHANGED;
|
|
// OBSOLETE @Sep/24/99 ->
|
|
// break; // @Sep/16/98
|
|
// @Sep/24/99 <-
|
|
}
|
|
// @Sep/16/98 ->
|
|
// if TOMBO_ADD setting is changed
|
|
if (DMPUB_TOMBO_ADD == pCallbackParam->pCurItem->DMPubID)
|
|
{
|
|
// if TOMBO is enabled
|
|
if (SEL_YES == pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADD].Sel)
|
|
{
|
|
// enable ITEM_TOMBO_ADJX/Y.
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJX].Flags &= ~OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJY].Flags &= ~OPTIF_DISABLED;
|
|
}
|
|
else
|
|
{
|
|
// disable ITEM_TOMBO_ADJX/Y.
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJX].Flags |= OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJY].Flags |= OPTIF_DISABLED;
|
|
}
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJX].Flags |= OPTIF_CHANGED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJY].Flags |= OPTIF_CHANGED;
|
|
Action = CPSUICB_ACTION_OPTIF_CHANGED;
|
|
// OBSOLETE @Sep/24/99 ->
|
|
// break;
|
|
// @Sep/24/99 <-
|
|
}
|
|
// @Sep/16/98 <-
|
|
// @Sep/24/99 ->
|
|
// If ImageControl isn't set to "Standard", disable Scaling.
|
|
dwPrevFlags = pOEMUIParam->pOEMOptItems[ITEM_SCALING].Flags;
|
|
iNum = SearchItemByName((pOptItem = pOEMUIParam->pDrvOptItems),
|
|
(WORD)pOEMUIParam->cDrvOptItems,
|
|
UNIRES_DLL, IDS_UNIRES_IMAGECONTROL_DISPLAY);
|
|
if (0 <= iNum && SEL_STANDARD != (pOptItem+iNum)->Sel)
|
|
pOEMUIParam->pOEMOptItems[ITEM_SCALING].Flags |= OPTIF_DISABLED;
|
|
else
|
|
pOEMUIParam->pOEMOptItems[ITEM_SCALING].Flags &= ~OPTIF_DISABLED;
|
|
|
|
if (pOEMUIParam->pOEMOptItems[ITEM_SCALING].Flags != dwPrevFlags)
|
|
{
|
|
pOEMUIParam->pOEMOptItems[ITEM_SCALING].Flags |= OPTIF_CHANGED;
|
|
Action = CPSUICB_ACTION_OPTIF_CHANGED;
|
|
}
|
|
// @Sep/24/99 <-
|
|
break;
|
|
|
|
case CPSUICB_REASON_APPLYNOW:
|
|
{
|
|
POEMUD_EXTRADATA pOEMExtra = MINIPRIVATE_DM(pOEMUIParam); // @Oct/06/98
|
|
|
|
if (BITTEST32(pOEMExtra->fUiOption, OPT_VARIABLE_SCALING))
|
|
pOEMExtra->UiScale = (WORD)pOEMUIParam->pOEMOptItems[ITEM_SCALING].Sel;
|
|
else
|
|
pOEMExtra->UiScale = VAR_SCALING_DEFAULT;
|
|
|
|
pOEMExtra->UiBarHeight = (WORD)pOEMUIParam->pOEMOptItems[ITEM_BAR_HEIGHT].Sel;
|
|
|
|
if (SEL_YES == pOEMUIParam->pOEMOptItems[ITEM_BAR_SUBFONT].Sel)
|
|
BITCLR32(pOEMExtra->fUiOption, DISABLE_BAR_SUBFONT);
|
|
else
|
|
BITSET32(pOEMExtra->fUiOption, DISABLE_BAR_SUBFONT);
|
|
|
|
// @Sep/16/98 ->
|
|
if (SEL_YES == pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADD].Sel)
|
|
BITSET32(pOEMExtra->fUiOption, ENABLE_TOMBO);
|
|
else
|
|
BITCLR32(pOEMExtra->fUiOption, ENABLE_TOMBO);
|
|
pOEMExtra->nUiTomboAdjX = (SHORT)pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJX].Sel;
|
|
pOEMExtra->nUiTomboAdjY = (SHORT)pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJY].Sel;
|
|
// @Sep/16/98 <-
|
|
|
|
if (!BITTEST32(pOEMExtra->fUiOption, OPT_NODUPLEX))
|
|
{
|
|
pOEMExtra->UiBindMargin = (WORD)pOEMUIParam->pOEMOptItems[ITEM_BIND_MARGIN].Sel;
|
|
|
|
if (SEL_YES == pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Sel)
|
|
BITSET32(pOEMExtra->fUiOption, ENABLE_BIND_RIGHT);
|
|
else
|
|
BITCLR32(pOEMExtra->fUiOption, ENABLE_BIND_RIGHT);
|
|
}
|
|
}
|
|
Action = CPSUICB_ACTION_ITEMS_APPLIED;
|
|
break;
|
|
|
|
case CPSUICB_REASON_ITEMS_REVERTED:
|
|
// @Sep/16/98 ->
|
|
if (!BITTEST32(MINIPRIVATE_DM(pOEMUIParam)->fUiOption, OPT_NODUPLEX))
|
|
{
|
|
// if duplex is enabled
|
|
if (IsValidDuplex(pOEMUIParam))
|
|
{
|
|
// enable ITEM_BIND_xxx.
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_MARGIN].Flags &= ~OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Flags &= ~OPTIF_DISABLED;
|
|
}
|
|
else
|
|
{
|
|
// disable ITEM_BIND_xxx.
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_MARGIN].Flags |= OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Flags |= OPTIF_DISABLED;
|
|
}
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_MARGIN].Flags |= OPTIF_CHANGED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_BIND_RIGHT].Flags |= OPTIF_CHANGED;
|
|
}
|
|
|
|
// if TOMBO is enabled
|
|
if (SEL_YES == pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADD].Sel)
|
|
{
|
|
// enable ITEM_TOMBO_ADJX/Y.
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJX].Flags &= ~OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJY].Flags &= ~OPTIF_DISABLED;
|
|
}
|
|
else
|
|
{
|
|
// disable ITEM_TOMBO_ADJX/Y.
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJX].Flags |= OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJY].Flags |= OPTIF_DISABLED;
|
|
}
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJX].Flags |= OPTIF_CHANGED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_TOMBO_ADJY].Flags |= OPTIF_CHANGED;
|
|
// @Sep/24/99 ->
|
|
// If ImageControl isn't set to "Standard", disable Scaling.
|
|
iNum = SearchItemByName((pOptItem = pOEMUIParam->pDrvOptItems),
|
|
(WORD)pOEMUIParam->cDrvOptItems,
|
|
UNIRES_DLL, IDS_UNIRES_IMAGECONTROL_DISPLAY);
|
|
if (0 <= iNum && SEL_STANDARD != (pOptItem+iNum)->Sel)
|
|
pOEMUIParam->pOEMOptItems[ITEM_SCALING].Flags |= OPTIF_DISABLED;
|
|
else
|
|
pOEMUIParam->pOEMOptItems[ITEM_SCALING].Flags &= ~OPTIF_DISABLED;
|
|
pOEMUIParam->pOEMOptItems[ITEM_SCALING].Flags |= OPTIF_CHANGED;
|
|
// @Sep/24/99 <-
|
|
Action = CPSUICB_ACTION_OPTIF_CHANGED;
|
|
// @Sep/16/98 <-
|
|
break;
|
|
}
|
|
|
|
return Action;
|
|
} //*** DOCPROP_CallBack
|
|
|
|
|
|
// @Sep/22/2000 ->
|
|
#ifdef DISKLESSMODEL
|
|
LONG APIENTRY PRNPROP_CallBack(PCPSUICBPARAM pCallbackParam, POEMCUIPPARAM pOEMUIParam)
|
|
{
|
|
LONG Action = CPSUICB_ACTION_NONE;
|
|
|
|
#if DBG
|
|
giDebugLevel = DBG_VERBOSE;
|
|
#endif // DBG
|
|
VERBOSE((DLLTEXT("PRNPROP_CallBack() entry.\n")));
|
|
|
|
switch (pCallbackParam->Reason)
|
|
{
|
|
case CPSUICB_REASON_APPLYNOW:
|
|
Action = CPSUICB_ACTION_ITEMS_APPLIED;
|
|
{
|
|
POPTITEM pOptItem;
|
|
WCHAR wcHDName[ITEM_STR_LEN128];
|
|
INT iCnt2;
|
|
INT iCnt = ITEM_HARDDISK_NAMES;
|
|
INT cOptItem = (INT)pOEMUIParam->cDrvOptItems;
|
|
UINT uID = IDS_ITEM_HARDDISK;
|
|
BYTE ValueData = 0; // We suppose Hard Disk isn't installed as default.
|
|
|
|
// Check item name with several candidate ("HDD", "Memory / HDD",...).
|
|
while (iCnt-- > 0)
|
|
{
|
|
// yasho's point-out @Nov/29/2000 ->
|
|
// LoadString(ghInstance, uID, wcHDName, sizeof(wcHDName));
|
|
LoadString(ghInstance, uID, wcHDName, sizeof(wcHDName) / sizeof(*wcHDName));
|
|
uID++;
|
|
// @Nov/29/2000 <-
|
|
|
|
pOptItem = pOEMUIParam->pDrvOptItems;
|
|
for (iCnt2 = 0; iCnt2 < cOptItem; iCnt2++, pOptItem++)
|
|
{
|
|
VERBOSE((DLLTEXT("%d: %ls\n"), iCnt2, pOptItem->pName));
|
|
// @Apr/04/2002 ->
|
|
// if (lstrlen(pOptItem->pName))
|
|
if (is_valid_ptr(pOptItem->pName) && safe_strlenW(pOptItem->pName, ITEM_STR_LEN128))
|
|
// @Apr/04/2002 <-
|
|
{
|
|
// Is item name same as "Hard Disk" or something like?
|
|
if (!lstrcmp(pOptItem->pName, wcHDName))
|
|
{
|
|
// if Hard Disk is installed, value will be 1
|
|
ValueData = (BYTE)(pOptItem->Sel % 2);
|
|
goto _CHECKNAME_FINISH;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
_CHECKNAME_FINISH:
|
|
// Because pOEMUIParam->pOEMDM (pointer to private devmode) is NULL when
|
|
// DrvDevicePropertySheets calls this callback, we use registry.
|
|
SetPrinterData(pOEMUIParam->hPrinter, REG_HARDDISK_INSTALLED, REG_BINARY,
|
|
(PBYTE)&ValueData, sizeof(BYTE));
|
|
}
|
|
break;
|
|
}
|
|
return Action;
|
|
} //*** PRNPROP_CallBack
|
|
#endif // DISKLESSMODEL
|
|
// @Sep/22/2000 <-
|
|
|
|
|
|
// @Sep/24/99 ->
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Function: SearchItemByName
|
|
//
|
|
// Description: Search option item, whose DMPubID == 0, by name
|
|
// (e.g. Halftoning, Output Bin, Image Control)
|
|
// Parameters:
|
|
// pOptItem Pointer to OPTITEMs
|
|
// cOptItem Count of OPTITEMs
|
|
// uiResDLL resource dll#
|
|
// uiResID item's name ID in resource dll
|
|
//
|
|
// Returns: the item's count(>=0); -1 if fail.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
INT SearchItemByName(POPTITEM pOptItem, WORD cOptItem, UINT uiResDLL, UINT uiResID)
|
|
{
|
|
HINSTANCE hInst;
|
|
WCHAR wszTargetName[ITEM_STR_LEN128];
|
|
INT iCnt = -1;
|
|
|
|
if (UNIRES_DLL == uiResDLL)
|
|
hInst = LoadLibrary(STR_UNIRESDLL); // resource in UNIRES.DLL
|
|
else if (RPDLRES_DLL == uiResDLL)
|
|
hInst = LoadLibrary(STR_RPDLRESDLL); // resource in RPDLRES.DLL @Sep/27/99
|
|
else
|
|
hInst = ghInstance; // resource in this DLL(RPDLCFG.DLL)
|
|
|
|
if (hInst)
|
|
{
|
|
LoadString(hInst, uiResID, wszTargetName, ITEM_STR_LEN128);
|
|
for (iCnt = 0; iCnt < (INT)cOptItem; iCnt++, pOptItem++)
|
|
{
|
|
VERBOSE((DLLTEXT("** DMPubID=%d, pName=%lx **\n"), pOptItem->DMPubID, pOptItem->pName));
|
|
// @Apr/04/2002 ->
|
|
// if (lstrlen(pOptItem->pName) && !lstrcmp(pOptItem->pName, wszTargetName))
|
|
if (is_valid_ptr(pOptItem->pName) && safe_strlenW(pOptItem->pName, ITEM_STR_LEN128) && !lstrcmp(pOptItem->pName, wszTargetName))
|
|
// @Apr/04/2002 <-
|
|
goto _SEARCHITEM_BYNAME_EXIT;
|
|
}
|
|
iCnt = -1; // search fail
|
|
}
|
|
|
|
_SEARCHITEM_BYNAME_EXIT:
|
|
#if DBG
|
|
if (iCnt >= 0)
|
|
{
|
|
VERBOSE((DLLTEXT("** SearchItemByName():SUCCESS #%d **\n"), iCnt));
|
|
VERBOSE((DLLTEXT("** DMPubID=%d"), pOptItem->DMPubID));
|
|
// @Apr/04/2002 ->
|
|
// if (lstrlen(pOptItem->pName))
|
|
if (is_valid_ptr(pOptItem->pName) && safe_strlenW(pOptItem->pName, ITEM_STR_LEN128))
|
|
// @Apr/04/2002 <-
|
|
VERBOSE((", pName=%ls", pOptItem->pName));
|
|
VERBOSE((" **\n"));
|
|
}
|
|
else
|
|
{
|
|
VERBOSE((DLLTEXT("** SearchItemByName():FAIL **\n")));
|
|
}
|
|
#endif // DBG
|
|
if (hInst != 0 && hInst != ghInstance)
|
|
FreeLibrary(hInst);
|
|
return iCnt;
|
|
} //*** SearchItemByName
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Function: SearchItemByID
|
|
//
|
|
// Description: Search option item by DMPubID
|
|
//
|
|
// Parameters:
|
|
// pOptItem Pointer to OPTITEMs
|
|
// cOptItem Count of OPTITEMs
|
|
// DMPubID Devmode public filed ID
|
|
//
|
|
// Returns: the item's count(>=0); -1 if fail.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
INT SearchItemByID(POPTITEM pOptItem, WORD cOptItem, BYTE DMPubID)
|
|
{
|
|
INT iCnt;
|
|
|
|
for (iCnt = 0; iCnt < (INT)cOptItem; iCnt++, pOptItem++)
|
|
{
|
|
if (DMPubID == pOptItem->DMPubID)
|
|
return iCnt;
|
|
}
|
|
return -1; // search fail
|
|
} //*** SearchItemByID
|
|
// @Sep/24/99 <-
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Function: IsValidDuplex
|
|
//
|
|
// Description: Check Duplex Feature in UI
|
|
//
|
|
// Parameters:
|
|
// pOEMUIParam
|
|
//
|
|
// Returns: TRUE if valid; FALSE otherwise.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
BOOL IsValidDuplex(POEMCUIPPARAM pOEMUIParam)
|
|
{
|
|
// not use DrvGetDriverSetting @Sep/27/99 ->
|
|
// DWORD dwNeeded = 64, dwOptions, dwLastError;
|
|
// BYTE Output[64];
|
|
//// @Oct/06/98 ->
|
|
//// PFN_DrvGetDriverSetting DrvGetDriverSetting = pOEMUIParam->poemuiobj->pOemUIProcs->DrvGetDriverSetting;
|
|
//// @Oct/06/98 <-
|
|
//
|
|
// SetLastError(0);
|
|
// UI_GETDRIVERSETTING(pOEMUIParam->poemuiobj, UNIDRV_FEATURE_DUPLEX,
|
|
// Output, dwNeeded, &dwNeeded, &dwOptions); // @Oct/06/98
|
|
// dwLastError = GetLastError();
|
|
// VERBOSE((DLLTEXT("IsValidDuplex: dwLastError=%d\n"), dwLastError));
|
|
//
|
|
// if (ERROR_SUCCESS == dwLastError)
|
|
// {
|
|
// VERBOSE((DLLTEXT("** Output=%s **\n"), Output));
|
|
//
|
|
// // if duplex is not valid, return FALSE
|
|
// if (!lstrcmpA((LPCSTR)Output, UNIDRV_DUPLEX_NONE))
|
|
// return FALSE;
|
|
// }
|
|
// return TRUE;
|
|
|
|
POPTITEM pOptItem;
|
|
INT iNum;
|
|
|
|
iNum = SearchItemByID((pOptItem = pOEMUIParam->pDrvOptItems),
|
|
(WORD)pOEMUIParam->cDrvOptItems,
|
|
DMPUB_DUPLEX);
|
|
return (0 <= iNum && SEL_DUPLEX_NONE != (pOptItem+iNum)->Sel);
|
|
// @Sep/27/99 <-
|
|
} //*** IsValidDuplex
|
|
|
|
|
|
extern "C" {
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Function: OEMDocumentPropertySheets
|
|
//////////////////////////////////////////////////////////////////////////
|
|
LRESULT APIENTRY OEMDocumentPropertySheets(PPROPSHEETUI_INFO pPSUIInfo, LPARAM lParam)
|
|
{
|
|
LRESULT lResult = FALSE;
|
|
// Validate parameters.
|
|
if( (NULL == pPSUIInfo)
|
|
||
|
|
IsBadWritePtr(pPSUIInfo, pPSUIInfo->cbSize)
|
|
||
|
|
(PROPSHEETUI_INFO_VERSION != pPSUIInfo->Version)
|
|
||
|
|
( (PROPSHEETUI_REASON_INIT != pPSUIInfo->Reason)
|
|
&&
|
|
(PROPSHEETUI_REASON_GET_INFO_HEADER != pPSUIInfo->Reason)
|
|
&&
|
|
(PROPSHEETUI_REASON_GET_ICON != pPSUIInfo->Reason)
|
|
&&
|
|
(PROPSHEETUI_REASON_SET_RESULT != pPSUIInfo->Reason)
|
|
&&
|
|
(PROPSHEETUI_REASON_DESTROY != pPSUIInfo->Reason)
|
|
)
|
|
)
|
|
{
|
|
ERR((DLLTEXT("OEMDocumentPropertySheets() ERROR_INVALID_PARAMETER.\n")));
|
|
|
|
// Return invalid parameter error.
|
|
SetLastError(ERROR_INVALID_PARAMETER);
|
|
return -1;
|
|
}
|
|
|
|
VERBOSE(("\n"));
|
|
VERBOSE((DLLTEXT("OEMDocumentPropertySheets() entry. Reason=%d\n"), pPSUIInfo->Reason));
|
|
|
|
// @Sep/22/2000 ->
|
|
#ifdef DISKLESSMODEL
|
|
{
|
|
DWORD dwError, dwType, dwNeeded;
|
|
BYTE ValueData;
|
|
POEMUIPSPARAM pOEMUIPSParam = (POEMUIPSPARAM)pPSUIInfo->lParamInit;
|
|
|
|
dwError = GetPrinterData(pOEMUIPSParam->hPrinter, REG_HARDDISK_INSTALLED, &dwType,
|
|
(PBYTE)&ValueData, sizeof(BYTE), &dwNeeded);
|
|
if (ERROR_SUCCESS != dwError)
|
|
{
|
|
VERBOSE((DLLTEXT(" CAN'T READ REGISTRY (%d).\n"), dwError));
|
|
return FALSE;
|
|
}
|
|
else if (!ValueData)
|
|
{
|
|
VERBOSE((DLLTEXT(" HARD DISK ISN'T INSTALLED.\n")));
|
|
return FALSE;
|
|
}
|
|
}
|
|
#endif // DISKLESSMODEL
|
|
// @Sep/22/2000 <-
|
|
|
|
// Do action.
|
|
switch(pPSUIInfo->Reason)
|
|
{
|
|
case PROPSHEETUI_REASON_INIT:
|
|
{
|
|
POEMUIPSPARAM pOEMUIPSParam = (POEMUIPSPARAM)pPSUIInfo->lParamInit;
|
|
POEMUD_EXTRADATA pOEMExtra = MINIPRIVATE_DM(pOEMUIPSParam); // @Oct/06/98
|
|
|
|
#ifdef WINNT_40 // @Sep/02/99
|
|
VERBOSE((DLLTEXT("** dwFlags=%lx **\n"), pOEMUIPSParam->dwFlags));
|
|
if (pOEMUIPSParam->dwFlags & DM_NOPERMISSION)
|
|
BITSET32(pOEMExtra->fUiOption, UIPLUGIN_NOPERMISSION);
|
|
#endif // WINNT_40
|
|
|
|
pPSUIInfo->UserData = NULL;
|
|
|
|
#ifndef GWMODEL // @Sep/21/2000
|
|
// if fax model, add fax page
|
|
if (BITTEST32(pOEMExtra->fUiOption, FAX_MODEL) &&
|
|
(pPSUIInfo->UserData = (LPARAM)HeapAlloc(pOEMUIPSParam->hOEMHeap,
|
|
HEAP_ZERO_MEMORY,
|
|
sizeof(UIDATA))))
|
|
{
|
|
PROPSHEETPAGE Page;
|
|
PUIDATA pUiData = (PUIDATA)pPSUIInfo->UserData;
|
|
FILEDATA FileData; // <-pFileData (formerly use MemAllocZ) @Mar/17/2000
|
|
|
|
// read PRINT_DONE flag from shared data file @Oct/19/98
|
|
FileData.fUiOption = 0;
|
|
// @Mar/01/2002 ->
|
|
// RWFileData(&FileData, pOEMExtra->SharedFileName, GENERIC_READ);
|
|
RWFileData(&FileData, pOEMExtra->SharedFileName, sizeof(pOEMExtra->SharedFileName), GENERIC_READ);
|
|
// @Mar/01/2002 <-
|
|
VERBOSE((DLLTEXT("** Shared File Name=%ls **\n"), pOEMExtra->SharedFileName));
|
|
// set PRINT_DONE flag
|
|
if (BITTEST32(FileData.fUiOption, PRINT_DONE))
|
|
BITSET32(pOEMExtra->fUiOption, PRINT_DONE);
|
|
|
|
pUiData->hComPropSheet = pPSUIInfo->hComPropSheet;
|
|
pUiData->pfnComPropSheet = pPSUIInfo->pfnComPropSheet;
|
|
pUiData->pOEMExtra = pOEMExtra;
|
|
|
|
// Init property page.
|
|
// Use SecureZeroMemory @Mar/29/2002 ->
|
|
#if defined(WINNT_40) || defined(RICOH_RELEASE)
|
|
memset(&Page, 0, sizeof(PROPSHEETPAGE));
|
|
#else
|
|
SecureZeroMemory(&Page, sizeof(PROPSHEETPAGE));
|
|
#endif
|
|
// Mar/29/2002 <-
|
|
Page.dwSize = sizeof(PROPSHEETPAGE);
|
|
Page.dwFlags = PSP_DEFAULT;
|
|
Page.hInstance = ghInstance;
|
|
Page.pszTemplate = MAKEINTRESOURCE(IDD_FAXMAIN);
|
|
Page.pfnDlgProc = FaxPageProc; // add (DLGPROC) @Aug/30/99
|
|
Page.lParam = (LPARAM)pUiData;
|
|
|
|
// Add property sheets.
|
|
lResult = pPSUIInfo->pfnComPropSheet(pPSUIInfo->hComPropSheet,
|
|
CPSFUNC_ADD_PROPSHEETPAGE,
|
|
(LPARAM)&Page, 0);
|
|
pUiData->hPropPage = (HANDLE)lResult;
|
|
VERBOSE((DLLTEXT("** INIT: lResult=%x **\n"), lResult));
|
|
lResult = (lResult > 0)? TRUE : FALSE;
|
|
}
|
|
#else // GWMODEL
|
|
#ifdef JOBLOGSUPPORT_DLG
|
|
// add Job/Log page
|
|
if ((pPSUIInfo->UserData = (LPARAM)HeapAlloc(pOEMUIPSParam->hOEMHeap,
|
|
HEAP_ZERO_MEMORY,
|
|
sizeof(UIDATA))))
|
|
{
|
|
PROPSHEETPAGE Page;
|
|
PUIDATA pUiData = (PUIDATA)pPSUIInfo->UserData;
|
|
FILEDATA FileData; // <- pFileData (formerly use MemAllocZ) @2000/03/15
|
|
|
|
// read PRINT_DONE flag from data file
|
|
FileData.fUiOption = 0;
|
|
// @Mar/01/2002 ->
|
|
// RWFileData(&FileData, pOEMExtra->SharedFileName, GENERIC_READ);
|
|
RWFileData(&FileData, pOEMExtra->SharedFileName, sizeof(pOEMExtra->SharedFileName), GENERIC_READ);
|
|
// @Mar/01/2002 <-
|
|
// set PRINT_DONE flag
|
|
if (BITTEST32(FileData.fUiOption, PRINT_DONE))
|
|
BITSET32(pOEMExtra->fUiOption, PRINT_DONE);
|
|
VERBOSE((DLLTEXT("** Flag=%lx,File Name=%ls **\n"),
|
|
pOEMExtra->fUiOption, pOEMExtra->SharedFileName));
|
|
|
|
pUiData->hComPropSheet = pPSUIInfo->hComPropSheet;
|
|
pUiData->pfnComPropSheet = pPSUIInfo->pfnComPropSheet;
|
|
pUiData->pOEMExtra = pOEMExtra;
|
|
|
|
// Init property page.
|
|
// Use SecureZeroMemory @Mar/29/2002 ->
|
|
#if defined(WINNT_40) || defined(RICOH_RELEASE)
|
|
memset(&Page, 0, sizeof(PROPSHEETPAGE));
|
|
#else
|
|
SecureZeroMemory(&Page, sizeof(PROPSHEETPAGE));
|
|
#endif
|
|
// Mar/29/2002 <-
|
|
Page.dwSize = sizeof(PROPSHEETPAGE);
|
|
Page.dwFlags = PSP_DEFAULT;
|
|
Page.hInstance = ghInstance;
|
|
Page.pszTemplate = MAKEINTRESOURCE(IDD_JOBMAIN);
|
|
Page.pfnDlgProc = JobPageProc;
|
|
Page.lParam = (LPARAM)pUiData;
|
|
|
|
// Add property sheets.
|
|
lResult = pPSUIInfo->pfnComPropSheet(pPSUIInfo->hComPropSheet,
|
|
CPSFUNC_ADD_PROPSHEETPAGE,
|
|
(LPARAM)&Page, 0);
|
|
pUiData->hPropPage = (HANDLE)lResult;
|
|
VERBOSE((DLLTEXT("** INIT: lResult=%x **\n"), lResult));
|
|
lResult = (lResult > 0)? TRUE : FALSE;
|
|
}
|
|
#endif // JOBLOGSUPPORT_DLG
|
|
#endif // GWMODEL
|
|
}
|
|
break;
|
|
|
|
case PROPSHEETUI_REASON_GET_INFO_HEADER:
|
|
lResult = TRUE;
|
|
break;
|
|
|
|
case PROPSHEETUI_REASON_GET_ICON:
|
|
// No icon
|
|
lResult = 0;
|
|
break;
|
|
|
|
case PROPSHEETUI_REASON_SET_RESULT:
|
|
{
|
|
PSETRESULT_INFO pInfo = (PSETRESULT_INFO) lParam;
|
|
|
|
lResult = pInfo->Result;
|
|
}
|
|
break;
|
|
|
|
case PROPSHEETUI_REASON_DESTROY:
|
|
lResult = TRUE;
|
|
if (pPSUIInfo->UserData)
|
|
{
|
|
POEMUIPSPARAM pOEMUIPSParam = (POEMUIPSPARAM)pPSUIInfo->lParamInit;
|
|
|
|
HeapFree(pOEMUIPSParam->hOEMHeap, 0, (void*)pPSUIInfo->UserData);
|
|
}
|
|
break;
|
|
}
|
|
|
|
pPSUIInfo->Result = lResult;
|
|
return lResult;
|
|
} //*** OEMDocumentPropertySheets
|
|
|
|
} // End of extern "C"
|