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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0220
CrystalボタンのスタイルをWin7風にしたい18解決


Crystal

リンク

2022/2/20(Sun) 11:07:55|NO.95486

Windows 10の環境では通常のボタンが角ばっているのですが、Windows7の標準ボタンコントロールのように丸まったようなボタンを作成
する方法はありますでしょうか? 自分でそのようなボタンを自作してobjimageでカスタムボタン化するしかないのでしょうか?



この記事に返信する


ねんねこ5787

リンク

2022/2/20(Sun) 11:17:11|NO.95487

Objimageで表示するしかないと思います



ねんねこ5787

リンク

2022/2/20(Sun) 14:41:15|NO.95491

これが参考になるかもしれないです。
http://hsp.tv/play/pforum.php?mode=pastwch&num=78664



Crystal

リンク

2022/2/20(Sun) 16:59:43|NO.95493

URL先のコードを見たのですが、どれを参考にすればよいでしょうか?
Win7風のボタンを作成してからURL先のソースを試せばよいのでしょうか?



ねんねこ5787

リンク

2022/2/20(Sun) 17:02:41|NO.95494




Crystal

リンク

2022/2/20(Sun) 17:10:36|NO.95496

見た感じ、どのようにWin7風のボタンになるか想像がつきません...
Win7風のボタン画像をアイコンとして扱うという認識でよろしいでしょうか?



ねんねこ5787

リンク

2022/2/20(Sun) 18:22:47|NO.95497

すみません。間違えました。
Objimageで表示するしかないと思います。



Crystal

リンク

2022/2/21(Mon) 10:22:07|NO.95512

なるほど…
調べてた際、オーナードローについて見つけたのですが、オーナードローで角丸にはできるのでしょうか?



zrs90(5さい)

リンク

2022/2/21(Mon) 13:09:52|NO.95515

角丸ボタン hsp で検索したら出てきた。
役に立つかは、不明だが、置いていく。

http://hsp.tv/play/pforum.php?mode=pastwch&num=84975

http://hsp.tv/play/pforum.php?mode=pastwch&num=90939

https://wiki.hsp.moe/円形ボタン.html

http://rpen.blogspot.com/2007/10/blog-post_28.html?m=1

●おまけ。こんな所に...

http://rpen.blogspot.com/2007/09/hspfooty2.html?m=1



Crystal

リンク

2022/2/21(Mon) 16:02:23|NO.95521

> zrs90(5さい) さん
ありがとうございます! リンク先のものと別サイトから以下のスクリプトを見つけました。

// [HSP3] オーナードローボタン サンプル // by Let's HSP! #include "user32.as" #include "gdi32.as" #uselib "msimg32" #func GradientFill "GradientFill" int, int, int, int, int, int #define BS_OWNERDRAW $0B #define ctype MAKELONG(%1,%2) (%1 & $FFFF | %2 << 16) ; ウィンドウメッセージ oncmd gosub *drawitem, $2B sdim pszText pos 50, 50 objsize 80,35 button "ぼたーん", *jump hButton = objinfo(stat, 2) ; ボタンのスタイル変更 (BM_SETSTYLE) sendmsg hButton, $F4, BS_OWNERDRAW stop ; WM_DRAWITEMメッセージ *drawitem ; DRAWITEMSTRUCT構造体 dupptr DIS, lparam, 48 if DIS.5 = hButton { ; ボタン内の塗りつぶし色に白ブラシ GetStockObject 0 SelectObject DIS.6, stat ; ボタン外枠に角の丸い長方形 RoundRect DIS.6, 0, 0, DIS.9, DIS.10, 6, 6 ; アイテムの状態 ODS_SELECTED if DIS.4 & $1 { RedGreen = MAKELONG($CC00, $CC00), MAKELONG($F300, $F300) BlueAlpha = MAKELONG($CC00, 0), MAKELONG($F300, 0) } else { RedGreen.0 = MAKELONG($F300, $F300), MAKELONG($DD00, $DD00) BlueAlpha.0 = MAKELONG($F300, 0), MAKELONG($DD00, 0) } TRIVERTEX.0 = 2, 2, RedGreen.0, BlueAlpha.0 TRIVERTEX.4 = DIS.9 - 2, DIS.10 - 2, RedGreen.1, BlueAlpha.1 GRADIENT_RECT = 0, 1 GradientFill DIS.6, varptr(TRIVERTEX), 2, varptr(GRADIENT_RECT), 1, $1 RECT = 0, 0, DIS.9, DIS.10 ; アイテムの状態 ODS_FOCUS if DIS.4 & $10 { InflateRect varptr(RECT), -2, -2 DrawFocusRect DIS.6, varptr(RECT) } ; テキストカラー SetTextColor DIS.6, $555555 SetBkMode DIS.6, 1 ; テキスト取得 (WM_GETTEXT) sendmsg DIS.5, $D, 64, varptr(pszText) ; テキスト描画 DrawText DIS.6, pszText, -1, varptr(RECT), $20 | $4 | $1 return 1 } return *jump

