亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? oemui.cpp

?? win2000打印機驅動代碼
?? CPP
字號:
/*
 * @file ui/oemui.cpp OEM UI function.
 *
 * W2kPrintDrvSample
 *
 * Copyright (C) 2004, terrificskyfox <terrificskyfox@yahoo.com.cn>
 *
 * 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
 */

#include "precomp.h"
#include "debug.h"
#include "globals.h"
#include "pageclbk.h"
#include "resource.h"
#include "oemui.h"


/*
 *  Internal implementations
 */

UINT CALLBACK OEMDocumentPropSheetPageProc(HWND hWnd, UINT uMsg, LPPROPSHEETPAGE ppsp);

static void hide_system_option(POEMCUIPPARAM pOemCUIPParam);
static HRESULT modify_doc_prop(POEMCUIPPARAM pOemCUIPParam);


/*
 *  Internal implementations
 */

/*
 * Function: hide_system_option
 *
 * Purpose: Hide some system options.
 *
 * Return: NULL
 */
static void hide_system_option(POEMCUIPPARAM pOemCUIPParam)
{
	for(DWORD Loop = 0; Loop < pOemCUIPParam->cDrvOptItems; Loop++)
	{
		switch(pOemCUIPParam->pDrvOptItems[Loop].DMPubID)
		{
//		case DMPUB_ORIENTATION:
		case DMPUB_PAGEORDER:
		case DMPUB_NUP:
		case DMPUB_DEFSOURCE:
//		case DMPUB_COLOR:
//		case DMPUB_FORMNAME:
		case DMPUB_COPIES_COLLATE:
//		case DMPUB_PRINTQUALITY:
		case DMPUB_ICMINTENT:
		case DMPUB_ICMMETHOD:
			pOemCUIPParam->pDrvOptItems[Loop].Flags |= OPTIF_HIDE;
			break;

		case DMPUB_NONE:
			if(Loop != pOemCUIPParam->cDrvOptItems - 1)
				pOemCUIPParam->pDrvOptItems[Loop].Flags |= OPTIF_HIDE;

			break;
		}
	}
}

/*
 * Function: modify_doc_prop
 *
 * Purpose: Modify doc property pages.
 *
 * Return: HRESULT
 */
static HRESULT modify_doc_prop(POEMCUIPPARAM pOemCUIPParam)
{
	if(pOemCUIPParam->pDrvOptItems != NULL)
		hide_system_option(pOemCUIPParam);

	return S_OK;
}

/*
 * Function: doc_release_psp
 *
 * Purpose: Release resources used by document property page.
 *
 * Return: NULL
 */
static void doc_release_psp(PDIALOGINFO pdi)
{
	if(pdi)
	{
		if(!pdi->bOK) // discard modifications
		{
			// oem devmode
			if(pdi->pOemDevOrig)
				CopyMemory(pdi->pOemDev, pdi->pOemDevOrig, sizeof(OEMDEV));
		}

		if(pdi->pOemDevOrig)
			HeapFree(pdi->hHeap, 0, pdi->pOemDevOrig);

		HeapFree(pdi->hHeap, 0, pdi);
	}
}


/*
 *  Implementations
 */

/*
 * Function: hrOEMCommonUIProp
 *
 * Purpose: Surrogate IKTUI::CommonUIProp.
 *
 * Return: HRESULT
 */
HRESULT hrOEMCommonUIProp(
	DWORD			dwMode,
	POEMCUIPPARAM   pOemCUIPParam)
{
	// validate parameters
	if((dwMode != OEMCUIP_DOCPROP && dwMode != OEMCUIP_PRNPROP) || pOemCUIPParam == NULL)
	{
		ERR(UIERROR("hrOEMCommonUIProp() ERROR_INVALID_PARAMETER.\r\n"));

		SetLastError(ERROR_INVALID_PARAMETER);
		return E_FAIL;
    }


	HRESULT hResult = S_OK;

	switch(dwMode)
	{
	case OEMCUIP_DOCPROP:
		hResult = modify_doc_prop(pOemCUIPParam);
		break;
	}

	return hResult;
}

/*
 * Function: hrOEMDevicePropertySheets
 *
 * Purpose: Surrogate IKTUI::DevicePropertySheets.
 *
 * Return: HRESULT
 */
