HSP3プログラミング入門講座
powered by Let's HSP!
ボタンオブジェクトの表示
無料のWindowsプログラミングツール「HSP3」(公式サイト「HSPTV!」)で表示・設置できるオブジェクト(コントロール)。HSPのボタン(button命令)&チェックボックス(chkbox命令)。
オブジェクトの概観(デザイン)はぜんぜん違いますが、両方ともまったく同じ系統のオブジェクトです。ボタンの見た目を変えたのがチェックボックスです。
実は他にもフラットボタン、ラジオボタン、トグルボタン、グループボックスも通常のボタンの見た目を変えただけのオブジェクトにすぎません。
この「見た目」はWin32プログラミングの用語で言うと「ウィンドウスタイル」(Window Style)になります。 Win32 API関数であるGetWindowLong関数とSetWindowLong関数を利用するとウィンドウスタイルを取得・変更できます。
解説ページ
- 基本解説講座
- [HSP 3.2〜] objimage命令 (画像ボタン化)
- 基本解説講座
- ボタン上の文字列変更
・・・ objprm命令 - ボタン・チェックボックスの表示フォントの指定
・・・ font命令+objmode命令 - ボタン・チェックボックスの表示サイズの指定
・・・ objsize命令 - ボタン・チェックボックスの削除
・・・ clrobj命令 - ボタン・チェックボックスの表示位置・表示サイズの変更
・・・ [obj.asモジュール] resizeobj命令 - ボタン・チェックボックスの表示位置・表示サイズの取得
・・・ [obj.asモジュール] getobjsize命令 - ボタン・チェックボックスの無効化 (灰色表示の選択不可状態)
・・・ [obj.asモジュール] objgray命令
- 太枠ボタンの設置。
- オブジェクト上に表示されてる文字列の取得。
- objprm命令で実現できないチェックボックス上の表示文字列の変更。
- 通常はオブジェクト上のど真ん中に文字が表示されますが、この表示位置を変更。
・・・ 上下左右+斜め方向で、任意の位置は不可 - オブジェクト上の文字列を通常の1行表示から、改行による2行表示。
・・・ 「\n」による手動改行、文字がオブジェクトの横幅サイズに収まらなかったら自動改行 - 見た目が若干違うフラットボタンを設置。チェックボックスのフラット化も可能。
・・・ Windows XP以降でビジュアルスタイル適用時は効果にゃし - チェックボックスのチェックのオン/オフ切り替えをリアルタイムで監視。
・・・ ボタンのラベルジャンプ機能をうまく利用 - 複数選択項目の中から1つだけマークが表示される排他機能を持つラジオボタンを設置。
・・・ チェックボックスのウィンドウスタイルを変更してラジオボタン化 - チェックボックスみたいにオン/オフの切り替えとして機能するトグルボタンを設置。
・・・ 膨らんだ状態と凹んだ状態の2段階、チェックボックスのウィンドウスタイルを変更 - グループボックスは表示の不具合が起こるためHSPでの正常設置はまず無理。
・・・ グループボックス風の枠を自前で描画
その他
◇ ボタンやチェックボックスの無効 (使用不可、グレー表示、灰色表示)
ボタンを押せない状態、チェックボックスを選択できない状態に切り替えるには、標準命令では実現できないので、
Win32 API関数のEnableWindow関数を呼びます。HSP自体に用意されてるobj.as
モジュールにこの関数を呼んでるモジュール命令のobjgray命令が用意されてます。
(HSP 3.2以降はobjenable命令という標準対応の新規命令があります。)
◇ ボタンやチェックボックスの非表示
HSPの標準命令では実現できないので、Win32 API関数のShowWindow関数を呼びます。
オブジェクトの非表示のページを参照。
◇ ボタンの文字色変更
フォント(文字サイズやスタイル)の変更は楽ですが、文字色となるとタイヘンです。そもそもWin32プロ
グラミングでもボタン上に表示されてる文字の色だけ一発で変更できるような処理が用意されてません。
ボタンの挙動を再現するためすべてを自前で描画したりします。
◇ ボタンに画像表示
純粋な意味でボタン上に画像(イメージ)を貼り付け表示するにはHSPの標準命令だけではちょっと無理です。
基本的にbutton命令で用意したボタンオブジェクトにそのまま各種描画命令(mes命令、line命令、boxf命令など)を
使うことができません。
- ボタンコントロールにBM_SETIMAGEメッセージを送る
button命令のボタンオブジェクト上に画像を貼り付けることができる。ただ、ビジュアルスタイル環境下 (Windows XP/Vista)の場合でもボタンのデザインが強制的にクラシック表示になります。 Win32 API関数を駆使して画像のビットマップハンドルを用意する必要があります。 - 画像ボタン風の描画処理をすべて自前で用意する
一般的なゲームは基本的にこれ。ボタンオブジェクト(button命令)は使わないで、HSPが標準でサポート してる命令や関数を使って、マウスの動きやクリック動作を監視し、描画命令でボタンの動作挙動をぜんぶ 再現する。簡単に言うと、ボタンが押されてない時のイメージ、ボタンが押された時のイメージを交互に描画 します。
いくつか画像ボタンの実例をのせてるページのリンク。
- 初心者翔龍閃さん ... 自前描画
- eseobj/imgbtn ... 自前描画
- llmod3モジュール (btnimg命令) ... BM_SETIMAGE (Windows Vistaでは挙動不審?)
- OwnerDraw/ODButton ... オーナー描画
- オーナードローボタン サンプル ... オーナー描画
- mod_customizebutton ... 自前コントロール作成 (サイズが+40KBぐらいになりデカイ)
◇ objimage命令 [HSP 3.2〜]
HSP 3.2で新たにサポートされたobjimage命令。button命令で設置したボタンオブジェクトを画像ボタン化 することができます。大分ラク〜に画像ボタンを用意できるようになりましたなぁ!
キーワード de HSP
- 無料プログラミング
- HSPダウンロード
- 実行ファイル作成
- HSP動作環境
- 演算子
- 文字列操作
- 命令・関数一覧
- アイコン変更
- PACKFILE
- PACKFILE編集
- #packopt
- #deffunc
- HSPエラー
- HSPエラー番号
- HSPエラー7
- HSPエラー12
- HSPエラー13
- HSPエラー33
- HSPエラー38
- HSPエラー41
- ホームページ作成
- バージョン
- フォント
- オブジェクト
- ボタン
- 入力ボックス
- オブジェクト非表示
- Win32 API
- メニュー
- HSPLet
- サウンド再生
- 画像
- PNGファイル
- HSP質問掲示板
- デバッグ
- ドラッグ&ドロップ
- ブラウザ作成
- HSP書籍本