- - PR -
DateTimePickerの開始曜日変更
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-05-01 11:41
okeと申します。
VB.netにて開発してます。 DateTimePickerを使用と思っているのですが、カレンダーの始まりを 月曜日する方法が分かりません。 ご存知の方いらっしゃいましたらご教授下さい。 (無理なのかな。。) |
|
投稿日時: 2004-05-06 14:25
MonthCalenderはFirstDayOfWeekプロパティを持っていますが、DateTimePickerにはないようですね。
で、アンマネージにはなりますが... Win32のDATETIMEPICKコントロールはMONTHCALコントロールを持っており、 DTM_GETMONTHCALをSendMessageしてやることにより、MONTHCALコントロールの ウィンドウハンドルを取得することができます。 これと同様にDateTimePickerに対しDTM_GETMONTHCALをSendMessageして MONTHCALコントロールのウィンドウハンドルを求め、求めたMONTHCALコントロール に対し、MCM_SETFIRSTDAYOFWEEKをSendMessageしてやれば、週の開始曜日を 変更することができます。 Private Const DTM_FIRST As Integer = &H1000 Private Const DTM_GETMONTHCAL As Integer = DTM_FIRST + 8 Private Const MCM_FIRST As Integer = &H1000 Private Const MCM_SETFIRSTDAYOFWEEK As Integer = MCM_FIRST + 15 Private Declare Ansi Function SendMessageInt Lib "User32.dll" Alias "SendMessageA" ( _ ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer Private Declare Ansi Function SendMessagePtr Lib "User32.dll" Alias "SendMessageA" ( _ ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr Private Sub DateTimePicker1_DropDown( _ ByVal sender As Object, ByVal e As System.EventArgs _ ) Handles DateTimePicker1.DropDown 'MONTHCALコントロールのウィンドウハンドルを求める Dim hMonthCal As IntPtr = SendMessagePtr(DateTimePicker1.Handle, _ DTM_GETMONTHCAL, 0, 0) If hMonthCal.Equals(IntPtr.Zero) = False Then '週の開始曜日を変更する。 '4番目の引数が曜日(0=月, 1=火, ..... 6=日) SendMessageInt(hMonthCal, MCM_SETFIRSTDAYOFWEEK, 0, 0) End If End Sub 詳しくはMSDNライブラリでMonthCal_GetFirstDayOfWeekマクロや DateTime_GetMonthCalマクロについて調べてみてください。 |
1