| 网站首页 | 硬件维修 | 应用学院 | 网络组建 | 网站制作 | 菜鸟黑客 | 编程之道 | 数码大全 | 娱乐休闲 | 软件下载 | 在线视频 | 请您留言 | 技术论坛 | 
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
  • VC使用CRT调试功能检测内存泄…

  • VB中资源文件的多种使用技巧

  • 探索VB系列中的事件处理的奥…

  • NHibernate: One-to-Many一对…

  • VB.net中访问存储过程的几种…

  • 用Visual Basic做列表框的应…

  • 关于用VB做更漂亮的窗体的思…

  • 设置VB数据库连接的动态路…

  • 调整 Combo 下拉部分的宽度

  • 改变ListIndex而不发生Click…

  • Q
    您现在的位置: 我是IT人 >> 编程之道 >> VB >> 编程文章正文
    VB利用API函数设定屏幕颜色数         
    VB利用API函数设定屏幕颜色数
    作者:fyf 文章来源:转 点击数: 更新时间:2005-7-14
    [ 字体:缩小 正常 放大 | 双击自动滚屏 ]
    请选择合适的字体颜色:
      原则上,只改这一次,下一次开机会还原,但如果需重开机,才会Update Registry中的设定,并重开机。

      如果要永久设定其设定值,请将

      

      b = ChangeDisplaySettings(DevM, 0)

      改成

      

      b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)

      注:

      DevM.dmBitsPerPel 便是设定颜色数,其实应说每个Pixel要多少Bits来显示

      4 --> 16色

        8 --> 256色

        16 --> 65536色 以此类推

      Option Explicit

      Private Declare Function EnumDisplaySettings Lib "user32" Alias _

      "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _

      ByVal iModeNum As Long, lpDevMode As Any) As Long

      

      Private Declare Function ChangeDisplaySettings Lib "user32" Alias _

      "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long

      Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _

      ByVal dwReserved As Long) As Long

      

      Const EWX_REBOOT = 2 ’ 重开机

      Const CCDEVICENAME = 32

      Const CCFORMNAME = 32

      

      Const DM_BITSPERPEL = &H40000

      Const DISP_CHANGE_SUCCESSFUL = 0

      Const DISP_CHANGE_RESTART = 1

      Const CDS_UPDATEREGISTRY = 1

      Private Type DEVMODE

      dmDeviceName As String * CCDEVICENAME

      dmSpecVersion As Integer

      dmDriverVersion As Integer

      dmSize As Integer

      dmDriverExtra As Integer

      

      dmFields As Long

      dmOrientation As Integer

      dmPaperSize As Integer

      dmPaperLength As Integer

      dmPaperWidth As Integer

      dmScale As Integer

      dmCopies As Integer

      dmDefaultSource As Integer

      dmPrintQuality As Integer

      dmColor As Integer

      dmDuplex As Integer

      dmYResolution As Integer

      dmTTOption As Integer

      dmCollate As Integer

      

      dmFormName As String * CCFORMNAME

      dmUnusedPadding As Integer

      dmBitsPerPel As Integer

      dmPelsWidth As Long

      dmPelsHeight As Long

      dmDisplayFlags As Long

      dmDisplayFrequency As Long

      End Type

      Private DevM As DEVMODE

      Private Sub Command1_Click()

      Dim a As Boolean

      Dim i As Long

      Dim b As Long

      Dim ans As Long

      a = EnumDisplaySettings(0, 0, DevM) ’Initial Setting

      DevM.dmBitsPerPel = 8 ’设定成256色

      DevM.dmFields = DM_BITSPERPEL

      b = ChangeDisplaySettings(DevM, 0)

      If b = DISP_CHANGE_RESTART Then

       ans = MsgBox("要重开机设定才能完成,重开?", vbOKCancel)

       If ans = 1 Then

        b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)

        Call ExitWindowsEx(EWX_REBOOT, 0)

       End If

      Else

       If b <> DISP_CHANGE_SUCCESSFUL Then

        Call MsgBox("设定有误", vbCritical)

       End If

      End If

      End Sub
    编程文章录入:fyf    责任编辑:fyf 
  • 上一篇编程文章:

  • 下一篇编程文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 关于我们 | 友情链接 | 版权申明 |