Function Reference

DllStructGetPtr

構造体、構造体の要素へのポインタを返します。

DllStructGetPtr ( Struct [,Element])

 

パラメータ

Struct DllStructCreateが返す構造体
Element [オプション] ポインタが必要な構造体の要素。1 始まり、または要素名がDllStructCreateで定義されている必要があります。

 

返し値

成功 構造体へのポインタ
失敗 0
@Error: 0 = エラーなし。
1 = 構造体がDllStructCreateによって返された正常な構造体ではない。
2 = Elementが範囲外。

 

注意

DllCallで使用します。

 

関連

DllCall, DllStructCreate

 


;例1
; ウィンドウハンドルを取得して、WinGetPosを使用してウィンドウの長方形情報を取得
$hwnd   = WinGetHandle("")
$coor   = WinGetPos($hwnd)

; 構造体作成
$rect   = DllStructCreate("int;int;int;int")

; DllCall実行
DLLCall("user32.dll","int","GetWindowRect", _
        "hwnd",$hwnd, _
        "ptr",DllStructGetPtr($rect)) ; DllCall呼び出し時にDllStructGetPtrを使用

;返された長方形情報を取得
$l = DllStructGetData($rect,1)
$t = DllStructGetData($rect,2)
$r = DllStructGetData($rect,3)
$b = DllStructGetData($rect,4)

;構造体を解放
$rect = 0

;WinGetPosの結果と返された長方形情報を表示
MsgBox(0,"The Larry Test :)","WinGetPos(): (" & $coor[0] & "," & $coor[1] & _
        ") (" & $coor[2] + $coor[0] & "," & $coor[3] + $coor[1] & ")" & @CRLF & _
        "GetWindowRect(): (" & $l & "," & $t & ") (" & $r & "," & $b & ")")

;例2
; DllStructGetPtr アイテムを参照
$a          = DllStructCreate("int")
if @error Then
    MsgBox(0,"","Error in DllStructCreate " & @error);
    exit
endif

$b  = DllStructCreate("uint",DllStructGetPtr($a,1))
if @error Then
    MsgBox(0,"","Error in DllStructCreate " & @error);
    exit
endif

$c  = DllStructCreate("float",DllStructGetPtr($a,1))
if @error Then
    MsgBox(0,"","Error in DllStructCreate " & @error);
    exit
endif

;データを設定
DllStructSetData($a,1,-1)

;=========================================================
;   同じデータを異なるデータ型で表示
;=========================================================
MsgBox(0,"DllStruct", _
        "int: " & DllStructGetData($a,1) & @CRLF & _
        "uint: " & DllStructGetData($b,1) & @CRLF & _
        "float: " & DllStructGetData($c,1) & @CRLF & _
        "")

; 割り当てられたメモリの解放
$a = 0