● ビットマップか判断する ●

こんなものいつ使うの?と言われてしまいそう。ちなみに、一応、私は使ったことはあるんだなぁ、これが。構造体だけで、API関数は使ってないんでやさしいでしょ。ファイル操作に関するエラートラップは各自でやってね。

Public Type BITMAPFILEHEADER
    bfType As Integer        '構造体のタイプ
    bfSize As Long           '構造体のサイズ
    bfReserved1 As Integer   '予約、常に0
    bfReserved2 As Integer   '予約、常に0
    bfOffBits As Long        '構造体からビットマップデータまでのオフセット
End Type

'-----------------------------------------------------------
' 関数名: IsBitmap
' 機  能: ビットマップか判定する
' 引  数: (in) FilaName … ファイル名
' 返り値: ビットマップである : True
'          ビットマップでない : False
'-----------------------------------------------------------
Public Function IsBitmap(ByVal FilaName As String) As Boolean

    Dim udtBH As BITMAPFILEHEADER
    Dim FileNumber As Integer

    'ファイルナンバーを割り当てる
    FileNumber = FreeFile

    'ファイルを読む
    Open FilaName For Binary As FileNumber
        Get #FileNumber, , udtBH
    Close FileNumber

    'タイプが"BM"(=19778(16進では4D42))であればビットマップである
    If udtBH.bfType = &H4D42 Then
        IsBitmap = True
    Else
        IsBitmap = False
    End If

    '上の処理は、次のようにすると1行で済む
    'IsBitmap = CBool(udtBH.bfType = &H4D42)

End Function

戻る