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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0210
TAKAサイズ固定&ツールウィンドウ13解決


TAKA

リンク

2007/2/10(Sat) 02:16:52|NO.5555

screen 2,,,4+8

で作成されたウィンドウの上部に、2ドット分ほどの空白(?)が出来てしまうのですが、
これはHSP自体のバグなのでしょうか?

HSP Ver3.1b6
XP SP2

サンプル:http://www2.breeze.jp/sample.png
↑では黒くなっていますが、実際には表示された場所の背面のウィンドウが透けます。



この記事に返信する


アキス

リンク

2007/2/10(Sat) 11:13:53|NO.5563

僕の環境(HSP3.0)では普通に出来ます。
3.1b6のバグでは?



うひょ

リンク

2007/2/10(Sat) 18:22:26|NO.5572

僕が昔同じような質問で質問しましたが。
検索とかしましたか?



GENKI

リンク

2007/2/10(Sat) 18:25:53|NO.5573

空白と言うより、ウィンドウが前面になったときに再描画されてないようですね。
他のウィンドウを重ねると残像が残ります。
ちなみに下部にも同様に2ドットの範囲で正常に描画されない領域があります。
環境:HSP Ver3.1b6
   Win2k sp4



TAKA

リンク

2007/2/11(Sun) 01:16:58|NO.5584

本日b7をDLしましたが直ってないみたいですね…

>僕が昔同じような質問で質問しましたが。
>検索とかしましたか?
「サイズ固定 ツール ウィンドウ」で検索しましたが、
何も表示されなかったので無いのかと…
そして今、「うひょ」で検索をかけてみましたが見つかりません。
どのような内容だったのでしょうか?

>ちなみに下部にも同様に2ドットの範囲で正常に描画されない領域があります。
本当ですね。上しか気づきませんでした…



KIMU

リンク

2007/2/11(Sun) 04:47:38|NO.5588

今は過去ログが検索できないから
ここで検索しても出てこないかも


screen 2,642,482,4+8 width 640,480 ;screen のクライアントエリア指定では旨くいかなかった



As

リンク

2007/2/13(Tue) 15:33:31|NO.5661

ウィンドウスタイルにWS_THICKFRAMEが指定されているとそうなる場合があるみたいです。
Setwindowlong でウィンドウスタイルからその値をはずしてみてください。



TAKA

リンク

2007/2/14(Wed) 01:46:46|NO.5674

WS_THICKFRAME というのは $00040000 ですよね?

外すにはどうすればよいのでしょうか?



KIMU

リンク

2007/2/14(Wed) 06:45:13|NO.5676

NO.5588の少し大きめに作った後に目的のサイズにするのは使えなかった?
(自分の所では、Yさだけ+2すれば問題出無かった)

>Asさん
>Setwindowlong でウィンドウスタイルからその値をはずしてみてください。

#uselib "user32" #cfunc GetWindowLong "GetWindowLongA" int, int ;#func SetWindowLong "SetWindowLongA" int, int, int screen 2,,,4+8 Style=GetWindowLong(hwnd,-16) mes strf("%x",Style) mes strf("%x",Style&$00040000) ;Style=Style&($ffffffff^$00040000) ;SetWindowLong hwnd, -16, Style
p4を4のサイズ固定で作った時点で WS_THICKFRAME は外れてるような・・・
(上のコメント解除でWS_THICKFRAMEを外したスタイルにしたけど意味無かった)
ID0以外のHSPウィンドウで元から WS_THICKFRAME 無しで作る事って出来るのかな・・・



TAKA

リンク

2007/2/15(Thu) 00:23:43|NO.5702

自分が表示させる時は、

screen 0,300,200 screen 2,300,202,4+8 width 300,202-2 ;screen のクライアントエリア指定では旨くいかなかった repeat gsel 0 x=ginfo(4) : y=ginfo(7) gsel 2 width 300,202-2,x,y wait 5 loop
のように、ウィンドウの下にくっつける方法で表示してます。

このようにすると、上側はうまく表示されるのですが、下側がまだ直りません。



KIMU

リンク

2007/2/15(Thu) 01:25:20|NO.5703


screen 0,300,200 screen 2,300,202,4+8 width 300,202-2 repeat gsel 0 x=ginfo(4) : y=ginfo(7) gsel 2 if (x!xbak) or (y!ybak){ width 300,202 width 300,202-2,x,y } xbak=x ybak=y wait 5 loop
これで、目的は果たせるけど
どう?



TAKA

リンク

2007/2/15(Thu) 02:06:34|NO.5705

おぉ!!!っと思いきや…

これですとID2のウィンドウを動かすと普通に動いてしまう…
これを、ID2を動かしてもID0のところに戻すにはどうすれば?

と思って簡単に試行錯誤…
結果、ifの外に
width ,,x,y
を入れたらできた!
入れる場所はどこでも動作に問題はないですよね・・・? 一応出来たので、解決です!!ありがとうございました!



KIMU

リンク

2007/2/15(Thu) 03:06:56|NO.5706

あぁ、そっか
それなら↓これで良いかも


repeat gsel 0 x=ginfo(4) : y=ginfo(7) gsel 2 if (x!ginfo(4)) or (y!ginfo(5)){ width 300,202 width 300,202-2,x,y } wait 5 loop
ID0が動いたらじゃ無くて
ID0とID2が離れたらID2が動くって感じ



TAKA

リンク

2007/2/15(Thu) 18:05:22|NO.5708

答えてくれた方々、ありがとうございます。
KIMUさんの方法で思ったとおりの動きになりました!

本当にありがとうございます。



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