このソースについて、2つ目のボタンを作成する際、どうすればよいか教えていただきたいです。
また、もしできればカーソルがボタンに来た際のエフェクトも付けたいです。



zrs90(5さい)

リンク

2022/2/21(Mon) 17:19:44|NO.95522

ごめんなさい。私、スマホ iPhoneだけでしか
掲示板の閲覧も、何も出来ないんだな。

おまけに、pcは、今時、Windows7 だけ
なので、テザリング等も出来ない。
hsp3.6は、pc借りて、テザリングで
ダウンロードしたのを、使ってるけど。

Androidなら、安いUSBメモリ経由で
掲示板のスクリプトを使うのは
出来るはず...なので
iPhone用のLightning USBメモリで
テキストファイルのやり取り出来るの
あるけど、とにかく高いのと
ネット通販もやら(れ)ないから
入手が難しくて...

このネタで、こっそり実験しようと
してたんだけど。(笑)



zrs90(5さい)

リンク

2022/2/21(Mon) 17:56:43|NO.95523

2つ目のボタンは、1つ目と同じなら

//ここで直前のボタンのウィンドウハンドル拾ってる
hButton = objinfo(stat, 2)

; ボタンのスタイル変更 (BM_SETSTYLE)
sendmsg hButton, $F4, BS_OWNERDRAW

コレと同じ物を、ウィンドウハンドルの変数
(hButton)を変えて2つ目も、配置すれば、出来ると思います。


ボタンのエフェクトは、objimage 命令使ってれば
サンプルで、objimage.hsp が使えたんだけど。

コレ以上は、私のレベルでは回答出来ないです。



Crystal

リンク

2022/2/21(Mon) 20:25:29|NO.95526

新しく test というボタンを追加してみたのですが、testだけ動作しません。何が違っているでしょうか?

