C++ 打印机.spl

这段代码展示了如何使用C++打开和读取打印机.SPL文件的内容,通过CreateFileMapping和MapViewOfFile函数映射文件到内存,然后解析SPL_HEADER和SMR记录,获取DEVMODE结构中的复制份数。
摘要由CSDN通过智能技术生成
// dfdDlg.cpp : implementation file
//


#include "stdafx.h"
#include "dfd.h"
#include "dfdDlg.h"
#include <io.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


#define SRT_DEVMODE           0x00000003
#define SPLMETA_SIGNATURE 0x00010000 //Version 1.0 
/*****************************************************************************
* SPL_HEADER
*----------------------------------------------------------------------------
* SPL file header for EMFSPL files
*****************************************************************************/
typedef struct tagSPLHEADER { 
    DWORD SIGNATURE; 
    DWORD nSize;            // record size INCLUDING header 
    DWORD offDocumentName;  // offset of Job Title from start 
    DWORD offPort;          // offset of portname from start
    BYTE* HeaderData; 
} SPL_HEADER, *PSPL_HEADER;


/*****************************************************************************
* SMR - Base record
*----------------------------------------------------------------------------
* Base record type for the Spool Metafile.
*****************************************************************************/
typedef struct tagSMR{ 
    DWORD iType; // Spool metafile record type 
    DWORD nSize; // length of the following data 
// NOT INCLUDING this header 
} SMR, *PSMR;


/
// CAboutDlg dialog used for App About


class CAboutDlg : public CDialog
{
public:
CAboutDlg();


// Dialog Data
//{ {AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA


// ClassWizard generated virtual function overrides
//{ {AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
//}}AFX_VIRTUAL


// Implementation
protected:
//{ {AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};


CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{ {AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}


void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值