HRESULT hrOEMDevicePropertySheets(
	PPROPSHEETUI_INFO pPSUIInfo,
	LPARAM lParam)
{
    // validate parameters
	if(pPSUIInfo == NULL || pPSUIInfo->Version != PROPSHEETUI_INFO_VERSION)
	{
		ERR(UIERROR("hrOEMDevicePropertySheets() ERROR_INVALID_PARAMETER.\r\n"));

		SetLastError(ERROR_INVALID_PARAMETER);
		return E_FAIL;
	}


	LONG_PTR    lResult;

	switch(pPSUIInfo->Reason)
	{
	// init, add about page
	case PROPSHEETUI_REASON_INIT:
		{
			PROPSHEETPAGE   Page = {0};

			// init property pages
			Page.dwSize = sizeof(PROPSHEETPAGE);
			Page.dwFlags = PSP_DEFAULT;
			Page.hInstance = ghInstance;
			Page.pszTemplate = MAKEINTRESOURCE(IDD_ABOUT);
			Page.pfnDlgProc = (DLGPROC)DlgAboutProc;

			// add property page
			lResult = pPSUIInfo->pfnComPropSheet(pPSUIInfo->hComPropSheet, CPSFUNC_ADD_PROPSHEETPAGE, (LPARAM)&Page, 0);
		}
		break;

	// no action
	case PROPSHEETUI_REASON_GET_INFO_HEADER:
		lResult = TRUE;
		break;

	// no action
	case PROPSHEETUI_REASON_GET_ICON:
		lResult = TRUE;
		break;

	// receive result information in lParam(SETRESULT_INFO)
	case PROPSHEETUI_REASON_SET_RESULT:
		{
			PSETRESULT_INFO pInfo = (PSETRESULT_INFO) lParam;

			lResult = pInfo->Result;
		}
		break;

	// release resources allocated in PROPSHEETUI_REASON_INIT process
	case PROPSHEETUI_REASON_DESTROY:
		lResult = TRUE;
		break;
	}

	pPSUIInfo->Result = lResult;
	return S_OK;
}

/*
 * Function: hrOEMDocumentPropertySheets
 *
 * Purpose: Surrogate IKTUI::DocumentPropertySheets.
 *
 * Return: HRESULT
 */
HRESULT hrOEMDocumentPropertySheets(
	PPROPSHEETUI_INFO	pPSUIInfo,
	LPARAM				lParam)
{
	// validate parameters
	if(pPSUIInfo == NULL || pPSUIInfo->Version != PROPSHEETUI_INFO_VERSION)
	{
		ERR(UIERROR("hrOEMDocumentPropertySheets() ERROR_INVALID_PARAMETER.\r\n"));

		SetLastError(ERROR_INVALID_PARAMETER);
		return  E_FAIL;
	}


	LONG_PTR    lResult;

	switch(pPSUIInfo->Reason)
	{
	// init, add private property page
	case PROPSHEETUI_REASON_INIT:
		{
			POEMUIPSPARAM   pOEMUIParam = (POEMUIPSPARAM) pPSUIInfo->lParamInit;
			HANDLE          hHeap = pOEMUIParam->hOEMHeap;
			POEMDEV			pOemDev = (POEMDEV)pOEMUIParam->pOEMDM;
			PDIALOGINFO		pdi = NULL;

			// init dialog information
			if(pdi = (PDIALOGINFO)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, sizeof(DIALOGINFO)))
			{
				pdi->pPubDev = pOEMUIParam->pPublicDM;
				pdi->pOemDev = pOemDev;
				if(pdi->pOemDevOrig = (POEMDEV)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, sizeof(OEMDEV)))
					CopyMemory(pdi->pOemDevOrig, pOemDev, sizeof(OEMDEV));
				pdi->hHeap = hHeap;
				pdi->bOK = FALSE;
			}


			PROPSHEETPAGE   Page = {0};

			// init property pages
			Page.dwSize = sizeof(PROPSHEETPAGE);
			Page.dwFlags = PSP_USECALLBACK;
			Page.hInstance = ghInstance;
			Page.pszTemplate = MAKEINTRESOURCE(IDD_CUSTOM);
			Page.pfnDlgProc = (DLGPROC)DlgCustomProc;
			Page.lParam = (LPARAM)pdi;
			Page.pfnCallback = (LPFNPSPCALLBACK)OEMDocumentPropSheetPageProc;

			// add property page
			lResult = pPSUIInfo->pfnComPropSheet(pPSUIInfo->hComPropSheet, CPSFUNC_ADD_PROPSHEETPAGE, (LPARAM)&Page, 0);
		}
		break;

	// no action
	case PROPSHEETUI_REASON_GET_INFO_HEADER:
		lResult = TRUE;
		break;

	// no action
	case PROPSHEETUI_REASON_GET_ICON:
		lResult = TRUE;
		break;

	// receive result in lParam(SETRESULT_INFO)
	case PROPSHEETUI_REASON_SET_RESULT:
		{
			PSETRESULT_INFO pInfo = (PSETRESULT_INFO) lParam;

			lResult = pInfo->Result;
		}
		break;

	// release resources allocated in PROPSHEETUI_REASON_INIT process
	case PROPSHEETUI_REASON_DESTROY:
		lResult = TRUE;
		break;
    }

	pPSUIInfo->Result = lResult;
	return S_OK;
}

