2

DTPickerコントロールが「オンザフライ」で週の最初の日に使用する曜日を変更することは可能ですか?

この設定にはシステムの最初の曜日(コントロールパネルで定義)を使用していることは知っていますが、コントロールパネルの設定を変更せずに別の曜日を使用するように変更できますか?

4

1 に答える 1

4

MikeDによる古いVB6ニュースグループの投稿からこれを試してください

Win32APIを使用してDTPickerでそれを行うことができます。DTPickerは、実際のMonthViewコントロールを使用します。このコントロールにMCM_SETFIRSTDAYOFWEEKメッセージを送信して、週の最初の曜日を変更できます。それ以前はMonthViewコントロールが存在しなかったため、DropDownイベントでこれを実行する必要があります(実行できるのはこれだけです)。MonthViewは、CloseUpイベントの後に破棄されます。ああ...週の最初の日の値はSendMessageのlParamです(wParamは常に0です)

Option Explicit 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" 
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As 
Any) As Long 
Private Const MCM_FIRST                 As Long = &H1000& 
Private Const MCM_SETFIRSTDAYOFWEEK     As Long = (MCM_FIRST + 15) 
Private Const DTM_FIRST                 As Long = &H1000& 
Private Const DTM_GETMONTHCAL           As Long = (DTM_FIRST + 8) 
Private Sub DTPicker1_DropDown() 
    Dim hMonthview As Long 
    'Get hwnd of MonthView control 
    hMonthview = SendMessage(DTPicker1.hwnd, DTM_GETMONTHCAL, 0&, ByVal 0&) 
    'Set first day of week for MonthView, according to the following: 
    '   Value      Day of Week 
    '   0          Monday 
    '   1          Tuesday 
    '   2          Wednesday 
    '   3          Thursday 
    '   4          Friday 
    '   5          Saturday 
    '   6          Sunday 
    Call SendMessage(hMonthview, MCM_SETFIRSTDAYOFWEEK, 0&, ByVal 6&) 'first 
day of week = Sunday
End Sub 
于 2012-01-20T12:53:42.763 に答える