由于工作上的需求,要求在打印驱动内截获打印的文本数据。因此有了下文。
以DDK里的OEMDLL/Bitmap为基础,通过OEMTextOut函数,在此函数内实现文本数据的截获。其中,文本数据包含于参数pstro->pwszOrg内,但这些数据是以宽字符保存的,所以可以用WideCharToMultiByte来转换,例如:
dwlen = WideCharToMultiByte(CP_ACP, 0, pstro->pwszOrg, pstro->cGlyphs, NULL, 0, NULL, FALSE); pBuf = new char[dwlen]; WideCharToMultiByte(CP_ACP, 0, pstro->pwszOrg, pstro->cGlyphs, pBuf, dwlen, NULL, FALSE);
而文本数据在图片上的位置则保存在另一个参数内,即pstro->rcBkGroud.
暂时写到这,后继的还在继续研究中。。。
在保存文件时,用了一个全局变量来保证每次打印的数据保存为某一个文件.但全局变量每次都被初始化,所以文件名始终为一个.后来,用时间来作为文件名.