PRB: 不正確的螢幕物件寬度/高度之後會調整大小,在桌面上

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

253940
本文已封存。本文係以「現狀」提供且不會再更新。
徵狀
Visual Basic] IDE 內 Screen 物件之後變更螢幕解析度報告桌面寬度的值不正確。

應用程式在 IDE 之外執行,螢幕 物件的 [寬度] 和 [高度] 屬性都會傳回如果從系統匣中的 [顯示內容] 圖示變更解析度不正確的值。
解決方案
GetDeviceCaps API 函式來傳回螢幕解析度 (以像素為單位)。這項因應措施可以藉由從 MsgBox 巨集] 指令,在本文 < 其他相關資訊 > 一節中所提供的程式碼移除註解進行檢查。寬度和高度的像素傳回值的 GetDeviceCaps 可以分別乘以 Screen.TwipsPerPixelX 和 Screen.TwipsPerPixelY,來轉換成 (以一點的十二分之一為單位)。
其他相關資訊

重製行為的步驟

  1. 控制台中 使用 [顯示] 選項若要變更螢幕解析度為 800 x 600 個像素。
  2. 建立新的標準 EXE 專案在 Visual Basic 中時。預設會建立 Form1。
  3. 將下列程式碼加入至 Form1 的程式碼視窗:
    Private Declare Function GetDeviceCaps Lib "gdi32" _        (ByVal hdc As Long, ByVal nIndex As Long) As LongConst HORZRES = 8Const VERTRES = 10Sub Form_Load()    MsgBox "Width = " & Screen.Width & vbCrLf & _           "Height = " & Screen.Height    ' Uncomment the following line to examine the workaround    ' MsgBox "Width = " & GetDeviceCaps(Form1.hdc, HORZRES) & vbCrLf & _           "Height = " & GetDeviceCaps(Form1.hdc, VERTRES)End Sub
  4. 控制台中 使用 [顯示] 選項若要變更螢幕解析度為 640 x 480 像素。
  5. 按下 F5 鍵以執行程式。請注意寬度 (以 twip 為單位),在畫面的不正確地回報為螢幕高度。

警告:本文已自動翻譯

內容

文章識別碼:253940 - 最後檢閱時間:02/23/2014 19:29:56 - 修訂: 2.0

  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • kbnosurvey kbarchive kbmt kbapi kbgdi kbideproject kbprb KB253940 KbMtzh
意見反應