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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0401
あかさカスタムボタン4解決


あかさ

リンク

2016/4/1(Fri) 07:38:12|NO.75144

これ、HSPでできませんか?
http://marupeke296.com/TIPS_No10_CustomButton.html
(objimageだと点線出るし、マウス座標確認で描画するとごちゃごちゃするため)



この記事に返信する


あかさ

リンク

2016/4/1(Fri) 08:00:40|NO.75145

今のところこうやっているのですが。。。

#include "user32.as" #module mod_ebutton #deffunc ebutton_init int _maxnum ldim btn_label, _maxnum dim btn_ctr dim btn_x, _maxnum dim btn_y, _maxnum dim btn_width, _maxnum dim btn_height, _maxnum dim btnimg_normal, _maxnum dim btnimg_onmouse, _maxnum dim btnimg_onclick, _maxnum return #define EBUTTON_TIMER_ID 1 #define EBUTTON_TIMER_ELAPSE 52 #define WM_TIMER 0x00000113 #define ctype between(%1, %2, %3) ((%1 >= %2) & (%1 <= %3)) #define true 1 #define false 0 #define STICK_LBUTTON 256 #define global ebutton(%1, %2, %3, %4) temp = %1 : _ebutton temp, %2, %3, %4 #deffunc _ebutton var lab, int _width, int _height, array btnbuf btn_label(btn_ctr) = lab btn_x(btn_ctr) = ginfo_cx btn_y(btn_ctr) = ginfo_cy btn_width(btn_ctr) = _width btn_height(btn_ctr) = _height btnimg_normal(btn_ctr) = btnbuf(0) btnimg_onmouse(btn_ctr) = btnbuf(1) btnimg_onclick(btn_ctr) = btnbuf(2) btn_ctr++ SetTimer hwnd, EBUTTON_TIMER_ID, EBUTTON_TIMER_ELAPSE, 0 oncmd *CheckMousePos_Redraw, WM_TIMER return *CheckMousePos_Redraw prev_cx = ginfo_cx prev_cy = ginfo_cy dim i dim key dim clicked stick key, STICK_LBUTTON repeat btn_ctr pos btn_x(i), btn_y(i) if (between(mousex, btn_x(i), btn_x(i) + btn_width(i) - 1)) & (between(mousey, btn_y(i), btn_y(i) + btn_height(i) - 1)) { if (key & STICK_LBUTTON) { gcopy btnimg_onclick(i), , , btn_width(i), btn_height(i) wasclicked = true break } else { if (wasclicked == true) : wasclicked = false : clicked = true gcopy btnimg_onmouse(i), , , btn_width(i), btn_height(i) break } } else { gcopy btnimg_normal(i), , , btn_width(i), btn_height(i) } i++ loop pos prev_cx, prev_cy if (clicked == true) : goto btn_label(i) stop #global ebutton_init buffer 1 color 255 : boxf buffer 2 color , 255 : boxf buffer 3 color , , 255 : boxf gsel 0, 1 buf = 1, 2, 3 pos 100, 100 ebutton *buttonclicked, 100, 50, buf pos 0, 0 stop *buttonclicked color mes "ボタンがクリックされました" stop



inovia

リンク

2016/4/1(Fri) 23:18:16|NO.75147

Module/mod_customizebutton_v2 - HSP開発wiki
http://hspdev-wiki.net/?Module%2Fmod_customizebutton_v2
(※ HSP開発Wikiの旧ドメインを買取ったので上記URLにアクセス可能です)

のページに掲載されているモジュールがボタンのオーナードローをしています。

フォーカス枠を描画している箇所は、
mod_customizebutton.hsp の 199行〜211行になるので、コメントアウトするなどして
処理されないようすれば、フォーカス枠は描画されなくなるはずです。



inovia

リンク

2016/4/1(Fri) 23:31:04|NO.75148

訂正です。
コメントアウトしなくても、imagebutton 命令の後に
_bc_frame 命令を実行すれば、フォーカス枠を描画しない設定にできるようです。


imagebutton 〜 _bc_frame stat, 1, 0, 1



あかさ

リンク

2016/4/2(Sat) 19:11:41|NO.75160

inoviaさん、ありがとうございます。
やや難しいですが、とても役に立つモジュールですね。
ありがたく使わせていただきます。



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