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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0506
Mameshibaボタンの中に画像を表示させるには?6解決


Mameshiba

リンク

2014/5/6(Tue) 21:38:08|NO.61918

ボタンの中に画像を表示させるにはどうしたらよいですか?
objimageを使えば…と思いますがそうではなくて

http://mameshibaroom.web.fc2.com/PicFile/test.png

みたいに文字の横に画像を表示させるにはどうしたらよいでしょうか?



この記事に返信する


cats

リンク

2014/5/6(Tue) 22:27:04|NO.61919

自分も気になったので調べてみたらできてました。

#uselib "user32.dll" #func SetWindowLong "SetWindowLongA" sptr, sptr, sptr #cfunc LoadIcon "LoadIconA" sptr, sptr #define GWL_STYLE (-16) #define BS_ICON 0x00000040 #define BM_SETIMAGE 0x00F7 #define WS_CHILD 0x40000000 #define WS_VISIBLE 0x10000000 #define IMAGE_ICON 1 #define IDI_APPLICATION 32512 objsize 200,120 button "アイコン付き", *label hButton = objinfo_hwnd(stat) // アイコンボタンにする SetWindowLong hButton, GWL_STYLE, WS_CHILD|WS_VISIBLE|BS_ICON hIcon = LoadIcon(0, IDI_APPLICATION) SetWindowLong hButton, -16, $50000000 | $2000 sendmsg hButton, BM_SETIMAGE|BS_ICON, IMAGE_ICON, hIcon stop *label mes "." stop
▼参考サイト
http://www.codeproject.com/Questions/591035/HowpluscanplusIpluscreateplusplusbuttonplusshowing
http://lhsp.s206.xrea.com/misc/button.html
http://oshiete.goo.ne.jp/qa/7655667.html



Mameshiba

リンク

2014/5/6(Tue) 22:57:06|NO.61920

>catsさん
ありがとうございます。ちゃんと動作しました!
ちなみに自分で作ったアイコンファイルとかを表示させることはできるのでしょうか?



cats

リンク

2014/5/6(Tue) 23:23:04|NO.61921

アイコンをファイル名で指定するように変更しました。
また、アイコンのサイズも指定できるようにしました。

#uselib "user32.dll" #func SetWindowLong "SetWindowLongA" sptr, sptr, sptr #cfunc LoadImage "LoadImageA" int, str, int, int, int, int #define GWL_STYLE (-16) #define BS_ICON 0x00000040 #define BM_SETIMAGE 0x00F7 #define WS_CHILD 0x40000000 #define WS_VISIBLE 0x10000000 ;#define IMAGE_ICON 1 ;変数flgで代用しているので削除 #define IDI_APPLICATION 32512 objsize 200,120 button "アイコン付き", *label hButton = objinfo_hwnd(stat) // ファイル指定 FILE=DIR_EXE+"\\hspscr_icon.ico" X=32 : Y=32 ;表示したいアイコンのサイズ if getpath(FILE, 2) = ".bmp" : FLG = 0 : else : FLG = 1 ;BMP形式かどうか // アイコンボタンにする SetWindowLong hButton, GWL_STYLE, WS_CHILD|WS_VISIBLE|BS_ICON hIcon = LoadImage(0, file, flg, X, Y, 0x0010) SetWindowLong hButton, -16, $50000000 | $2000 sendmsg hButton, BM_SETIMAGE|BS_ICON, FLG, hIcon stop *label mes "." stop



Mameshiba

リンク

2014/5/6(Tue) 23:40:22|NO.61922

>catsさん
度々ありがとうございます。
おかげで解決しました。わざわざ調べてくださりありがとうございました!



あり

リンク

2014/5/7(Wed) 00:18:24|NO.61923

既に解決となっていますが
catsさんのサンプルが自分の環境(WindowsXPsp3、ビジュアルスタイルオフ)だと
なぜかボタンに画像が付かなかったので、objimageと標準命令の力技で
画像付きボタンを再現したものを作ってみました。

screen 1 ; 通常時のボタン syscolor 21 : boxf 0, 0, 79, 23 ; ボタンの一番暗い色 syscolor 20 : boxf 0, 0, 78, 22 ; ボタンの一番明るい色 syscolor 16 : boxf 1, 1, 78, 22 ; ボタンの暗い色 syscolor 22 : boxf 1, 1, 77, 21 ; ボタンの明るい色 syscolor 15 : boxf 2, 2, 77, 21 ; ボタンの表面色 color 255 : circle 4, 4, 20, 20 ; ボタン上に表示する画像 ; 押し下げ時ボタン syscolor 20 : boxf 0, 25, 79, 47 ; ボタンの一番明るい色 syscolor 21 : boxf 0, 25, 78, 46 ; ボタンの一番暗い色 syscolor 22 : boxf 1, 26, 78, 46 ; ボタンの明るい色 syscolor 16 : boxf 1, 26, 78, 46 ; ボタンの暗い色 syscolor 15 : boxf 2, 27, 77, 45 ; ボタンの表面色 color 255 : circle 5, 29, 21, 45 ; ボタン上に表示する画像 screen 2 celput 1 ; ボタンイメージを複製 color ,255 : circle 4, 4, 20, 20 ; ボタン上に表示する画像 color ,255 : circle 5, 29, 21, 45 ; ボタン上に表示する画像 gsel 0, 1 objimage 1, 0, 0, 0, 25 objsize 80, 24 button "  ボタンID 0", *test objimage 2, 0, 0, 0, 25 objsize 80, 24 button "  ボタンID 1", *test stop *test mes "ボタン" + stat + "が押されました" stop
とりあえずこんなやり方でも出来たよ、という程度の話ですが。



drksugi

リンク

2014/5/7(Wed) 01:08:43|NO.61924

おもしろいコードですね. MicrosoftのWPF(Windows Presentation Foundation)のボタン
もこのような感じで実装されています.(ウインドウハンドルを用いない, Win32 APIとは
全く別の世界でボタンコントロールが作られています)



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