スクリーンフォントサイズを取得          <TOP>


スクリーンフォントサイズを取得します。

GetDesktopWindow デスクトップハンドルを取得

GetDeviceCaps デバイス固有の情報を取得


左:小さいフォントに設定    右:大きいフォントに設定

 

確認

 

参照

デバイス固有情報の取得

 

'================================================================
'= スクリーンフォントサイズを取得
'=    (ScreenFontSize.bas)
'================================================================
#include "Windows.bi"

#define LOGPIXELSX 88
#define LOGPIXELSY 90

' Windowsのデスクトップウィンドウを識別。返されるポインタは、一時的なポインタ。後で使用するために保存しておくことはできない
Declare Function Api_GetDesktopWindow& Lib "user32" Alias "GetDesktopWindow" ()

' デバイス固有の情報を取得
Declare Function Api_GetDeviceCaps& Lib "gdi32" Alias "GetDeviceCaps" (ByVal hDC&, ByVal nIndex&)

' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得
Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&)

' デバイスコンテキストを解放
Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&)

Var Shared Text1 As Object
Var Shared button1 As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Function IsScreenFontSmall() As Integer
Function IsScreenFontSmall() As Integer
    Var hWndDesk As Long
    Var hDCDesk As Long
    Var logPix As Long
    Var Ret As Long
   
    'デスクトップのハンドル取得
    hWndDesk = Api_GetDesktopWindow()
   
    'デスクトップのデバイスコンテキスト取得
    hDCDesk = Api_GetDC(hWndDesk)
   
    '水平の論理ピクセル取得
    logPix = Api_GetDeviceCaps(hDCDesk, LOGPIXELSX)
   
    'デバイスコンテキスト解放
    Ret = Api_ReleaseDC(hWndDesk, hDCDesk)
   
    'logPixの値が96である場合システムは小さいフォントを使用している
    IsScreenFontSmall = logPix
End Function

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    If IsScreenFontSmall = 96 Then
        Text1.SetWindowText "システムは小さいフォントを使用しています"
    Else
        Text1.SetWindowText "システムは大きいいフォントを使用しています"
    End If
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End