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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1020
Nasu可変ウィンドウの枠11解決


Nasu

リンク

2011/10/20(Thu) 21:50:17|NO.42553

以下のスクリプトを実行すると、枠が表示されますが
それを消すにはどうしたら良いでしょうか?


#uselib "user32.dll" #func GetWindowLong "GetWindowLongA" int,int #func SetWindowLong "SetWindowLongA" int,int,int,int bgscr 0,ginfo(20),ginfo(21),0,0,0 width 650,500 GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat | $10000 | $40000 *main color 0,0,0 : boxf 0,0,ginfo(12),30 color 255,255,255 : pos 5,5 : mes "タイトルバー" color 0,0,255 : boxf ginfo(12)-30,5,ginfo(12)-10,25 if ((mousex>=ginfo(12)-30)&(mousey>=5))&((mousex<=ginfo(12)-10)&(mousey<=25)):{ getkey k,1 if k = 1 : end } if((mousex>=0)&(mousex<=ginfo(12)))&((mousey>=0)&(mousey<=30)):{ gsel ginfo_act sendmsg hwnd ,$a1,2,z } redraw 1 : redraw 0 : await 5 goto *main
教えていただけると幸いです。



この記事に返信する


ひじき

リンク

2011/10/20(Thu) 23:09:17|NO.42560

当方Win7Home 64bit環境で、
HSP3.3にて上記スクリプトをコピーし実行しましたが、
おそらくNasu様が求めている通りの結果であろう描画になりました。

Gyazoによるスクリーンショットです。
http://gyazo.com/86f3e04a0d66e2615e0e113428c0e4bd.png
後ろに見えるのはWindowsの壁紙です。

もし質問していることと全く違うベクトルで話しをしてしまっていたら、申し訳ありません。

P.S.
強いて問題点を挙げるならば、実行中に他のアプリケーションとアクティブを行き来すると、
25行目でエラーを吐きます。私はこのソースが何をしているかあまり理解できなかったので、
原因はわかりませんが一応報告しておきます。



ひらまる

リンク

2011/10/20(Thu) 23:36:33|NO.42561

Winsows7 32bitですが、ひじきさんとは違い、枠が表示されます。
ウィンドウスタイルには詳しくないのですが、とりあえずSetWindowLongに渡すスタイルを適当に変えてみたら良いのではないでしょうか。
HSPのウィンドウに標準で追加されているスタイルが影響している可能性もあるので、
GetWindowLongから得たstatは使わずに、1つずつスタイルを追加していって様子を見るのが良いでしょう。
あともしかしたら拡張スタイルが関係している可能性もあるので、-20の拡張スタイルも検査した方が良いかもしれません。
こんな感じで。

SetWindowLong hwnd, -16, いろいろ追加 SetWindowLong hwnd, -20, いろいろ追加
眠いので適当になってしまいましたが、的外れだったらごめんなさい。



Cookies

リンク

2011/10/21(Fri) 18:11:24|NO.42570

簡単に試しましたが、stat | $10000 | $40000のところ、$40000外したらできましたよ。



ひらまる

リンク

2011/10/21(Fri) 18:57:33|NO.42572

あほんとだ。
$40000ですか…
WS_SIZEBOX(サイズ変更境界を持つウィンドウを作成します。)ですね多分。

これ自力で解決できなかったってことは、上のコードはどっかからのコピペでしょうか。
なんかこういうのって、標準ヘルプにも載ってないしHSPから始めた人には難しいですよね。



れみはる

リンク

2011/10/21(Fri) 19:02:18|NO.42573

Windows7 Home 32bitですが枠は表示されます。
64bitだと表示されないのでしょうかねえ

で、WS_SIZEBOX($40000)を消すとそもそもリサイズできない気が…



れみはる

リンク

2011/10/21(Fri) 19:56:11|NO.42576

うーん、WS_BORDER($800000)とかWS_DLGFRAME($400000)を取り除いてみるとか試してみましたがどうもうまくいきません。
可変処理は自前でしないといけないのかな?



ひらまる

リンク

2011/10/21(Fri) 20:00:52|NO.42577

そうですねー そういやそうですねー
なんか可変処理系のスレが1〜2年前にあった気がしましたが…
といっても、マウスクリックした場所がウィンドウの端っこにあったら、
そこを起点にしてサイズを変える…みたいな処理なら難しくはなさそうですね。



Nasubi

リンク

2011/10/21(Fri) 23:17:55|NO.42581

皆さんご回答有難うございます。
64Bitだと表示されないのですね…。

ひらまるさんマウスが端にあるときの判定でやろうと
思いますが、その時マウスポインタの画像を↔みたいなのに切り替える
事は可能でしょうか?



Nasubi

リンク

2011/10/21(Fri) 23:19:59|NO.42582

タイプミスをしていたので訂正します

ひらまるさんマウスが端 → ひらまるさんのマウスが端



ひらまる

リンク

2011/10/22(Sat) 00:14:09|NO.42583

できるみたいですよー
とりあえず今「HSP マウスカーソル 変更」でグーグル検索したら方法が見つかりました。とっても簡単です。
まぁ散々言われてることですが、質問する前にまずは自分で調べましょう。
でないと、「あいつは自分で調べることもせずに他人を頼る奴」と思われて、回答してもらえなくなることがあります。
もしプログラミングを始めたばかりならば仕方ないかもしれませんが、
そうでないのならそろそろステップアップする頃かと。



Nasu

リンク

2011/10/23(Sun) 21:29:21|NO.42610

ご回答ありがとうございました。
そうですね、以後、気を付けます。

これで、解決とさせていただきます。



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