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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1228
E.Tウィンドウの中にウィンドウ2解決


E.T

リンク

2013/12/28(Sat) 12:23:59|NO.58926

ウィンドウの中にウィンドウをいくつか表示させたいのですがどうしたらいいでしょうか。
ウィンドウの中のウィンドウをドラッグすると移動できたり
具体的にはEDGEみたいなのがつくりたいです。



この記事に返信する


FunnyMaker

リンク

2013/12/28(Sat) 13:03:31|NO.58927

WinAPIの「SetParent」関数でできます。


#uselib "user32.dll" #func SetParent "SetParent" int,int screen 0,600,400,0 hwnd0 = hwnd title "第一ウィンドウ" screen 1,400,200,0 hwnd1 = hwnd title "第二ウィンドウ" screen 2,200,100,0 hwnd2 = hwnd title "第三ウィンドウ" SetParent hwnd1,hwnd0 ;SetParent 子にしたいウィンドウのハンドル,親にしたいウィンドウのハンドル SetParent hwnd2,hwnd1

注意視するべきことをいくつか。
子について、

・ginfo_wx1,ginfo_wy1で得られる値は、デスクトップを基準としたものになります。
・width 命令でウィンドウの位置を変更するときの座標は親ウィンドウに対する相対座標になります。デスクトップウィンドウ基準ではありません。
・Windows Vista / 7 における aeroスタイルは子に対しては無効になります。
・一度閉じ込めたウィンドウはscreenで初期化するだけでは開放されません。SetParent関数で親ウィンドウをデスクトップウィンドウに再設定する必要があります。
デスクトップウィンドウのハンドルはWinAPIの「GetDesktopWindow」関数で取得できます。


「SetParent」関数と一緒に知っておくと便利なのは、「SetWindowPos」です。ウィンドウの位置としてマイナス値をしていしたりするときwidthでは不可能なのではこれを使わなければいけません。



E.T

リンク

2013/12/28(Sat) 15:01:28|NO.58933

こんな簡単にでたんですね!
ありがとうございます



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