电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 操作系统-> Windows xp教程
在vb中调用api函数动态改变及恢复屏幕设置_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
对于Windows平台,显示器的分辩率和颜色数很重要,尤其是对于多媒体应用软件和游戏软件。但许多情况下,用户当前的屏幕设置并不适合软件的运行需要。软件通常的做法是提示用户将屏幕设置到软件要求的分辩率及颜色数,再重新启动软件。这样无疑会增加普通用户操作上的负担和困难,降低了软件的友好性和易用性。
----理想的作法是:在软件开始时,动态的改变屏幕设置来达到软件运行的要求。在软件运行结束后,再自动把屏幕设置改回原来的设置值。这一切过程都在不知不觉中完成。这一做法可以通过在VB中调用API(应用程序接口)函数做到。实现方法如下:

----一、打开一个标准的EXE工程。

----二、在“工程”菜单栏下,选取“添加模块”,为工程添加一个模块。

----并在模块中添加如下代码:

‘---------------以下代码用于得到屏幕的设置参数--------------
DeclareFunctionGetDeviceCapsLib
"gdi32"(ByValhdcAsLong,
ByValnIndexAsLong)AsLong
‘取指定设备信息API函数
PublicConstHORZRES=8
‘三个屏幕常量
PublicConstVHORZRES=10
PublicConstBITSPIXEL=12
‘---------------通过字符COPY进行数据类型转换--------------
PrivateDeclareFunctionlstrcpyLib"kernel32"
Alias"lstrcpyA"(lpString1AsAny,lpString2AsAny)AsLong
‘------------------以下结构用于屏幕的初始化-----------------
ConstCCHDEVICENAME=32
ConstCCHFORMNAME=32

PrivateTypeDEVMODE
dmDeviceNameAsString*CCHDEVICENAME
dmSpecVersionAsInteger
dmDriverVersionAsInteger
dmSizeAsInteger
dmDriverExtraAsInteger
dmFieldsAsLong
dmOrientationAsInteger
dmPaperSizeAsInteger
dmPaperLengthAsInteger
dmPaperWidthAsInteger
dmScaleAsInteger
dmCopiesAsInteger
dmDefaultSourceAsInteger
dmPrintQualityAsInteger
dmColorAsInteger
dmDuplexAsInteger
dmYResolutionAsInteger
dmTTOptionAsInteger
dmCollateAsInteger
dmFormNameAsString*CCHFORMNAME
dmUnusedPaddingAsInteger
dmBitsPerPelAsInteger
dmPelsWidthAsLong
dmPelsHeightAsLong
dmDisplayFlagsAsLong
dmDisplayFrequencyAsLong
EndType
‘------------------设置屏幕的核心API-----------------
PrivateDeclareFunctionChangeDisplaySettings
Lib"User32"Alias"ChangeDisplaySettingsA"
(ByVallpDevModeAsLong,ByValdwflagsAsLong)AsLong
‘------------------设置屏幕的函数-----------------
PublicFunctionSetDispMode(WidthAsInteger,
HeightAsInteger,ColorAsInteger)AsLong
(SetDispMode是自己构造的更改屏幕设置的函数来,
它的三个参数Width、Height和Color分别是屏幕的横向分辨率、
纵向分辨率,颜色位数,其值可为24,16,0等。0为原有颜色设置。)
ConstDM_PELSWIDTH=&H80000
ConstDM_PELSHEIGHT=&H100000
ConstDM_BITSPERPEL=&H40000
DimNewDevModeAsDEVMODE
DimpDevmodeAsLong
WithNewDevMode
.dmSize=122
IfColor=0Then
‘如果Color=0则只改变屏幕的分辨率,而不改变色彩。
.dmFields=DM_PELSWIDTHOrDM_PELSHEIGHT
Else
‘如果Color不等0则改变屏幕的分辨率和色彩。
.dmFields=DM_PELSWIDTHOrDM_PELSHEIGHTOrDM_BITSPERPEL
EndIf
.dmPelsWidth=Width
.dmPelsHeight=Height
IfColor<>0Then
.dmBitsPerPel=Color
EndIf
EndWith
pDevmode=lstrcpy(NewDevMode,NewDevMode)
‘得到一个指向NewDevMode结构的Long型的指针。
ChangeDisplaySettingspDevmode,0
EndFunction

----三、在工程窗体中,加入两个按钮Command1和Command2,其Caption属性分别为“800x600x16”和“恢复原设置”。

----其程序代码为:

‘窗口的“通用|声明”区
OptionExplicit
DimH,V,ColorAsLong
声名变量,用于保存最初屏幕设置
PrivateSubForm_Load()
‘---------------以下代码用于得到最初的屏幕设备--------------
H=GetDeviceCaps(Form1.hdc,HORZRES)
V=GetDeviceCaps(Form1.hdc,VHORZRES)
Color=GetDeviceCaps(Form1.hdc,BITSPIXEL)
EndSub

PrivateSubCommand1_Click()
‘调用SetDispMode函数改变屏幕设置
SetDispMode800,600,16
EndSub

PrivateSubCommand2_Click()
‘恢复最初屏幕设置
SetDispModeCint(H),Cint(V),Cint(Color)
EndSub

----四、将程序编译执行。

----本程序执行后,如果单击Command1,则您的计算机屏幕显示模式将被设置为“800x600x16”的显示模式;如果单击Command2,则您的计算机屏幕显示模式将被设置为原来的显示模式。此程序稍加修改,即可放置于桌面或任务栏中,直接快捷的修改屏幕设置。->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·photoshop教程给照片调出亮丽的色彩_photoshop教程
·数据访问控制--多客户环境下vb数据库编程之(2)_visualbasic教程
·关于vb语言和怎样学习vb_visualbasic教程
·利用timegettime函数更精准地计算差_visualbasic教程
·利用pictureclip进行图像局部处理_visualbasic教程
·在vb中调用api函数动态改变及恢复屏幕设置_visualbasic教程
·如何在vb中判断windows9x的运行模式_visualbasic教程
·固定长度字符串数组:赋值快,释放快!_visualbasic教程
·给图形对象赋予材质_autocad教程
·网络广告首超杂志 房地产和it居投放量之首_it动态

最新文章
·photoshop照片处理:色彩的强化及优化_photoshop教程
·photoshop cs3新增黑白转换命令原理剖析_photoshop教程
·photoshop“非主流”照片文字合成表现手法_photoshop教程
·php的xml分析函数_php技巧
·php对文本数据库的基本操作方法_php技巧
·加速你的windows xp搜索功能的巧妙方法_windows xp
·用photoshop打造奥运五环金属标牌_photoshop教程
·photoshop将模糊照片变得清晰艳丽_photoshop教程
·用photoshop打造美丽的圣诞大头贴_photoshop教程
·photoshop特效实例制作:瑰丽晚霞_photoshop教程


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号