HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0824
ぬらpoint構造体の使い方3未解決


ぬら

リンク

2012/8/24(Fri) 23:07:35|NO.48792

座標を入れたpoint構造体を使うには、どのようにすればいいですか?



この記事に返信する


test

リンク

2012/8/25(Sat) 00:09:27|NO.48798

POINT構造体は次のようになっています。
typedef struct tagPOINT {
LONG x; LONG y; } POINT;
たぶんLONGは4バイトですから、POINT構造体はx座標4バイト、y座標4バイトという計8バイトの連続した構造になっています。 HSPにおいてこのような連続したメモリを扱えるのは配列です。
HSPの整数は4バイトですから、要素が2個の配列を作成すれば8バイトで、POINT構造体と同じになります。
最初の4バイト(配列の0番目)がxで、次の4バイト(配列の1番目)がyにあてはまりますから、たとえば(100,200)というPOINT構造体を表現したければ、
dim point,2
point=100,200
のようにします。また、たとえばPOINT構造体に結果を受け取るには次のようにします。
#include "user32.as"

dim point,2
GetCursorpos varptr(point)
//point(0)にx座標、point(1)にy座標が入っている
mes "("+point(0)+", "+point(1)+")"




ぬら

リンク

2012/8/25(Sat) 01:26:01|NO.48803

ChildWindowFromPointを使って指定した座標のウインドウハンドルの取得をしたいのですが、

uselib "user32.dll"
#cfunc FindWindow "FindWindowA" int, str
#cfunc ChildWindowFromPoint "ChildWindowFromPoint" sptr,sptr,sptr
lpWindowName = "ウインドウ名"
handle = FindWindow ( lpClassName, lpWindowName )
mes "ウインドウハンドル="+a

Child = ChildWindowFromPoint ( handle, point構造体名 )
mes Child
このようにしたときに、point構造体名の所に任意の座標をどのようにして入れればよいのかがわかりません><



pizza

リンク

2012/8/26(Sun) 04:13:31|NO.48818

その関数はアドレスじゃなく構造体をそのまま受け取る珍しい関数なので、
xとyをそのまま引数にいれてください。


#uselib "user32.dll" #cfunc FindWindow "FindWindowA" int, str #cfunc ChildWindowFromPoint "ChildWindowFromPoint" sptr,sptr,sptr lpWindowName = "ウインドウ名" handle = FindWindow ( lpClassName, lpWindowName ) pos 100, 200 button "",*lb_button pos 0, 0 Child = ChildWindowFromPoint ( hwnd, 100, 200 ) mes "result="+Child mes "hButton="+objinfo_hwnd(0) mes "hwnd="+hwnd stop *lb_button



ONION software Copyright 1997-2023(c) All rights reserved.