/ [HSP3] オーナードローボタン サンプル // by Let's HSP! #include "user32.as" #include "gdi32.as" #uselib "msimg32" #func GradientFill "GradientFill" int, int, int, int, int, int #define BS_OWNERDRAW $0B #define ctype MAKELONG(%1,%2) (%1 & $FFFF | %2 << 16) ; ウィンドウメッセージ oncmd gosub *drawitem, $2B sdim pszText pos 50, 50 objsize 80,35 button "ぼたーん", *jump hButton = objinfo(stat, 2) ; ボタンのスタイル変更 (BM_SETSTYLE) sendmsg hButton, $F4, BS_OWNERDRAW button "test",*test //ここで直前のボタンのウィンドウハンドル拾ってる hButton1 = objinfo(stat, 2) ; ボタンのスタイル変更 (BM_SETSTYLE) sendmsg hButton1, $F4, BS_OWNERDRAW stop ; WM_DRAWITEMメッセージ *drawitem ; DRAWITEMSTRUCT構造体 dupptr DIS, lparam, 48 if DIS.5 = hButton { ; ボタン内の塗りつぶし色に白ブラシ GetStockObject 0 SelectObject DIS.6, stat ; ボタン外枠に角の丸い長方形 RoundRect DIS.6, 0, 0, DIS.9, DIS.10, 6, 6 ; アイテムの状態 ODS_SELECTED if DIS.4 & $1 { RedGreen = MAKELONG($CC00, $CC00), MAKELONG($F300, $F300) BlueAlpha = MAKELONG($CC00, 0), MAKELONG($F300, 0) } else { RedGreen.0 = MAKELONG($F300, $F300), MAKELONG($DD00, $DD00) BlueAlpha.0 = MAKELONG($F300, 0), MAKELONG($DD00, 0) } TRIVERTEX.0 = 2, 2, RedGreen.0, BlueAlpha.0 TRIVERTEX.4 = DIS.9 - 2, DIS.10 - 2, RedGreen.1, BlueAlpha.1 GRADIENT_RECT = 0, 1 GradientFill DIS.6, varptr(TRIVERTEX), 2, varptr(GRADIENT_RECT), 1, $1 RECT = 0, 0, DIS.9, DIS.10 ; アイテムの状態 ODS_FOCUS if DIS.4 & $10 { InflateRect varptr(RECT), -2, -2 DrawFocusRect DIS.6, varptr(RECT) } ; テキストカラー SetTextColor DIS.6, $555555 SetBkMode DIS.6, 1 ; テキスト取得 (WM_GETTEXT) sendmsg DIS.5, $D, 64, varptr(pszText) ; テキスト描画 DrawText DIS.6, pszText, -1, varptr(RECT), $20 | $4 | $1 return 1 } return ; DRAWITEMSTRUCT構造体 dupptr DIS, lparam, 48 if DIS.5 = hButton1 { ; ボタン内の塗りつぶし色に白ブラシ GetStockObject 0 SelectObject DIS.6, stat ; ボタン外枠に角の丸い長方形 RoundRect DIS.6, 0, 0, DIS.9, DIS.10, 6, 6 ; アイテムの状態 ODS_SELECTED if DIS.4 & $1 { RedGreen = MAKELONG($CC00, $CC00), MAKELONG($F300, $F300) BlueAlpha = MAKELONG($CC00, 0), MAKELONG($F300, 0) } else { RedGreen.0 = MAKELONG($F300, $F300), MAKELONG($DD00, $DD00) BlueAlpha.0 = MAKELONG($F300, 0), MAKELONG($DD00, 0) } TRIVERTEX.0 = 2, 2, RedGreen.0, BlueAlpha.0 TRIVERTEX.4 = DIS.9 - 2, DIS.10 - 2, RedGreen.1, BlueAlpha.1 GRADIENT_RECT = 0, 1 GradientFill DIS.6, varptr(TRIVERTEX), 2, varptr(GRADIENT_RECT), 1, $1 RECT = 0, 0, DIS.9, DIS.10 ; アイテムの状態 ODS_FOCUS if DIS.4 & $10 { InflateRect varptr(RECT), -2, -2 DrawFocusRect DIS.6, varptr(RECT) } ; テキストカラー SetTextColor DIS.6, $555555 SetBkMode DIS.6, 1 ; テキスト取得 (WM_GETTEXT) sendmsg DIS.5, $D, 64, varptr(pszText) ; テキスト描画 DrawText DIS.6, pszText, -1, varptr(RECT), $20 | $4 | $1 return 1 } return *jump *test



沢渡

リンク

2022/2/21(Mon) 21:35:34|NO.95528

横から失礼しますが、これで良いのでは?

