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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1110
Sadous設定ダイアログ?を作りたい。描写方法が全く分からない。6解決


Sadous

リンク

2015/11/10(Tue) 07:28:41|NO.72909

画像のような描写を行いたいのですが、描写方法が全く分かりません。
hspでこれらの描写を行う方法を教えていただけませんか?
http://f.st-hatena.com/images/fotolife/s/st1105/20151110/20151110072156_original.png?1447107731

タブの描写はオブジェクトを配置するような感覚で使うものなのか。
枠線の描写は標準命令のlineで行うのか、それともオブジェクトとしてあるのか。
枠線やウィンドウ左上端からの文字描写の距離、マージンは何か定数でも用意されているのか。

タブは現状利用する予定がないので、このスレッドでは重要視しないものとします。



この記事に返信する


kanamaru

リンク

2015/11/10(Tue) 07:57:38|NO.72910

枠線はグループボックスというものだと思います。
描画するにはwindowsAPIを使います。
http://waiei.blog7.fc2.com/blog-category-16.html
http://hp.vector.co.jp/authors/VA043120/hpi_exhspobj.htm
(hspでタブを描画するのはかなり大変です。
windowsAPIをやはり使います。
で、タブはタブコントロールと呼ばれるやつなんですけど、
hspではタブごとに子ウィンドウを設置する必要があります。)



Sadous

リンク

2015/11/10(Tue) 17:26:05|NO.72912

>kanamaruさん
返信ありがとうございます。
各オブジェクトの名称やwinAPIを使うものだと分かり、助かりました。
これでgoogle先生にお世話になることができます(--;

HSP3用拡張プラグイン hpi_exhspobjはとても便利そうですね!
正式版のリンクが切れてしまっているのが悔やまれます。
ベータ版も落としてみましたが、肝心のhspファイルが定数定義を行うものしか見つからず
同梱されているc++ファイルは、自分が読めなくて何もできず。

グループボックスが使いたかったので、それが一通り扱えるようになったなら、
このスレッドを閉じようと思います。




すみません。たぶん、かなり時間かかります。



Sadous

リンク

2015/11/10(Tue) 17:45:38|NO.72913

あれ、調べてみたら案外簡単に見つかってしまった……
グループ化したラジオボタンを設置するのと同じような流れで、
buttonにメッセージを送ればできるようです。

自分はウィンドウメッセージなどはチンプンカンプンなので
結局はコピペなのですが……

;スタイルとクラス? #define BM_SETSTYLE 0x00F4 #define BS_GROUPBOX 0x0007 syscolor 15 : boxf ;同サイズのboxf color:boxf 10,10,10+300,10+200 syscolor 17:pos 10,10:mes "objsizeと同じサイズのboxf" ;標準グループボックス objsize 300,200 pos 320,10 : button gosub "純正グループボックス",*tmp sendmsg objinfo(stat,2),BM_SETSTYLE,BS_GROUPBOX,-1 stop *tmp return
参考
http://wiki.hsp.moe/%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9.html



Sadous

リンク

2015/11/10(Tue) 20:45:50|NO.72921

失礼、objsendで設置したグループボックスの中身への文字や画像の描写が、
全く不明だったので(というより、オブジェクト上にhspの標準命令で描写"できない")
http://wiki.hsp.moe/
さんの擬似グループボックスを利用することにします。



kanamaru

リンク

2015/11/10(Tue) 23:43:45|NO.72937

文字列の描画はスタティックテキストというので行います。
windowsAPIですが、winobj命令で簡単に使えるはず。
画像はどうすればいいんだろう。わかりません。
わかり次第、返事します。



774

リンク

2015/11/12(Thu) 18:39:33|NO.72961

質問者様は描画する事で解決されたようですが一応他の手も…

・拡張ウィンドウスタイルに WS_EX_Transparent [0x0020]を含める
 実質、描画だけしてるのと変わりません。

・SetParent 等で bgscr を子ウィンドウ化して重ねる
 bgscrをグループボックスのクライアント領域のように扱えるので
 レイアウト調整はやり易いかも知れません。
 別ウィンドウなので、Tabキーでのフォーカス移動対応は面倒です。

・BitBlt でグループボックスに直接描画
 再描画メッセージ周辺がややこしそうです。


>マージンは何か定数でも用意されているのか。
GetSystemMetrics でGUI周りの定数を色々取得できるのですが、
マージンやパディングそのものは無いみたいです。
何かの流用か、お約束的な値でもあるのでしょうか。

HTMLなんかでは、1行の高さは1.5文字分、領域の内側には1文字分の余白。
みたいに文字の高さを基準とするレイアウト法もあります。
何か基準が欲しいだけなら、こゆのでもいいと思いますよ。



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