rt
解决方案 »
- vc程序如何运行winrar?
- 我想响应用户在clist control列表中单击其中一项的消息.我该怎么做?
- 使用VC6现在有一个几十万行的大程序,打开以后WorkSpace是空的,出现灰蒙蒙的,没有class的树形结构,resourceview fileview 也没有?
- 我很失望啊!
- VC新手问个小问题。。。。
- 请教ifstream怎么用???
- 为什么我的代码产生的随机数(需要0~1之间)总是在0.9左右
- 100分问题!关于文件关联
- 关于windows touch gesture的问题
- 之前都好好地,今天突然编译的dll 在别的电脑上Loadlibrary报14001
- 两维的动态数组怎么定义?(如果每个元素是一个指针或者一个结构时怎么写)
- 为什么2000下开发的程序(用到了ADO)到98就不好用了,我是在98下编译连接也不好用
2.CreateFont function's nHeight, // height of fontall is logical ;
使用GetDeviceCaps函数可得到当前设备的各种能力,其第一个参数nIndex指示要获取信息的类型。当nIndex为HORZSIZE和VERTSIZE时,可得到显示区域的宽度和高度;当nIndex 为HORZRES和VERTRES时,可得到每个水平和垂直方向的像素数即分辨率;当nIndex的值为LOGPIXELSX 和LOGPIXELSY时,可得到水平和垂直方向每逻辑英寸所含像素数。
在介绍了逻辑英寸的知识以后,很容易将OLEServer设置为基于逻辑英寸的映射模式。如果程序员仅仅调用SetMapMode(hdc,MM_LOENGLISH)来设置映射模式,当前的映射模式为物理英寸,而不是逻辑英寸。设置逻辑英寸必须自定义窗口和视口的范围,使xViewExt/xWinExt =0.01逻辑英寸中水平像素的点数,当xViewExt=LOGPIXELSX,xWinExt=100时,其比值正好满足上述要求。
以下是设置映射模式的代码。
intxLogPixPerInch=GetDeviceCaps(hdc,LOGPIXELSX);
intyLogPixPerInch=GetDeviceCaps(hdc,LOGPIXELSY);
SetMapMode(MM_ANISOTROPIC);
SetWindowExt(100,100);
SetViewportExt(xLogPixPerInch,yLogPixPerInch);
上述代码中调用SetMapMode函数将映射模式设置为自定义的,该调用必须位于SetWindowExt 和SetViewportExt调用之前,否则设置将会无效。
上述代码实际上将映射模式设置成逻辑MM_LOENGLISH,若程序员需要设置逻辑MM_LOMETRIC、MM_HIMETRIC、MM_HIENGLISH 或MM_TWIPS,只需修改上述代码中的SetWindowExt的参数,该参数实际上是每英寸所包含的各种映射模式下的单位数。根据表1中各映射模式的参数,可得到表2中每英寸所对应的各逻辑单位的个数。
???????http://community.csdn.net/Expert/topic/3713/3713476.xml?temp=5.346316E-02
http://community.csdn.net/Expert/topic/3496/3496925.xml?temp=.65469
http://community.csdn.net/Expert/topic/3446/3446240.xml?temp=.2289545
http://community.csdn.net/Expert/topic/3446/3446232.xml?temp=.3165399