Last Update : 2007/08/xx
HSPの標準命令にはないオブジェクト(コントロール)のサンプルスクリプトを掲載しています。細かい解説は、ほとんど用意してません。以下のオブジェクトは、別ページになります。
⇒ リストビュー、チェックボックス付きリストボックス、タブコントロール、ツールチップ
⇒ アニメーションコントロール、プログレスバー
⇒ 月間カレンダーコントロール、日時指定コントロール
アップダウンコントロール付き入力ボックスのサンプルです。
HSP2では、llmod.asモジュールに「アップダウンボタン」(udbtn)という名前で用意されていました。アップダウンボタンの操作で、ボックス内の数値の単純な増減(+1 or -1)が可能です。入力ボックスの input命令 と コモンコントロール(アップダウンコントロール)を作成する winobj命令 の組み合わせで威力を発揮します。
; アップダウンコントロールサンプル (by Kpan) ; 追加のウィンドウスタイル #define UDS_WRAP $01 ; 最大値・最小値に達したらループ #define UDS_ALIGNRIGHT $04 ; アップダウンボタンを直前のオブジェクト(右部分)に組み込む #define UDS_ALIGNLEFT $08 ; アップダウンボタンを直前のオブジェクト(左部分)に組み込む #define UDS_ARROWKEYS $20 ; カーソルキーで数値変更 #define UDS_HORZ $40 ; アップダウンボタンを左右方向に #define UDS_NOTHOUSANDS $80 ; 3桁コンマ区切り無効 ; 上位・下位ワード マクロ #define ctype MAKELONG(%1,%2) (%1) & $FFFF | (%2) << 16 ; 普通の入力ボックス pos 50, 50 input a, 50, 20 ; アップダウンコントロール作成 ; (デフォルトの最大値・最小値は100〜0の範囲) winobj "msctls_updown32", "", , $50000012 | UDS_ALIGNRIGHT hUpdown = objinfo(stat, 2) ; UDM_SETRANGE ; lparam値に最大値と最小値を指定 (±32767 の整数) sendmsg hUpdown, $465, , MAKELONG(20, -10) ; 数値指定 objprm 0, 10 button "ちえつく", *check stop *check title ""+a
このアップダウンコントロール付き入力ボックスは、2つのオブジェクトから成り立っているので、clrobj命令でオブジェクトを削除する場合は、2つのオブジェクトに対して呼ばないといけません。
トラックバーコントロール、つまみの調節で数値を設定することができるコントロールです。別名スライダー。
HSP2では、llmod.asモジュールに「トラックボックス」(trackbox)なるものが用意されていましたが、一般的にはトラックバーと呼びます。
以下は、HSP3公式掲示板で提示した簡単なサンプル。winobj命令でコントロールを設置し、各種制御にsendmsg命令を使います。このコントロールについての詳細を知りたければ、Delphi言語向けですがHalbow資料館さんの該当ページ、拙作MODプレーヤーサンプルとかをチェック!
; トラックバー設置 (デフォルト範囲は0〜100) ; ウィンドウスタイルに目盛り自動表示 ($1=TBS_AUTOTICKS) winobj "msctls_trackbar32", "", , $50000000 | $1, 200, 30 ; このトラックバーのウィンドウハンドル取得 hTrackbar = objinfo(stat, 2) ; つまみの位置 50 (TBM_SETPOS) sendmsg hTrackbar, $405, 1, 50 ; バーの目盛り間隔 10 (TBM_SETTICFREQ) sendmsg hTrackbar, $414, 10 ; リアルタイムで垂直バーの動きを見たい (WM_VSCROLL) ; (水平バーの場合はWM_HSCROLLを) oncmd gosub *vscroll, $114 stop *vscroll ; lparamにウィンドウハンドルが返る if lparam = hTrackbar { ; 現在の位置取得 (TBM_GETPOS) ; statに位置が返ります。 sendmsg hTrackbar, $400 title ""+stat } return
トラックバーコントロールのツマミ部分を自前で描画するカスタムドロー処理。以下は、HSP Help Centerさんの掲示板にて提示した何ともテキトーなスクリプトです。細かい説明一切なし。(→ 参照、カスタムドローの備忘録)
; トラックバーコントロール+カスタム描画 (by Kpan) #include "user32.as" #define CDDS_PREPAINT 0x00000001 #define CDDS_ITEMPREPAINT 0x00010001 #define CDRF_NOTIFYITEMDRAW 0x00000020 #define CDRF_SKIPDEFAULT 0x00000004 oncmd gosub *notify, $4E dim RECT, 4 winobj "msctls_trackbar32", "", , $50000000, 300 hTrackbar = objinfo(stat, 2) stop *notify ; NMHDR構造体 dupptr NMHDR, lparam, 12 if NMHDR.0 = hTrackbar { if NMHDR.2 = -12 { ; NMCUSTOMDRAW構造体 dupptr NMCUSTOMDRAW, lparam, 60 ; CDDS_PREPAINTステージ if NMCUSTOMDRAW.3 = CDDS_PREPAINT { return CDRF_NOTIFYITEMDRAW } ; CDDS_ITEMPREPAINTステージ if NMCUSTOMDRAW.3 = CDDS_ITEMPREPAINT { ; TBCD_THUMB if NMCUSTOMDRAW.9 = 2 { RECT.0 = NMCUSTOMDRAW.5 RECT.1 = NMCUSTOMDRAW.6 RECT.2 = NMCUSTOMDRAW.7 RECT.3 = NMCUSTOMDRAW.8 DrawText NMCUSTOMDRAW.4, "+", -1, varptr (RECT), $10 return CDRF_SKIPDEFAULT } } } } return
<< オブジェクト 6 | HSP3 オブジェクト | オブジェクト 8 >>
Copyright © 2005-2012 Kpan. All rights reserved.