精选C 程序中动态增加更新自定义纸型的方法.doc

精选C 程序中动态增加更新自定义纸型的方法.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精选C 程序中动态增加更新自定义纸型的方法

窗体顶端 解决在C#程序中动态?增加/更新自定义?纸型的方法? ??? 解决打印时?,程序中动态?添加纸型的?问题是C#中常见的难?题,为了避免大?家也走我一?样的弯路,特将我的解?决过程分享?出来。 ??? 在写过大量?C#代码后,大家都有一?种同感,C#类库功能极?其强大,但总有部分?不足。 在前不久,为了满足众?多客户对打?印格式和纸?型要求并不?完全一致的?需求,花了N个夜?晚做了个的?自定义套打?的工具集,主要功能包?括:定制数据源?(由朋友/windc?sn/完成),根据数据源?定制打印模?板,根据打印模?板和数据源?参数进行打?印。 ??? 当然这里的?重点不是说?明该程序的?功能。这里是说明?如何在C#中更有效的?方法增加自?定义纸型。 ??? 刚开始我所?想到的方法?应当是大家?都能想到的?方法:就是使用D?llImp?ort. ??? 经过多次寻?找,我找到了一?个专门提供?系统API?在VB/VB.net/C#中使用的网?址: ??? http://www.webtr?/artic?les/art9-1.asp ??? 在这里提供?了AddF?orm,Delet?eForm?等打印专用?的API的?DllIm?port方?法, ??? 同时参考在?微软网站上?的打印纸型?增加的方法?: ????如何在 Windo?ws NT 和 Windo?ws 2000 中使用自定?义页面大小?打印 ???? ??? 文章内代码?全是VB写?的,无法在C#中直接使用?,怎么办呢?改造成C#吧。 ??? 接下来就是?改造过程,有一大堆的?结构体要转?换,还有一大堆?的API要?定义。苦啊,也罢问题能?解决不就得?了。 ??? 等等。这里有这么?两段: ?? Call CopyM?emory?(aFI1(0), Temp(0), Bytes?Neede?d) ?? Call CopyM?emory?(aDevM?ode(1), pDevM?ode, Len(pDevM?ode)) ??? 晕,如何转Co?pyMem?ory呢?在C++中使用指针?对我来说,并没有什么?困难,但在C#中,想使用指针?还真费手脚?。继续还是放?弃? ??? 暂时放弃吧?,原因是VB?也可以写C?OM的。而COM在?C#中使用比较?简单,说干就干,开始使用M?S的代码用?VB写AT?L控件,忙了半天,终于出来了?,呵呵,主要是删截?代码。 ???在C#中成功引用?,并写出使用?的代码,结果提示说?类型不匹配??什么地方类?型不匹配呢??无法跟踪,痛苦。再次放弃。 ??? 重新回到C?#的DllI?mport?上,研究Int?Ptr等,结果还是有?种很难受的?感觉。怎么办呢?郁闷了两天?,那两天可是?周末的两天?啊。 ??? 经过两天痛?苦之后,周一时重新?理了下思路?,还是从CO?M的路。不过换方向?,使用VC++吧。 ??? 先定义了三?个方法: ??? Add,Remov?e,Updat?e,对我来说这?三个方法已?经足够了 ??? Add用于?增加纸型,Remov?e用于删除?纸型,Updat?e当然是更?新纸型大小?了。 ??? 用C++写起来就是?爽啊。很快几个方?法就写好了?。 ??? 放在C#代码中一试?,增加纸型成?功。 ????在打印机的?纸型列表中?一看,没有?真是奇怪了?。这是怎么回?事呢? ????查询MSD?N中关于F?ORM_I?NFO_1?的说明, ??? pName? Point?er to a null-termi?nated? strin?g that speci?fies the name of the form. Size Speci?fies the width? and heigh?t, in thous?andth?s of milli?meter?s, of the form. Image?ableA?rea Speci?fies the width? and heigh?t, in thous?andth?s of milli?meter?s, of the form. ????? 原来如此,我使用的代?码中定义的?自以为是1?/100英寸?为单位的,因为C#类中说明P?ageSi?ze的大小?是以1/100吋为?单位的。这里尽然是?1/1000毫?米,真是气坏我?了。 到此,问题全部解?决,纸型定义成?功。 ???? 部分代码: ????? ??1//?Paper?.cpp?:?CPape?r?的实现 ??2 ??3#inclu?de?stdaf?x.h ??4#inclu?de?Paper?.h ??5#inclu?de?.\paper?.h ??6#inclu?de

文档评论(0)

rovend + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档