📄 uidevpropsheets.cpp
字号:
/* * * UIDevPropSheets.cpp * Copyright (C) 2006 Michael H. Overlin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Contact at poster_printer@yahoo.com */#include "UIDevPropSheets.h"#include "UIDriverEntryPoints.h"#include "resource.h"#include "..\lib\debug.h"#include "..\lib\printResizerCommon.h"#include "..\lib\utils.h"#include <windows.h>#include <winddi.h>#include <winddiui.h>#include <winspool.h>#include <malloc.h>// PRIVATE TYPEDEFS typedef struct _DIALOGDATA { PFNCOMPROPSHEET pfnComPropSheet; HANDLE hPropSheetAdded; HANDLE hComPropSheet;} DIALOGDATA;typedef DIALOGDATA *PDIALOGDATA;// PRIVATE PROTOTYPESstatic BOOL CALLBACK DevPropDlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) ;// PUBLIC ROUTINESLONG DrvDevicePropertySheets( PPROPSHEETUI_INFO ppsuii, LPARAM lParam ) { LONG lRetValue = -1; PDEVICEPROPERTYHEADER pdph; static BOOL bBreak = STATICBOOLBREAK; ASSERT(!bBreak); if (ppsuii == NULL || (pdph = (PDEVICEPROPERTYHEADER) ppsuii->lParamInit) == NULL ) { SetLastError(ERROR_INVALID_DATA); return ERR_CPSUI_GETLASTERROR; } switch (ppsuii->Reason) { case PROPSHEETUI_REASON_INIT: { LPPROPSHEETPAGE lppsp = NULL; PDIALOGDATA pdd = NULL; BOOL bContinue = TRUE; if (bContinue) { LONG_PTR lptr = (LONG_PTR) NULL; pdd = (PDIALOGDATA) malloc(sizeof(*pdd)); pdd->pfnComPropSheet = ppsuii->pfnComPropSheet; pdd->hComPropSheet = ppsuii->hComPropSheet; // pdd->hPropSheetAdded INITIALIZED BELOW lppsp = (LPPROPSHEETPAGE) malloc(sizeof(PROPSHEETPAGE)); ZeroMemory(lppsp, sizeof(*lppsp)); lppsp->dwSize = sizeof(*lppsp); lppsp->hInstance = ghinstDLL; lppsp->pszTemplate = MAKEINTRESOURCE(IDD_DIAOG_DEVICEPROPERTIES); lppsp->lParam = (LPARAM) pdd; lppsp->pfnDlgProc = (DLGPROC) DevPropDlgProc; ppsuii->UserData = (ULONG_PTR) lppsp; ppsuii->Result = CPSUI_CANCEL; pdd->hPropSheetAdded = (HANDLE) ppsuii->pfnComPropSheet( ppsuii->hComPropSheet, CPSFUNC_ADD_PROPSHEETPAGE, (LPARAM)lppsp, 0 ); if (pdd->hPropSheetAdded == NULL) { bContinue = FALSE; } } // bContinue if (bContinue) { lRetValue = 1; } else { if (pdd != NULL) { free(pdd); } if (lppsp != NULL) { free(lppsp); } } } break; // msplot handles this case (?) //case PROPSHEETUI_REASON_GET_INFO_HEADER: case PROPSHEETUI_REASON_SET_RESULT: // // Save the result and also set the result to the caller. // /* if (pPI->hCPSUI == ((PSETRESULT_INFO)lParam)->hSetResult) { pPSUIInfo->Result = ((PSETRESULT_INFO)lParam)->Result; Result = 1; } */ break; case PROPSHEETUI_REASON_DESTROY: { LPPROPSHEETPAGE lppsp = (LPPROPSHEETPAGE) ppsuii->UserData; if (lppsp != NULL) { PDIALOGDATA pdd = (PDIALOGDATA) lppsp->lParam; if (pdd != NULL) { free(pdd); } free(lppsp); ppsuii->UserData = 0; } lRetValue = 1; } break; // ADD DEFAULT CASE } // switch(pPSUIInfo->Reason) return lRetValue;}// *******************************************************************************// ** PRIVATE ROUTINES *********************************************************// *******************************************************************************static BOOL CALLBACK DevPropDlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { BOOL bRetValue = TRUE; switch(message) { case WM_INITDIALOG: { LPPROPSHEETPAGE lppsp = (LPPROPSHEETPAGE ) lParam; PDIALOGDATA pdd = (PDIALOGDATA) lppsp->lParam; SetWindowLongPtr(hDlg, DWL_USER, (LONG) pdd); ::SetDlgItemText(hDlg, IDC_STATIC_VERSION, PRINTRESIZER_VERSION_USER_SEES); { LPTSTR lptstrTargetPrinterName = TEXT("BLAH BLAH"); SetDlgItemText(hDlg, IDC_PRINTER_NAME, lptstrTargetPrinterName); } } break; // case WM_INITDIALOG case WM_NOTIFY: { LPNMHDR lpNMHdr = (LPNMHDR) lParam; UINT uiCode = lpNMHdr->code; switch(uiCode) { case PSN_APPLY: { PDIALOGDATA pdd = (PDIALOGDATA) GetWindowLongPtr(hDlg, DWL_USER); PFNCOMPROPSHEET pfnComPropSheet = pdd->pfnComPropSheet; LONG lTemp = pfnComPropSheet( pdd->hComPropSheet, CPSFUNC_SET_RESULT, (LPARAM) pdd->hPropSheetAdded, CPSUI_OK ); } break; case PSN_RESET: break; case PSN_SETACTIVE: break; default: bRetValue = FALSE; break; } // switch(uiCde) } break; // case WM_NOTIFY default: bRetValue = FALSE; break; } return bRetValue;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -