国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
利用VB動(dòng)態(tài)改變Windows顯示模式的兩種方法 - 水木森林(專業(yè)電腦教程網(wǎng))|itus...
在Windows系統(tǒng)中,系統(tǒng)提供了用于動(dòng)態(tài)改變屏幕分辨率和顯示顏色數(shù)的API函數(shù)。在這篇文章中,我將介紹使用兩種方法改變Windows的顯示模式。

 

  要改變顯示模式,首先要獲得顯示系統(tǒng)支持的顯示模式。顯示系統(tǒng)支持的所有的顯示模式是利用API函數(shù)EnumDisplaySettings獲得的。然后有兩種方法切換顯示模式,一種是利用Windows API函數(shù)ChangeDisplaySettings另外一種方法是利用Windows附帶的一個(gè)QuickRES庫,通過調(diào)用QuickRES庫實(shí)現(xiàn)顯示模式的切換。

  首先在VB中建立一個(gè)工程文件,然后在Form1中加入一個(gè)ListBox控件和兩個(gè)CommandButton控件,然后在Form1的代碼窗口中加入以下代碼:

  Option Explicit

  Private Type RECT

   Left As Long

   Top As Long

   Right As Long

   Bottom As Long

  End Type

  Private Declare Function ChangeDisplaySettings Lib “user32" Alias “ChangeDisplaySettingsA" _

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

  Private Declare Function EnumDisplaySettings Lib“user32" Alias“EnumDisplaySettingsA" _

  (ByVal lpszDeviceName As String, ByVal iModeNum As Long, lpDevMode As Any) As Long

  Private Declare Function SendMessageByLong& Lib“user32" Alias“SendMessageA" _

  (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)

  Private Declare Function InvalidateRect Lib “user32" (ByVal hwnd As Long, lprect As Any, _

   ByVal bErase As Long) As Long

  Private Declare Function PostMessage Lib “user32" Alias “PostMessageA" (ByVal hwnd As Long, _

  ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

  Private Type DEVMODE

  dmDeviceName As String * 32

  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(1 To 32) As Byte

  dmLogPixels As Integer

  dmBitsPerPel As Long

  dmPelsWidth As Long

  dmPelsHeight As Long

  dmDisplayFlags As Long

  dmDisplayFrequency As Long

  dmICMMethod As Long

  'Windows 95 only

  dmICMIntent As Long

  ’ Windows 95 only

  dmMediaType As Long

  ' Windows 95 only

  dmDitherType As Long

  ' Windows 95 only

  dmReserved1 As Long

  ' Windows 95 only

  dmReserved2 As Long

  ' Windows 95 only

  End Type

  Const DM_BITSPERPEL = &H40000

  Const DM_PELSWIDTH = &H80000

  Const DM_PELSHEIGHT = &H100000

  Const DM_DISPLAYFLAGS = &H200000

  Const DM_DISPLAYFREQUENCY = &H400000

  Const DISP_CHANGE_SUCCESSFUL = 0

  Const DISP_CHANGE_RESTART = 1

  Const DISP_CHANGE_FAILED = -1

  Const DISP_CHANGE_BADMODE = -2

  Const DISP_CHANGE_NOTUPDATED = -3

  Const DISP_CHANGE_BADFLAGS = -4

  Const DISP_CHANGE_BADPARAM = -5

  Const CDS_UPDATEREGISTRY = 1

  Const CDS_FORCE As Long = &H80000000

  Const CDS_RESET = &H40000000

  Const HWND_BROADCAST = &HFFFF&

  Const WM_SYSCOLORCHANGE = &H15

  Const WM_PALETTECHANGED = &H311

  Const WM_DISPLAYCHANGE = &H7E

  Const WM_SETTINGCHANGE = &H1A

  Dim ModeCube(63) As DEVMODE

  Dim lproc As Long

  Sub EndApp()

  Icon_Del (Form1.Command1.hwnd)

  End

  End Sub

  Sub ShowIcon()

  Dim l As Long

  If (Icon_Add(Form1.Command1.hwnd, Form1.Picture)) Then

  lproc = SetWindowLong(Form1.Command1.hwnd, GWL_WNDPROC, AddressOf DialogProc)

  Else

  MsgBox (“無法建立程序圖標(biāo)!")

  End

  End If

  End Sub

  Sub LoadDisplayMode()

  Dim i As Long

  Dim l1 As Long

  Dim astr As String

  i = 0

  '遍歷所有的顯示模式并在List1中顯示出來

  Do

  ModeCube(i).dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT Or _

  DM_DISPLAYFLAGS Or DM_DISPLAYFREQUENCY

  ModeCube(i).dmSize = Len(ModeCube(i))

  '獲得顯示模式并保存到數(shù)組中

  l1 = EnumDisplaySettings(vbNullString, i, ModeCube(i))

  If l1 Then

  astr = Str$(ModeCube(i).dmPelsWidth) + “*" + Trim$(Str$(ModeCube(i).dmPelsHeight)) +“ "

  Select Case ModeCube(i).dmBitsPerPel

  Case 4

  astr = astr + “16色"

  Case 8

  astr = astr + “256色"

  Case 16

  astr = astr +“16位高彩"

  Case 24

  astr = astr + “24位真彩"

  Case Else

  astr = astr + Str$(ModeCube(i).dmBitsPerPel)

  End Select

  i = i + 1

  End If

  List1.AddItem astr

  Loop Until (l1 = False) '獲得最后一個(gè)顯示模式之后EnumDisplaySettings會(huì)返回False

  End Sub

  Private Sub Command1_Click()

  Dim aDev As DEVMODE

  Dim b, xxa, xxb, xxc, xxd As Long

  If List1.ListIndex < 0 Then Exit Sub

  aDev = ModeCube(List1.ListIndex)

  'CDS_FORCE在Microsoft的開發(fā)文檔中沒有說明

  b = ChangeDisplaySettings(aDev, CDS_FORCE)

  '改變完顯示模式設(shè)置之后向所有的窗口發(fā)送顯示模式改變消息

  xxc= Send Message ByLong(HWND_BROADCAST, WM_SYSCOLORCHANGE, 0&, 0&)

  xxa = SendMessageByLong(HWND_BROADCAST, WM_PALETTECHANGED, Me.hwnd, 0&)

  xxb = PostMessage(HWND_BROADCAST, WM_SYSCOLORCHANGE, 0&, 0&)

  xxd = InvalidateRect(0&, ByVal 0, 1&)

  End Sub

  Private Sub Command2_Click()

  Dim aDev As DEVMODE

  Dim tempVar As String

  Dim RetVal

  Dim shellString As String

  If List1.ListIndex < 0 Then Exit Sub

  aDev = ModeCube(List1.ListIndex)

  tempVar = LTrim$(Str(aDev.dmPelsWidth)) + “x" + LTrim$(Str(aDev.dmPelsHeight)) +

  “x" + LTrim$(Str(aDev.dmBitsPerPel))

  Debug.Print tempVar

  shellString =“Rundll.exe DeskCp16.dll,QUICKRES_RUNDLLENTRY "

  shellString = shellString + tempVar

  '調(diào)用Windows中的QuickRes庫來改變顯示模式,如果你的系統(tǒng)中沒有安裝QuickRes系統(tǒng)將會(huì)產(chǎn)生一個(gè)錯(cuò)誤

  RetVal = Shell(shellString, 1)

  End Sub

  Private Sub Form_Load()

  Command1.Caption = “使用API函數(shù)改變分辨率"

  Command2.Caption =“使用QuickRes庫"

  LoadDisplayMode

  End Sub

  運(yùn)行程序,點(diǎn)擊選擇ListBox中的顯示模式,然后按下“使用API函數(shù)改變分辨率”鍵或者“使用QuickRes庫”鍵,就可以切換顯示模式到所需要的模式了。

  需要說明的一點(diǎn)是,在程序中的改變顯示模式的語句 b = ChangeDisplaySettings(aDev, CDS_FORCE) 中的常量CDS_FORCE是一個(gè)未公開(UnDocument)的定義,在微軟的幫助文檔是沒有有關(guān)的說明的。

  以上的程序在Win98、VB6下運(yùn)行通過。(長沙 陳銳)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VB編外掛的一些基礎(chǔ)知識(shí)
SENDMESSAGE函數(shù)巧應(yīng)用
讓您的文字框有 Undo / Redo 的功能
隱藏access窗體背景
VB創(chuàng)建時(shí)間窗體
VB入門技巧N例(1)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服