WinAPI:PrintDIg、PrintHookProc

一、PrintDIg

    函数功能:该函数显示打印对话框或打印设置对话框。打印对话框使用户指定特殊的打印工作的特点。

    打印设置对话框不能应用在新应用程序中,它已经被PageSetupDlg函数创建的打印设置公共对话框所替代。

    函数原型:BOOL PrintDIg(LPPRINTDLG Ippd);

    参数:

    Ippd:指向一个含有初始化对话框信息的PRINTDLG结构。当PRINTDLG函数返回时,此结构含有关用户选择的信息。

    返回值:如果用户点击OK按钮,返回值为非零值。由lppd参数指向的PRINTDLG结构中的成员显示用户的选择。如果用户取消或关闭Print或PrinterSetup对话框或错误出现,返回值为零。


二、PrintHookProc

    函数功能:该挂钩函数是一个由应用程序或库定义的回调函数,此回调函数与PrintDlg函数一起使用。

    函数接收指定给Print公共对话框的缺省对话框函数的消息和通知。LPPWTHOOKPROC类型定义了一个指向此回调函数的指针。PrintHookProc为由应用程序或库定义的函数名的位置占有者。

    函数原型:UINT CALLBACK PrintHookProc(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM IParam);

    参数:

    hdlg:指向消息指定给的Print公共对话框窗口的句柄。

    uiMsg:标识接收的消息。

    wParam:指定有关消息的其他信息、精确的意义由uiMsg参数的值来决定。

    IParam:指定有关消息的其他信息、精确的意义由uiMsg参数的值来决定。

    返回值:如果挂钩函数返回值为零,缺省对话框函数处理消息;返回非零值,将忽略消息。


三、样例

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	int wmId, wmEvent;
	PAINTSTRUCT ps;
	HDC hdc;

	switch (message)
	{
	case  WM_CREATE:
		{
			
		}
		break;
	case WM_COMMAND:
		wmId    = LOWORD(wParam);
		wmEvent = HIWORD(wParam);
		// 分析菜单选择:
		switch (wmId)
		{
		case ID_TEST:
			{
				PRINTDLG pd;
			

				// Initialize PRINTDLG
				ZeroMemory(&pd, sizeof(PRINTDLG));
				pd.lStructSize = sizeof(PRINTDLG);
				pd.hwndOwner   = hWnd;
				pd.hDevMode    = NULL;     // Don't forget to free or store hDevMode.
				pd.hDevNames   = NULL;     // Don't forget to free or store hDevNames.
				pd.Flags       = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC |PD_ENABLEPRINTHOOK; 
				pd.nCopies     = 1;
				pd.nFromPage   = 0xFFFF; 
				pd.nToPage     = 0xFFFF; 
				pd.nMinPage    = 1; 
				pd.nMaxPage    = 0xFFFF; 
				pd.lpfnPrintHook = PrintHook;
				if (PrintDlg(&pd)==TRUE) 
				{
					// GDI calls to render output. 

					// Delete DC when done.
					DeleteDC(pd.hDC);
				}

		
			}	
			break;
		default:
			{
				return DefWindowProc (hWnd, message, wParam, lParam) ;
			}
		}
		break;
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		// TODO: 在此添加任意绘图代码...
		EndPaint(hWnd, &ps);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return 0;
}



1. 该软件无须安装,直接将软件包解压缩到一个目录下,运行PrinterMon.exe程序即可。 2. 如果需要该程序随系统启动而自动启动,则在软件的“打印机列表”节点下, 勾选“用户登录系统后自动运行打印机监视程序”项即可。 3. 该软件除了可以监视本地的打印机之外,还可以监视网络中其他共享的打印机。 只要利用“添加打印机”中提供的三种方法之一枚举相关的打印机, 添加到监控的打印机列表中即可。 4. 监控网络上的打印机时,要提供正确的登录认证设置,保证网络可连通并具有合适的权限。 5. 注意防火墙的设置,保证可以正常访问网络上的打印机。 6. 该软件为完全免费,除软件主窗口下部的信息区会尝试连接我们的网站 (http://www.3000soft.net)获取最新产品资料之外,不含有任何收集用户资料或其它恶意的代码。 任何情况下,我们都不为可能造成的任何可以预见或不可预见的损失承担责任。 如果您持有怀疑或担心,请选择不运行此软件,立即删除这些文件。 7. 该软件主要为企业管理者提供打印机、纸张、文件档案等公司资源的监控服务。 因为网络和系统的复杂性,监视到的打印作业资料不表示一定准确,请不要盲目地 依此作出什么结论性的判断。 8. 请不要超越您自己的权限与职责的范围去使用该软件,使用该软件的一切可能后果请自负。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值