爱飞 发表于 2015-2-16 00:24:31

ASP网页设计VC打印理论浅谈

ASP脚本是采用明文(plain text)方式来编写的。打印   常常看到VC服装论坛中一些伴侣问关于打印的成绩,很多多少是问过很多多少遍的,其实搜刮一下本来的帖子可以找到很多多少,并且都是给了准确的处理办法的。但我搜了一下文档中间,发明好象关于一下我要讲的内容的还没有。所以我决意把本人在做法式时碰到的成绩,及完成办法和心得体味写上去,重在交换。文中若有疏漏的地方,请列位伴侣实时指出,以避免我落个误人误己的下场。

在做打印模块时,常常会出于分歧的目标改动打印机的默许设置装备摆设。关于打印机设置装备摆设最主要的一个布局就是DEVMODE布局(布局的详细组成请MSDN),该布局中几近包括了打印机的一切设置装备摆设信息。上面将给出几个常常要用到的设置装备摆设项的完成。

PRINTDLG pd; //该布局包括打印对话框中的一切信息
LPDEVMODE lpDevMode;
if(AfxGetApp()->GetPrinterDeviceDefaults(&pd)) //取得默许的打印机的信息
{
lpDevMode=(LPDEVMODE)GlobalLock(pd.hDevMode);
if(lpDevMode)
{
lpDevMode->dmPaperSize=DMPAPER_A4; //将打印纸设置为A4
lpDevMode->dmOrientation=DMORIENT_LANDSCAPE; //将打印机设置为横向打印。
lpDevMode->dmPrintQuality=600 //打印分辩率为600dpi
}
GlobalUnlock(pd.hDevMode);
}

其实,看看MSDN中DEVMODE布局的文档,套用下面这个形式,你就能够随意设置装备摆设你的打印机了。假如你想设置装备摆设完成后,还为用户显示打印对话框的话。可以将pd交换为printDlg.m_pd,固然你要事前界说printDlg。完成言语为“CPrintDialog printDlg(FALSE);”。

上面要讲的内容才是我要写本文的初志,这是我方才处理的成绩,在网上贴帖子没有人能回覆的出,所以将它写出来同列位伴侣同享。

我写的打印法式,在我的机械上打印正常,可是到了某些机械上打印就不正常了,打印的字体比我的大,全部版面都乱了。这下我可给弄懵懂了,同是一台打印机,法式中我也设置了映照形式为MM_TEXT,怎样能够呈现这类情形呢?后来同事发明了成绩的地点,由于打印时采取的分辩率分歧。因为咱们分歧的机械上装的是分歧版本的打印驱动法式,他们默许的打印分辩率也不不异。我的机械上的打印驱动默许的是1200dpi的分辩率,而出成绩的打印机的分辩率为600dpi。所以打出来的字体比本来大了两倍。上面我来剖析一下缘由:
WINDOWS中的字体的高度,宽度是用逻辑单位(Logical units)来暗示的,逻辑单位自己并非一种长度单元。但字体可以经由过程它依照必定的映照形式,经由盘算后显示在分歧的装备终端上。好比:有一个高为240个逻辑单位的字体,体系的映照形式为MM_TEXT(即一个逻辑单位对应一个装备像素),那末字体在屏幕的输入为240个像素高,假如换为其他的映照形式那末它就会在屏幕输入分歧的巨细。假如咱们改动了显示器的分辩率,将它的分辩率调高,响应的每一个像素巨细就会变小。那末再依照MM_TEXT映照形式,将字体显示在显示器上,那末此时字体也会比方才看着小。

一样,这中情形也适于打印机,打印机的装备像素是点。1200dpi暗示打印机每英寸可以打1200个点。600dpi暗示每英寸可以打600个点。明显关于任何字体,在分辩率为600dpi的打印机上打印的巨细是在1200dpi分辩率打印机上打印巨细的两倍。所觉得了处置这个成绩我设置了一个打印系数,关于一切的打印排版所用的
参数都乘以这个系数,如许成绩就水到渠成了。上面是失掉打印系数的完成:

#define PRINT_DPI_DEFAULT 1200 //我调好的法式分辩率为1200dpi
m_fXCoefficient=1;//初始化打印系数

PRINTDLG pd;
LPDEVMODE lpDevMode;
double fXDPI=PRINT_DPI_DEFAULT; //

CPrintDialog printDlg(FALSE);

if(AfxGetApp()->GetPrinterDeviceDefaults(&pd))
{
lpDevMode=(LPDEVMODE)GlobalLock(pd.hDevMode);
if(lpDevMode)
{
lpDevMode->dmPaperSize=DMPAPER_A4;
}
GlobalUnlock(pd.hDevMode);
}

printDlg.m_pd.hDevMode=pd.hDevMode;

if (printDlg.DoModal() == IDCANCEL)
return;

fXDPI=(double)lpDevMode->dmPrintQuality;
if(fXDPI>0)
{
m_fXCoefficient=fXDPI/PRINT_DPI_DEFAULT;
}

唉!自己汉语才能无限,只能写成如许了,望列位伴侣不要见责!!!
</p>asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。

蒙在股里 发表于 2015-2-26 10:33:48

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

小魔女 发表于 2015-3-1 01:27:49

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

第二个灵魂 发表于 2015-3-10 11:13:31

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

小妖女 发表于 2015-3-11 06:20:43

如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。

飘灵儿 发表于 2015-3-17 22:10:20

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件

活着的死人 发表于 2015-3-25 03:35:08

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

兰色精灵 发表于 2015-3-31 21:12:53

ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。

因胸联盟 发表于 2015-4-14 07:06:46

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

精灵巫婆 发表于 2015-5-1 19:09:23

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

爱飞 发表于 2015-5-2 13:24:42

运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。

愤怒的大鸟 发表于 2015-5-6 16:56:26

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

柔情似水 发表于 2015-5-11 17:29:50

掌握asp的特性而且一定要知道为什么。

只想知道 发表于 2015-5-12 04:43:42

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

小女巫 发表于 2015-6-15 14:13:44

那么,ASP.Net有哪些改进呢?

乐观 发表于 2015-6-24 21:54:28

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

透明 发表于 2015-6-27 22:02:46

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。

冷月葬花魂 发表于 2015-6-30 00:31:04

不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍

莫相离 发表于 2015-7-9 23:23:04

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
页: [1]
查看完整版本: ASP网页设计VC打印理论浅谈