大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 在VB中调用API函数动态改变及恢复屏幕设置

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

时间: 2021-07-31 作者:daque

作家:王志红 对于windows平台,表露器的辨别率和脸色数很要害,更加是对于多媒介运用软硬件和游戏软硬件。但很多情景下,用户暂时的屏幕树立并不符合软硬件的运转须要。软硬件常常的做法是提醒用户将屏幕树立到软硬件诉求的辨别率及脸色数,再从新启用软硬件。如许无疑会减少普遍用户操纵上的承担和艰巨,贬低了软硬件的和睦性和易用性。---- 理念的作法是:在软硬件发端时,动静的变换屏幕树立来到达软硬件运转的诉求。在软硬件运转中断后,再机动把屏幕树立改回从来的树立值。这十足进程都在人不知,鬼不觉中实行。这一做法不妨经过在vb中挪用api(运用步调接口)因变量做到。实行本领如次:---- 一、翻开一个规范的exe工程。---- 二、在“工程”菜单栏下,采用“增添模块”,为工程增添一个模块。---- 并在模块中增添如次代码:‘---------------以次代码用来获得屏幕的树立参数--------------declare function getdevicecaps lib"gdi32" (byval hdc as long,byval nindex as long) as long‘取指定摆设消息api因变量public const horzres = 8‘三个屏幕恒量public const vhorzres = 10public const bitspixel = 12‘---------------经过字符copy举行数据典型变换--------------private declare function lstrcpy lib "kernel32"alias "lstrcpya" (lpstring1 as any, lpstring2 as any) as long‘------------------以次构造用来屏幕的初始化-----------------const cchdevicename = 32const cchformname = 32private type devmodedmdevicename as string * cchdevicenamedmspecversion as integerdmdriverversion as integerdmsize as integerdmdriverextra as integerdmfields as longdmorientation as integerdmpapersize as integerdmpaperlength as integerdmpaperwidth as integerdmscale as integerdmcopies as integerdmdefaultsource as integerdmprintquality as integerdmcolor as integerdmduplex as integerdmyresolution as integerdmttoption as integerdmcollate as integerdmformname as string * cchformnamedmunusedpadding as integerdmbitsperpel as integerdmpelswidth as longdmpelsheight as longdmdisplayflags as longdmdisplayfrequency as longend type‘------------------树立屏幕的中心api-----------------private declare function changedisplaysettingslib "user32" alias "changedisplaysettingsa"(byval lpdevmode as long, byval dwflags as long) as long‘------------------树立屏幕的因变量-----------------public function setdispmode(width as integer,height as integer, color as integer) as long(setdispmode是本人结构的变动屏幕树立的因变量来,它的三个参数width、height和color辨别是屏幕的横向辨别率、纵向辨别率,脸色位数,其值可为24,16,0等。0为原有脸色树立。)const dm_pelswidth = &h80000const dm_pelsheight = &h100000const dm_bitsperpel = &h40000dim newdevmode as devmodedim pdevmode as longwith newdevmode.dmsize = 122if color = 0 then‘即使color=0则只变换屏幕的辨别率,而不变换颜色。.dmfields = dm_pelswidth or dm_pelsheightelse‘即使color不等0则变换屏幕的辨别率和颜色。.dmfields = dm_pelswidth or dm_pelsheight or dm_bitsperpelend if.dmpelswidth = width.dmpelsheight = heightif color < > 0 then.dmbitsperpel = colorend ifend withpdevmode = lstrcpy(newdevmode, newdevmode)‘获得一个指向newdevmode构造的long型的南针。changedisplaysettings pdevmode, 0end function---- 三、在工程窗体中,介入两个按钮command1和command2,其caption属性辨别为“800x600x16”和“恢恢复树立”。---- 其步调代码为:‘窗口的“通用|证明”区option explicitdim h, v, color as long’申明变量,用来生存首先屏幕树立private sub form_load()‘---------------以次代码用来获得首先的屏幕摆设--------------h = getdevicecaps(form1.hdc, horzres)v = getdevicecaps(form1.hdc, vhorzres)color = getdevicecaps(form1.hdc, bitspixel)end subprivate sub command1_click()‘挪用setdispmode因变量变换屏幕树立setdispmode 800, 600, 16end subprivate sub command2_click()‘回复首先屏幕树立setdispmode cint(h), cint(v), cint(color)end sub---- 四、将步调编写翻译实行。---- 本步调实行后,即使单击command1,则您的计划机屏幕表露形式将被树立为“800x600x16”的表露形式;即使单击command2, 则您的计划机屏幕表露形式将被树立为从来的表露形式。此步调稍加窜改,即可安置于桌面或工作栏中,径直赶快的窜改屏幕树立。 

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.