Last Update : 2009/04/xx
HSP3(HSP 3.x)で設置できる「オブジェクト」をベースに、Windows API(Win32 API関数)を駆使した発展的なサンプルコードやらモジュールを掲載。加えて、HSP3のwinobj命令やsendmsg命令を使って標準命令にはないオブジェクト(Windowsのコントロール)の設置や、ちょっと高度な処理を実現します。
HSP3 命令 | おもな内容 |
ボタン (button) チェックボックス (chkbox) |
ウィンドウスタイルの変更 ├文字列の表示位置変更 └複数行テキスト チェックボックスの監視 3ステートチェックボックスの設置 ラジオボタンの設置 ボタンの文字色変更 トグルボタンの設置 |
入力ボックス
(input) メッセージボックス (mesbox) |
ウィンドウスタイルの変更 ├数値のみ入力可能 └入力文字の大文字・小文字変換 文字の表示色や背景色の変更 編集・入力のできない状態への切り替え 境界線枠のない入力ボックスの設置 |
スタティックテキスト (旧mesbox) | スタティックテキストの表示 ハイパーリンクテキストの表示 アイコン表示オブジェクトの設置 セパレータライン(区切り線)の表示 |
リストボックス (listbox) | 項目の追加・挿入・削除・前後入れ替え 項目の文字列取得 文字の表示色の変更 項目選択の監視 (ダブルクリック) 複数項目選択可能なリストボックスの設置 ソート機能付きリストボックスの設置 ドラッグリストボックスの設置 |
コンボボックス (combox) | 項目の追加・挿入・削除 項目の文字列取得 文字の表示色の変更 項目選択の監視 |
その他 (winobj命令 利用) |
タブコントロール リストビュー+カスタムドロー チェックボックス付リストボックス ツールチップ |
アップダウンコントロール トラックバーコントロール トラックバー+カスタムドロー |
|
ステータスバー アニメーションコントロール プログレスバーコントロール |
|
月間カレンダーコントロール 日時指定コントロール |
HSP3にはオブジェクトを設置する標準命令(全6種)以外に、下のような関連する命令が用意されてます。
HSP3 命令 | 処理内容 | |
pos | 設 置 前 |
表示位置の指定 |
objsize | 表示サイズの指定 | |
font / sysfont (+objmode) | 表示文字列のフォント・サイズ・スタイルの適用 | |
objimage | [HSP 3.2〜] ボタンオブジェクトの画像ボタン化 | |
objprm | 設 置 後 |
<ボタン、リストボックス、コンボボックス、 入力ボックス、メッセージボックス> 表示文字列や表示内容の変更 |
<チェックボックス> チェックのオン/オフ切り替え [HSP 3.2〜] 表示文字列の変更 |
||
<リストボックス、コンボボックス> 項目の選択 |
||
sendmsg (HSP2 : objsend) |
<チェックボックス> [HSP 3.0/3.1] 表示文字列の変更 |
|
表示文字列の取得 | ||
<入力ボックス、メッセージボックス> 使用不可・灰色グレー表示・無効化 |
||
objsel | フォーカスの移動 フォーカスのあるオブジェクトIDの取得 |
|
objskip | [HSP 3.2〜] フォーカスの移動の挙動指定 | |
objenable | [HSP 3.2〜] 使用不可・灰色グレー表示・無効化 | |
clrobj | 撤去・消去・削除 | |
objinfo | オブジェクトのウィンドウハンドル取得 | |
getobjsize (obj.asモジュール) | 表示位置・表示サイズの取得 | |
resizeobj (obj.asモジュール) | 表示位置・表示サイズの変更 | |
objgray (obj.asモジュール) | 使用不可・灰色グレー表示・無効化 無効化/有効化状態の取得 |
HSP3本体のcommonフォルダにある「obj.as」ファイルには、HSP3の標準命令には存在しないモジュール命令が用意されてます。これはWin32 API関数をモジュール内で呼んでます。利用するには「obj.as」ファイルをインクルード(#include命令)してください。
あと、HSP3本体のcommonフォルダにある「hsp3util.as」ファイルには、スタティックテキスト(スタティックコントロール)、スクロールバー、プログレスバーというような標準命令にはないオブジェクトを設置する簡易的なモジュール命令が用意されてます。これはモジュール内でwinobj命令を呼び出してます。利用するには「hsp3util.as」ファイルをインクルード(#include命令)してください。
この2つのモジュールファイルを利用したサンプルファイルは、HSP3本体以下の「sample\new\winobj.hsp」(HSP 3.2〜では「sample\misc\winobj.hsp」)に用意されてます。
◇ color命令でオブジェクト内の色が変わらない。
⇒ color命令ではオブジェクトの表示色(文字色、背景色)はいっさい変更できません。color命令やsyscolor命令は、mes命令、boxf命令、line命令、pset命令、circle命令などの描画処理関連の命令でしか効果がありません。
◇ オブジェクトのウィンドウハンドルとは?
⇒ HSPでいうオブジェクトIDに相当する数値です。オブジェクトのウィンドウハンドル値を取得するobjinfo関数を解説を参照してください。
◇ オブジェクトを非表示にするには?
⇒ clrobj命令は完全にオブジェクトが撤去されますが、一時的に非表示・表示を切り替えたい場合はWin32 API関数を呼びます。
◇ winobj命令で設置したオブジェクトの表示フォントがfont命令やsysfont命令で反映されない。
⇒ winobj命令で設置したオブジェクトは、font命令やsysfont命令を単純に呼んだだけではダメです。objmode命令も効果がありません。sendmsg命令を利用して、オブジェクトに対してフォントハンドルを指定したWM_SETFONTメッセージを送信してやる必要があります。(→
参照、スタティックコントロールを例にしたフォント指定)