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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1007
ドッシーマイナスの値の位置にウィンドウを表示できない??3解決


ドッシー

リンク

2013/10/7(Mon) 21:31:48|NO.57526

丸くしたウィンドウを複数表示させてデスクトップ上を動き回るプログラムを組んでいます。
その玉はx方向とy方向のスピードを保持(例:scxpとscyp)して、スピード分座標を移動します。
デスクトップの外に出たら反対方向にスピードを加算することで、やがて画面内に戻るようにしています。
(例:画面の右に出たらscxpを減算していきやがて逆方向に進みだします)

本題です。
ウィンドウはwidth命令を使って移動させているのですが、widthのp3,p4は-値を正確に反映してくれません。
つまり、p3が-100だとしてもデスクトップの左端にウィンドウが表示されてしまうのです。

その状態では玉も不自然な動きに見えてしまいます。ウィンドウを-値の部分に移動することはできないのでしょうか。



この記事に返信する


cats

リンク

2013/10/7(Mon) 22:38:26|NO.57527

SetWindowPosかMoveWindowが良いと思われます。
質問からしてウィンドウは複数作るようなので、
ウィンドウハンドルの指定を間違えないように注意してください。

#uselib "user32.dll" #func MoveWindow "MoveWindow" int , int , int , int , int , int //ウィンドウを(-10,-10)へ移動 MoveWindow hwnd , -10 , -10 , 640, 480 , 1 wait 300 //環境によっては終了ボタンが見えなくなるので見える場所へ移動 MoveWindow hwnd , 10 , 10 , 640, 480 , 1 stop



fortunehill

リンク

2013/10/8(Tue) 01:51:58|NO.57531

/*ご参考*/

#uselib "user32.dll" #func global SetWindowPos "SetWindowPos" sptr,sptr,sptr,sptr,sptr,sptr,sptr screen 0,,,,0,0 ii = 2,2 repeat await 10 xx+= ii(0) yy+= ii(1) SetWindowPos hwnd,0,xx,yy,0,0,1 if (xx >= ginfo_dispx) {ii(0)=-2} if (yy >= ginfo_dispy) {ii(1)=-2} if (xx <= -640) {ii(0)= 2} if (yy <= -480) {ii(1)= 2} getkey kk,27 if (kk) {end} ;esc loop



ドッシー

リンク

2013/10/12(Sat) 18:14:03|NO.57575

catsさん、fortunehillさん分かりやすい説明ありがとうございました。
おかげで解決しました!



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