// by Let's HSP! #include "user32.as" #include "gdi32.as" #uselib "msimg32" #func GradientFill "GradientFill" int, int, int, int, int, int #define BS_OWNERDRAW $0B #define ctype MAKELONG(%1,%2) (%1 & $FFFF | %2 << 16) ; ウィンドウメッセージ oncmd gosub *drawitem, $2B sdim pszText pos 50, 50 objsize 80,35 button "ぼたーん", *jump hButton = objinfo(stat, 2) ; ボタンのスタイル変更 (BM_SETSTYLE) sendmsg hButton, $F4, BS_OWNERDRAW button "test",*test //ここで直前のボタンのウィンドウハンドル拾ってる hButton1 = objinfo(stat, 2) ; ボタンのスタイル変更 (BM_SETSTYLE) sendmsg hButton1, $F4, BS_OWNERDRAW stop ; WM_DRAWITEMメッセージ *drawitem ; DRAWITEMSTRUCT構造体 dupptr DIS, lparam, 48 if (DIS.5 = hButton)|(DIS.5 = hButton1) { ; ボタン内の塗りつぶし色に白ブラシ GetStockObject 0 SelectObject DIS.6, stat ; ボタン外枠に角の丸い長方形 RoundRect DIS.6, 0, 0, DIS.9, DIS.10, 6, 6 ; アイテムの状態 ODS_SELECTED if DIS.4 & $1 { RedGreen = MAKELONG($CC00, $CC00), MAKELONG($F300, $F300) BlueAlpha = MAKELONG($CC00, 0), MAKELONG($F300, 0) } else { RedGreen.0 = MAKELONG($F300, $F300), MAKELONG($DD00, $DD00) BlueAlpha.0 = MAKELONG($F300, 0), MAKELONG($DD00, 0) } TRIVERTEX.0 = 2, 2, RedGreen.0, BlueAlpha.0 TRIVERTEX.4 = DIS.9 - 2, DIS.10 - 2, RedGreen.1, BlueAlpha.1 GRADIENT_RECT = 0, 1 GradientFill DIS.6, varptr(TRIVERTEX), 2, varptr(GRADIENT_RECT), 1, $1 RECT = 0, 0, DIS.9, DIS.10 ; アイテムの状態 ODS_FOCUS if DIS.4 & $10 { InflateRect varptr(RECT), -2, -2 DrawFocusRect DIS.6, varptr(RECT) } ; テキストカラー SetTextColor DIS.6, $555555 SetBkMode DIS.6, 1 ; テキスト取得 (WM_GETTEXT) sendmsg DIS.5, $D, 64, varptr(pszText) ; テキスト描画 DrawText DIS.6, pszText, -1, varptr(RECT), $20 | $4 | $1 return 1 } return *jump *test



zrs90(5さい)

リンク

2022/2/21(Mon) 21:49:05|NO.95529

申し訳ないです。

私の書いた方法だけで
*drawitem 以下の内容が 2つ目のボタンにも
適用されると、思ってたんですが、
甘く見過ぎてました。

...となると、*drawitem 以下の内容を
理解して、2個目のボタンの分を
それに合った値等に、書き換えないと
おそらくムリです。

私のレベルでは、とても手に負えないです。
Windows10の実機ないので、実行すら出来ない。
(※スマホ見ながら、このサイズのソースはちょっと...)
構造体に、WindowsApi...
おまけに、文法まで、hsp2.x ですし。



す²

リンク

2022/2/21(Mon) 22:07:43|NO.95530

>zrs90(5さい)さん
windows7でも多分エ○サイトとか見ない限りはネットして大丈夫だと思います。
友人もwindows7でバリバリyoutube見たりしてるので。



zrs90(5さい)

リンク

2022/2/21(Mon) 22:41:53|NO.95532

沢渡 さん いつもありがとうございます。

●追記
さすがに、Windows7をネット接続する程
『勇者』ではないです。(笑)

以前、掲示板の検索が出来ない...と言う件で
hsp.tv内を、調べ廻ってた時、個人情報を送信?
みたいのに、当たりました。



Crystal

リンク

2022/2/22(Tue) 12:06:42|NO.95534

>沢渡さん
ありがとうございます! 無事できました!

>zrs90(5さい)さん
役に立つサイトを紹介していただきありがとうございました。Windows 7、Win10にできなかったのですかね?
個人情報を送信というのはCookieか、Googleの表示で「拒否」すれば問題ないかと思います。



zrs90(5さい)

リンク

2022/2/22(Tue) 13:44:56|NO.95535

少しでも参考になる物があって良かったです。
沢渡さんのおかげで、問題も解決出来たようなので。

私の事情を話すと、ネット回線がなかったのが
理由ですが...

かなり訳アリのビジネス用、メーカーリビッシュの
デスクトップpcで、オフィスプリインストールと
8がバンドルされてて、10のインストール前に
bios設定や、ジャンパー等を先にいじって
8をオフィスも、インストール、再認証しないと
ダメとか...条件が厄介すぎて、一般人お断り的な
代物ですが、快適に動いてます。

●追記
今回の検索先、まさか footy2.as の作者さんのHPとは
最初、思わなくて...あのHP、時間ある時、回って見ると
良いです。あの頃の方々のレベルは凄いですから...



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