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.