182 lines
3.5 KiB
C
182 lines
3.5 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1996 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
prnprop.c
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
Implementation of DDI entry points:
|
|||
|
DrvDevicePropertySheets
|
|||
|
PrinterProperties
|
|||
|
|
|||
|
Environment:
|
|||
|
|
|||
|
Fax driver user interface
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
01/09/96 -davidx-
|
|||
|
Created it.
|
|||
|
|
|||
|
mm/dd/yy -author-
|
|||
|
description
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
#include "faxui.h"
|
|||
|
#include <shellapi.h>
|
|||
|
#include <faxreg.h>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
LONG
|
|||
|
DrvDevicePropertySheets(
|
|||
|
PPROPSHEETUI_INFO pPSUIInfo,
|
|||
|
LPARAM lParam
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Display "Printer Properties" dialog
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
pPSUIInfo - Pointer to a PROPSHEETUI_INFO structure
|
|||
|
lParam - Pointer to a DEVICEPROPERTYHEADER structure
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
> 0 if successful, <= 0 if failed
|
|||
|
|
|||
|
[Note:]
|
|||
|
|
|||
|
Please refer to WinNT DDK/SDK documentation for more details.
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
PDEVICEPROPERTYHEADER pDPHdr;
|
|||
|
PROPSHEETPAGE psp;
|
|||
|
|
|||
|
//
|
|||
|
// Validate input parameters
|
|||
|
//
|
|||
|
|
|||
|
if (!pPSUIInfo || !(pDPHdr = (PDEVICEPROPERTYHEADER) pPSUIInfo->lParamInit)) {
|
|||
|
|
|||
|
Assert(FALSE);
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
// Handle various cases for which this function might be called
|
|||
|
//
|
|||
|
|
|||
|
switch (pPSUIInfo->Reason) {
|
|||
|
|
|||
|
case PROPSHEETUI_REASON_INIT:
|
|||
|
|
|||
|
//
|
|||
|
// "Printer Properties" dialog only has one dummy tab
|
|||
|
//
|
|||
|
|
|||
|
memset(&psp, 0, sizeof(psp));
|
|||
|
psp.dwSize = sizeof(PROPSHEETPAGE);
|
|||
|
psp.hInstance = ghInstance;
|
|||
|
psp.lParam = 0;
|
|||
|
psp.pszTemplate = MAKEINTRESOURCE(IDD_USER_INFO);
|
|||
|
psp.pfnDlgProc = UserInfoDlgProc;
|
|||
|
|
|||
|
if (pPSUIInfo->pfnComPropSheet(pPSUIInfo->hComPropSheet,
|
|||
|
CPSFUNC_ADD_PROPSHEETPAGE,
|
|||
|
(LPARAM) &psp,
|
|||
|
0))
|
|||
|
{
|
|||
|
pPSUIInfo->UserData = 0;
|
|||
|
pPSUIInfo->Result = CPSUI_CANCEL;
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
break;
|
|||
|
|
|||
|
case PROPSHEETUI_REASON_GET_INFO_HEADER:
|
|||
|
|
|||
|
{ PPROPSHEETUI_INFO_HEADER pPSUIHdr;
|
|||
|
|
|||
|
pPSUIHdr = (PPROPSHEETUI_INFO_HEADER) lParam;
|
|||
|
pPSUIHdr->Flags = PSUIHDRF_PROPTITLE | PSUIHDRF_NOAPPLYNOW;
|
|||
|
pPSUIHdr->pTitle = pDPHdr->pszPrinterName;
|
|||
|
pPSUIHdr->hInst = ghInstance;
|
|||
|
pPSUIHdr->IconID = IDI_CPSUI_FAX;
|
|||
|
}
|
|||
|
return 1;
|
|||
|
|
|||
|
case PROPSHEETUI_REASON_SET_RESULT:
|
|||
|
|
|||
|
pPSUIInfo->Result = ((PSETRESULT_INFO) lParam)->Result;
|
|||
|
return 1;
|
|||
|
|
|||
|
case PROPSHEETUI_REASON_DESTROY:
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
BOOL
|
|||
|
PrinterProperties(
|
|||
|
HWND hwnd,
|
|||
|
HANDLE hPrinter
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
Displays a printer-properties dialog box for the specified printer
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
hwnd - Identifies the parent window of the dialog box
|
|||
|
hPrinter - Identifies a printer object
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
If the function succeeds, the return value is TRUE.
|
|||
|
If the function fails, the return value is FALSE.
|
|||
|
|
|||
|
[Note:]
|
|||
|
|
|||
|
This is the old entry point for the spooler. Even though
|
|||
|
no one should be using this, do it for compatibility.
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
DEVICEPROPERTYHEADER devPropHdr;
|
|||
|
DWORD result;
|
|||
|
|
|||
|
memset(&devPropHdr, 0, sizeof(devPropHdr));
|
|||
|
devPropHdr.cbSize = sizeof(devPropHdr);
|
|||
|
devPropHdr.hPrinter = hPrinter;
|
|||
|
devPropHdr.pszPrinterName = NULL;
|
|||
|
|
|||
|
//
|
|||
|
// Decide if the caller has permission to change anything
|
|||
|
//
|
|||
|
|
|||
|
if (! SetPrinterDataDWord(hPrinter, PRNDATA_PERMISSION, 1))
|
|||
|
devPropHdr.Flags |= DPS_NOPERMISSION;
|
|||
|
|
|||
|
CallCompstui(hwnd, DrvDevicePropertySheets, (LPARAM) &devPropHdr, &result);
|
|||
|
|
|||
|
return result > 0;
|
|||
|
}
|