/*
 * Function: OEMDocumentPropSheetPageProc
 *
 * Purpose: Callback for document property sheet page.
 *
 * Return: always 1
 */
UINT CALLBACK OEMDocumentPropSheetPageProc(HWND hWnd, UINT uMsg, LPPROPSHEETPAGE ppsp)
{
	if(uMsg == PSPCB_RELEASE)
		doc_release_psp((PDIALOGINFO)ppsp->lParam);

	return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久永久免费观看| 亚洲欧美视频在线观看视频| 成人激情动漫在线观看| 亚洲欧美色综合| 91.xcao| 国产传媒欧美日韩成人| 亚洲欧洲韩国日本视频| 正在播放一区二区| 国产成人精品三级麻豆| 亚洲国产精品久久久久婷婷884| 日韩女优视频免费观看| 99这里只有精品| 美女久久久精品| 亚洲人精品午夜| 日韩免费一区二区| 色噜噜偷拍精品综合在线| 久久99精品一区二区三区三区| 亚洲欧洲中文日韩久久av乱码| 2014亚洲片线观看视频免费| 91丨国产丨九色丨pron| 日韩中文字幕麻豆| 中文字幕av一区二区三区免费看| 欧美一区二区三区日韩| 欧美精品精品一区| 色又黄又爽网站www久久| 亚洲最色的网站| 亚洲国产精品成人综合| 欧美videos中文字幕| 欧美日韩国产一区| 日本久久电影网| 99久久免费国产| 国产成+人+日韩+欧美+亚洲| 蜜臀99久久精品久久久久久软件| 亚洲欧美日韩国产一区二区三区 | 久久久噜噜噜久久人人看| 欧美精品丝袜中出| 欧美另类videos死尸| 欧美日韩综合色| 欧美私模裸体表演在线观看| 欧美无砖专区一中文字| 色婷婷av一区二区三区大白胸 | 26uuu另类欧美| 精品国产sm最大网站免费看| 2欧美一区二区三区在线观看视频| 91精品欧美久久久久久动漫| 欧美一区二区三区四区在线观看| 这里只有精品99re| 精品捆绑美女sm三区| 久久综合久久综合亚洲| 国产性天天综合网| 中文字幕在线观看不卡| 夜夜夜精品看看| 男人操女人的视频在线观看欧美| 久久99国产精品久久| 国产91丝袜在线播放0| 99v久久综合狠狠综合久久| 在线观看不卡视频| 欧美高清精品3d| 精品国产乱码久久久久久免费 | 麻豆久久久久久久| 欧美女孩性生活视频| 91精品国产色综合久久| 久久久久久久久免费| 亚洲人成精品久久久久久| 日韩有码一区二区三区| 福利一区二区在线观看| 欧美三区在线视频| 久久久亚洲高清| 亚洲mv在线观看| 国产成人免费xxxxxxxx| 精品视频一区 二区 三区| 精品国偷自产国产一区| 亚洲欧美视频在线观看视频| 老司机午夜精品| 在线日韩av片| 日韩三级av在线播放| 亚洲欧美日韩国产一区二区三区| 奇米一区二区三区av| 色久优优欧美色久优优| 久久久久久久久免费| 免费在线看成人av| 一本色道**综合亚洲精品蜜桃冫| 久久久精品人体av艺术| 日本在线观看不卡视频| 欧美亚洲禁片免费| 亚洲丝袜另类动漫二区| 国产成a人无v码亚洲福利| 日韩美女在线视频| 日本不卡一区二区| 欧美视频日韩视频| 一区二区三区不卡在线观看| 不卡一区二区在线| 国产精品久久久99| 不卡的av电影| 色88888久久久久久影院按摩| 精品国产一区a| 男人的j进女人的j一区| 91精品国产美女浴室洗澡无遮挡| 一区二区三区欧美在线观看| 成人黄色片在线观看| 国产精品久久久久天堂| 成人美女视频在线观看18| 中文字幕一区二区三区在线观看| 成人激情免费视频| 国产精品乱人伦| 色综合色综合色综合| 亚洲美女视频一区| 欧美日韩在线免费视频| 国产成人免费在线观看| 欧美videossexotv100| 国产精品18久久久久久久久久久久| 337p粉嫩大胆噜噜噜噜噜91av| 国产综合久久久久久鬼色| 久久精品视频一区二区三区| 成人午夜电影网站| 一区二区高清免费观看影视大全| 欧美日韩免费电影| 蜜桃av一区二区| 亚洲国产精品ⅴa在线观看| 91热门视频在线观看| 午夜精品久久久久影视| 久久久噜噜噜久久人人看| 99天天综合性| 麻豆精品视频在线观看免费| 久久久久久影视| 色综合久久综合网97色综合| 日本va欧美va精品发布| 欧美国产精品专区| 精品视频123区在线观看| 国产一区999| 亚洲电影中文字幕在线观看| 久久奇米777| 在线不卡a资源高清| 国产成人精品综合在线观看| 亚洲成人www| 亚洲欧洲综合另类在线| 久久夜色精品国产噜噜av | 亚洲成av人片一区二区| 国产丝袜美腿一区二区三区| 欧美日韩国产小视频| 粉嫩av一区二区三区| 日韩不卡在线观看日韩不卡视频| 国产精品久久久一区麻豆最新章节| 在线不卡中文字幕播放| 91婷婷韩国欧美一区二区| 国产麻豆精品95视频| 五月天激情综合| 一区二区三区中文免费| 日本一区二区三区四区| 欧美一级片免费看| 一本一道波多野结衣一区二区| 国产宾馆实践打屁股91| 国产一区二区视频在线| 美国一区二区三区在线播放| 亚洲一二三四在线观看| 性做久久久久久免费观看| 亚洲精品日韩一| 国产精品毛片无遮挡高清| 欧美高清一级片在线观看| 精品电影一区二区| 欧美成人精精品一区二区频| 91精品啪在线观看国产60岁| 69p69国产精品| 日韩一本二本av| 欧美成人精品高清在线播放| 91精品国产麻豆| 精品蜜桃在线看| 久久久91精品国产一区二区精品| 精品国产区一区| 中文字幕欧美日本乱码一线二线| 国产精品三级电影| 亚洲日本成人在线观看| 亚洲在线观看免费| 日韩电影在线一区二区三区| 麻豆精品一二三| 国产经典欧美精品| 95精品视频在线| 精品婷婷伊人一区三区三| 欧美一级搡bbbb搡bbbb| 2023国产精华国产精品| 国产精品久久久久国产精品日日| 日韩午夜在线影院| 欧美mv日韩mv国产网站app| 久久久亚洲综合| 国产精品国产三级国产aⅴ无密码| 亚洲桃色在线一区| 免费在线成人网| 成人中文字幕电影| 欧美三级电影在线看| 精品女同一区二区| 曰韩精品一区二区| 国产精品综合av一区二区国产馆| aa级大片欧美| 日韩欧美在线不卡| 亚洲人123区| 国产一区二区91| 在线播放日韩导航| 日韩一区在线免费观看| 激情图片小说一区| 欧美精品在欧美一区二区少妇|