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

Last Update : 2008/03/xx

◇ その他のオブジェクト

 HSPの標準命令には用意されていないオブジェクト(コントロール)を表示するサンプルコードを掲載しています。細かい解説は、ほとんど用意していませんです。その他のオブジェクトは、別ページになります。

 ⇒ タブコントロール、ツールチップ、リストビュー+カスタムドロー
 ⇒ トラックバー、アップダウンコントロール
 ⇒ アニメーションコントロール、プログレスバー

↑TOP↑

月間カレンダーコントロールの表示

 Windowsのシステムが用意している月間カレンダーコントロール(月間予定表コントロール)です。日付データはSYSTEMTIME構造体というのが使われます。

//	月間カレンダーコントロール サンプルソース1 (by Kpan)

;	月間カレンダーコントロールの設置
;	追加のウィンドウスタイル
;		$8=今日の日付を赤で囲わない
;		$10=下部分の「今日」を非表示
	winobj "sysmonthcal32", "", , $50000000 | $10, 300, 200
	hMonthcal = objinfo(stat, 2)

;	SYSTEMTIME構造体の領域確保
;	年/月/曜日/日/時/分/秒/ミリ秒 が2バイトづつ
	dim SYSTEMTIME, 4

	pos , 200
	button "取得", *get
	button "設定", *set

	stop

*get
;	明示的な指定日の取得 (MCM_GETCURSEL)
	sendmsg hMonthcal, $1001, , varptr(SYSTEMTIME)

	mes ""+wpeek(SYSTEMTIME, 0)+"年"+wpeek(SYSTEMTIME, 2)+"月"+wpeek(SYSTEMTIME, 6)+"日
	stop

*set
;	SYSTEMTIME構造体に書き込み
	wpoke SYSTEMTIME, 0, 2010	//2010年Xmas
	wpoke SYSTEMTIME, 2, 12
	wpoke SYSTEMTIME, 6, 25

;	明示的な指定日の設定 (MCM_SETCURSEL)
	sendmsg hMonthcal, $1002, , varptr(SYSTEMTIME)
//	月間カレンダーコントロール サンプルソース2 (by Kpan)
//	コントロールの状態変化をリアルタイムで監視

;	WM_NOTIFYメッセージの指定
	oncmd gosub *notify, $4E

	winobj "sysmonthcal32", "", , $50000000, 150, 150
	hMonthcal = objinfo(stat, 2)

	stop

;	WM_NOTIFYメッセージ
*notify
;	NMHDR構造体 (NMHDR.0には月間カレンダーコントロールのウィンドウハンドル)
	dupptr NMHDR, lparam, 12

;	選択状態の変化を示す通知コード (MCN_SELCHANGE)
	if NMHDR.2 = -749 {

;		NMSELCHANGE構造体 (中身はNMHDR構造体+SYSTEMTIME構造体)
		dupptr NMSELCHANGE, lparam, 20
		mes ""+wpeek(NMSELCHANGE, 12 + 0)
		mes ""+wpeek(NMSELCHANGE, 12 + 2)+"/"+wpeek(NMSELCHANGE, 12 + 6)

		return
	}

	return

↑TOP↑

日時指定コントロールの表示

 Windowsのシステムが用意している日時指定コントロール(DTPコントロール)です。DTPは「Date and Time Picker」のこと。時を刻む機能はなく日付or時間をユーザーに指定させるコントロールです。

//	日時指定コントロール サンプルソース1 (by Kpan)

;	SYSTEMTIME構造体の領域確保
;	年/月/曜日/日/時/分/秒/ミリ秒 が2バイトづつ
	dim SYSTEMTIME, 4

;	短い日付 (カレンダー)
	winobj "sysdatetimepick32", "", , $50000000, 200
	hDtp.0 = objinfo(stat, 2)

;	長い日付 (カレンダー)
	winobj "sysdatetimepick32", "", , $50000000 | $4, 200
	hDtp.1 = objinfo(stat, 2)

;	時間 (アップダウン)
	winobj "sysdatetimepick32", "", , $50000000 | $9, 200
	hDtp.2 = objinfo(stat, 2)

	button "げっと", *get
	stop

*get
	repeat 3
;		日時の取得 (DTM_GETSYSTEMTIME)
		sendmsg hDtp.cnt, $1001, , varptr(SYSTEMTIME)

		mes ""+wpeek(SYSTEMTIME, 2)+"月"+wpeek(SYSTEMTIME, 6)+"日
		mes "("+wpeek(SYSTEMTIME, 8)+":"+wpeek(SYSTEMTIME, 10)+")
	loop

 日時表記の自前のものに変更してみます。下の表は置き換え文字の書式一覧。

//	日時指定コントロール サンプルソース2 (by Kpan)

	winobj "sysdatetimepick32", "", , $50000000, 250
	hDtp = objinfo(stat, 2)

;	表示書式設定 (DTM_SETFORMAT)
	sendmsg hDtp, $1005, , "MMMがつddにち (dddよーび) tthじmふん"
yy 2桁の年
yyy 4桁の年
M 1桁or2桁の月 (1桁の場合は空白埋め)
MM 2桁の月 (1桁の場合は0埋め)
MMM 1桁or2桁の月 (中央表示)
MMMM 「1月〜12月」
d 1桁or2桁の日
dd 2桁の日 (1桁の場合は0埋め)
ddd 「日曜日〜土曜日」
dddd 「日〜土」
tt 「午前・午後」
h 12時間表記で、1桁or2桁の時
hh 12時間表記で、2桁の時 (1桁の場合は0埋め)
H 24時間表記で、1桁or2桁の時
HH 24時間表記で、2桁の時 (1桁の場合は0埋め)
m 1桁or2桁の分
mm 2桁の分 (1桁の場合は0埋め)

↑TOP↑

<< オブジェクト 8 | HSP3 オブジェクト | オブジェクト 1 >>

Copyright © 2005-2012 . All rights reserved.