网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.做个“网络助手”程序.
.让VB在程序中显示错误行.
.用WinSock设计Chat程序.
.电影结束画面的卷动效果.
.变量的作用域与存活期.
.怎样在VB中控制Word.
.用VB6.0编写电脑抽奖程序.
.一个自动更换墙纸的小软件.
.用API函数控制光驱的开关.
.复制字符串中的字符.
.VB中实现同一窗口的多个实例及控.
.记录集锁定--多客户环境下VB数据.
.VB中注册控件的三种简单方法.
.多用户应用程序中应注意的其它问.
.用VB获取桌面图象.
.字符串的一些操作.
.利用子类处理技术限制窗体的大小.
.用VB6读写数据库中的图片.
.如何用VB访问外来数据库.
.减少DoEvents语句的数量.

在VB中调用API函数动态改变及恢复屏幕设置

发表日期:2006-2-27


对于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,则您的计算机屏幕显示模式将被设置为原来的显示模式。此程序稍加修改,即可放置于桌面或任务栏中,直接快捷的修改屏幕设置。->

上一篇:怎样用VB在应用程序中调用API 人气:3602
下一篇:如何提高调用WindowAPI函数编程技巧 人气:3454
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