カレンダーコントロールを作成します。
#Include <GuiMonthCal.au3>
_GUICtrlMonthCal_Create($hWnd, $iX, $iY[, $iStyle = 0x00000000[, $iExStyle = 0x00000000]])
パラメータ
$hWnd | 親ウィンドウまたはオーナーウィンドウのハンドル |
$iX | コントロールの水平位置 |
$iY | コントロールの垂直位置 |
$iStyle | [オプション]コントロールのスタイル: $MCS_DAYSTATE - 月カレンダーはどの日付けを太文字で表示するかについての情報をリクエストするために$MCN_GETDAYSTATE通知を送信します $MCS_MULTISELECT - ユーザーがコントロール内の日付け範囲を選択できるようにします $MCS_WEEKNUMBERS - 各日付け行の左側に週番号を表示します $MCS_NOTODAYCIRCLE - "今日"の日付けに丸をつけません $MCS_NOTODAY - 下側に"今日"の日付けを表示しません |
強制:$WS_CHILD、$WS_VISIBLE | |
$iExStyle | [オプション]コントロール拡張スタイル |
返し値
成功: | 月カレンダーウィンドウのハンドル |
失敗: | 0 |
注意
この関数は上級者、コントロール動作学習用です。
関連
_GUICtrlMonthCal_Destroy, _GUICtrlMonthCal_GetColorArray
例
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiMonthCal.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
$Debug_MC = False ; MonthCal関数に渡されるClassNameを調べる。動作を確認するにはTrueを設定し、他のコントロールのハンドルを使用
Global $hMonthCal
_Main()
Func _Main()
Local $hGUI
; GUIを作成
$hGUI = GUICreate("Month Calendar Create", 400, 300)
$hMonthCal = _GUICtrlMonthCal_Create($hGUI, 4, 4, $WS_BORDER)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; ユーザーが終了するまでループ
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hMonthCal
Switch $iCode
Case $MCN_GETDAYSTATE ; 個々の日がどのように表示されるかについての情報をリクエストするためにカレンダーコントロールによって送信される
$tInfo = DllStructCreate($tagNMDAYSTATE, $ilParam)
_DebugPrint("$MCN_GETDAYSTATE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode & @LF & _
"-->Year:" & @TAB & DllStructGetData($tInfo, "Year") & @LF & _
"-->Month:" & @TAB & DllStructGetData($tInfo, "Month") & @LF & _
"-->DOW:" & @TAB & DllStructGetData($tInfo, "DOW") & @LF & _
"-->Day:" & @TAB & DllStructGetData($tInfo, "Day") & @LF & _
"-->Hour:" & @TAB & DllStructGetData($tInfo, "Hour") & @LF & _
"-->Minute:" & @TAB & DllStructGetData($tInfo, "Minute") & @LF & _
"-->Second:" & @TAB & DllStructGetData($tInfo, "Second") & @LF & _
"-->MSecond:" & @TAB & DllStructGetData($tInfo, "MSecond") & @LF & _
"-->DayState:" & @TAB & DllStructGetData($tInfo, "DayState") & @LF & _
"-->pDayState:" & @TAB & DllStructGetData($tInfo, "pDayState"))
; MONTHDAYSTATEの配列のアドレス(DWORDビットフィールドが月内の各日付けの状態を保持している)
; 各ビット(1から31)は月内の日付けの状態を表す
; ビットがオンの場合、対応する日付けは太文字で表示され、それ以外の場合は強調なしで表示される
; 返し値なし
Case $MCN_SELCHANGE ; 現在選択されている日付け、日付け範囲を変更した際にカレンダーコントロールによって送信される
$tInfo = DllStructCreate($tagNMSELCHANGE, $ilParam)
_DebugPrint("$MCN_SELCHANGE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode & @LF & _
"-->BegYear:" & @TAB & DllStructGetData($tInfo, "BegYear") & @LF & _
"-->BegMonth:" & @TAB & DllStructGetData($tInfo, "BegMonth") & @LF & _
"-->BegDOW:" & @TAB & DllStructGetData($tInfo, "BegDOW") & @LF & _
"-->BegDay:" & @TAB & DllStructGetData($tInfo, "BegDay") & @LF & _
"-->BegHour:" & @TAB & DllStructGetData($tInfo, "BegHour") & @LF & _
"-->BegMinute:" & @TAB & DllStructGetData($tInfo, "BegMinute") & @LF & _
"-->BegSecond:" & @TAB & DllStructGetData($tInfo, "BegSecond") & @LF & _
"-->BegMSeconds:" & @TAB & DllStructGetData($tInfo, "BegMSeconds") & @LF & _
"-->EndYear:" & @TAB & DllStructGetData($tInfo, "EndYear") & @LF & _
"-->EndMonth:" & @TAB & DllStructGetData($tInfo, "EndMonth") & @LF & _
"-->EndDOW:" & @TAB & DllStructGetData($tInfo, "EndDOW") & @LF & _
"-->EndDay:" & @TAB & DllStructGetData($tInfo, "EndDay") & @LF & _
"-->EndHour:" & @TAB & DllStructGetData($tInfo, "EndHour") & @LF & _
"-->EndMinute:" & @TAB & DllStructGetData($tInfo, "EndMinute") & @LF & _
"-->EndSecond:" & @TAB & DllStructGetData($tInfo, "EndSecond") & @LF & _
"-->EndMSeconds:" & @TAB & DllStructGetData($tInfo, "EndMSeconds"))
; 返し値なし
Case $MCN_SELECT ; ユーザーがカレンダーコントロール内で明示的な日付け選択をおこなった際にカレンダーコントロールによって送信される
$tInfo = DllStructCreate($tagNMSELCHANGE, $ilParam)
_DebugPrint("$MCN_SELECT" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode & @LF & _
"-->BegYear:" & @TAB & DllStructGetData($tInfo, "BegYear") & @LF & _
"-->BegMonth:" & @TAB & DllStructGetData($tInfo, "BegMonth") & @LF & _
"-->BegDOW:" & @TAB & DllStructGetData($tInfo, "BegDOW") & @LF & _
"-->BegDay:" & @TAB & DllStructGetData($tInfo, "BegDay") & @LF & _
"-->BegHour:" & @TAB & DllStructGetData($tInfo, "BegHour") & @LF & _
"-->BegMinute:" & @TAB & DllStructGetData($tInfo, "BegMinute") & @LF & _
"-->BegSecond:" & @TAB & DllStructGetData($tInfo, "BegSecond") & @LF & _
"-->BegMSeconds:" & @TAB & DllStructGetData($tInfo, "BegMSeconds") & @LF & _
"-->EndYear:" & @TAB & DllStructGetData($tInfo, "EndYear") & @LF & _
"-->EndMonth:" & @TAB & DllStructGetData($tInfo, "EndMonth") & @LF & _
"-->EndDOW:" & @TAB & DllStructGetData($tInfo, "EndDOW") & @LF & _
"-->EndDay:" & @TAB & DllStructGetData($tInfo, "EndDay") & @LF & _
"-->EndHour:" & @TAB & DllStructGetData($tInfo, "EndHour") & @LF & _
"-->EndMinute:" & @TAB & DllStructGetData($tInfo, "EndMinute") & @LF & _
"-->EndSecond:" & @TAB & DllStructGetData($tInfo, "EndSecond") & @LF & _
"-->EndMSeconds:" & @TAB & DllStructGetData($tInfo, "EndMSeconds"))
; 返し値なし
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func _DebugPrint($s_text, $line = @ScriptLineNumber)
ConsoleWrite( _
"!===========================================================" & @LF & _
"+======================================================" & @LF & _
"-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
"+======================================================" & @LF)
EndFunc ;==>_DebugPrint