デバイスコンテキストからウィンドウハンドルを取得          <TOP>


WindowFromDC デバイスコンテキストからウィンドウハンドルを取得

 

例では、GethWnd(フォームのハンドル)とデバイスコンテキストから取得(WindowFromDC)したハンドルが同じであることを表しています。

 

'================================================================
'= デバイスコンテキストからウィンドウハンドルを取得
'=    (WindowFromDC.bas)
'================================================================
#include "Windows.bi"

' デバイスコンテキストからウィンドウハンドルを取得
Declare Function Api_WindowFromDC& Lib "user32" Alias "WindowFromDC" (ByVal dDC&)

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

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

Var Shared Text(3) As Object
For i = 0 To 3
    Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1)))
    Text(i).SetFontSize 14
Next

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var hDC As Long
    Var Ret As Long

    'ウィンドウ(メインフォーム)のハンドルを取得表示
    Text(2).SetWindowText "&&H" & Hex$(GethWnd)

    'デバイスコンテキストを取得
    hDC = Api_GetDC(GethWnd)

    'デバイスコンテキストからウィンドウハンドルを取得
    Ret = Api_WindowFromDC(hDC)

    '取得したハンドルを表示(GethWndと同じ)
    Text(3).SetWindowText "&&H" & Hex$(Ret)

    'デバイスコンテキストの解放
    Ret = Api_ReleaseDC(GethWnd, hDC)
End Sub

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