HSP3 あれこれ <オブジェクト編>

Last Update : 2008/06/xx

HSP3 発展オブジェクト

 HSP3(HSP 3.x)で設置できる「オブジェクト」をベースに、Windows API(Win32 API関数)を駆使した発展的なサンプルコードやらモジュールを掲載。加えて、HSP3のwinobj命令sendmsg命令を使って標準命令にはないオブジェクト(Windowsのコントロール)の設置や、ちょっと高度な処理を実現します。

HSP3 命令 おもな内容
ボタン (button)
チェックボックス (chkbox)
ウィンドウスタイルの変更
 ├文字列の表示位置変更
 └複数行テキスト
チェックボックスの監視
3ステートチェックボックスの設置
ラジオボタンの設置
トグルボタンの設置
入力ボックス (input)
メッセージボックス (mesbox)
ウィンドウスタイルの変更
 ├数値のみ入力可能
 └入力文字の大文字・小文字変換
文字の表示色や背景色の変更
編集不可入力ボックスの切り替え
境界線枠のない入力ボックスの設置
スタティックテキスト (旧mesbox) スタティックテキストの表示
ハイパーリンクテキストの表示
アイコン表示オブジェクトの設置
セパレータライン(区切り線)の表示
リストボックス (listbox) 項目の追加・挿入・削除・前後入れ替え
項目の文字列取得
文字の表示色の変更
項目選択の監視 (ダブルクリック)
複数項目選択可能なリストボックスの設置
ソート機能付きリストボックスの設置
ドラッグリストボックスの設置
コンボボックス (combox) 項目の追加・挿入・削除
項目の文字列取得
文字の表示色の変更
項目選択の監視
その他
(winobj命令 利用)
タブコントロール
リストビュー+カスタムドロー
チェックボックス付リストボックス
ツールチップ
アップダウンコントロール
トラックバーコントロール
トラックバー+カスタムドロー
ステータスバー
アニメーションコントロール
プログレスバーコントロール
月間カレンダーコントロール
日時指定コントロール

^

オブジェクト関連のHSP3命令

 HSP3にはオブジェクトを設置する標準命令(全6種)以外に、下のような関連する命令が用意されてます。

HSP3 命令 処理内容
pos

表示位置の指定
objsize 表示サイズの指定
font / sysfont (+objmode フォントの指定
objprm

文字列/内容の変更
(button, input, mesbox, listbox, combox)
状態の変更 (chkbox)
[HSP 3.2〜] 文字列の変更 (chkbox)
項目の選択 (listbox, combox)
sendmsg
(HSP2 : objsend
[HSP 3.0/3.1] 文字列の変更 (chkbox)
文字列の取得
objsel フォーカスの移動
clrobj 削除・撤去
getobjsize (obj.as) 表示位置・表示サイズの取得
resizeobj (obj.as) 表示位置・表示サイズの変更
objgray (obj.as) 使用不可 (灰色グレー表示)

 HSP3本体のcommonフォルダにある「obj.as」ファイルには、HSP3標準命令にはないモジュール命令が用意されてます。これはWin32 API関数をモジュール内で呼び出してます。利用するには「obj.as」ファイルをインクルードしてください。

 あと、HSP3本体のcommonフォルダにある「hsp3util.as」ファイルには、スタティックテキスト、スクロールバー、プログレスバーというような標準命令にはないオブジェクトを設置する簡易のモジュール命令も用意されてます。これはモジュール内でwinobj命令を呼び出してます。利用するには「hsp3util.as」ファイルをインクルードしてください。

 この2つのモジュールファイルのサンプルは、HSP3本体以下の「sample\new\winobj.hsp」に用意されてます。

^

HSP3 雑ネタ

◇ color命令でオブジェクトの色が変わらない。
⇒ 一切変わりらないです。color命令はmes命令、boxf命令、line命令などの描画処理でのみ効果があります。

◇ オブジェクトのウィンドウハンドルとは?
⇒ HSPのオブジェクトIDを指定して、オブジェクトのウィンドウハンドル値を取得するobjinfo関数を参照してください。HSP3から導入された新規関数です。

◇ winobj命令で設置したオブジェクトの表示フォントがfont命令やsysfont命令で反映されない。
font命令sysfont命令を単純に呼んだだけではダメです。objmode命令も効果がありません。sendmsg命令を利用してフォントハンドルを指定したWM_SETFONTメッセージをオブジェクトに対して送信してやる必要があります。(→ 参照、スタティックコントロールを例にしたフォント指定

^

Copyright © 2005-2008 Kpan. All rights reserved. (サイトマップ