是否可以“即时”更改 DTPicker 控件在一周的第一天使用的星期几?
我知道它使用系统一周的第一天(如控制面板中定义)进行此设置,但是否可以在不更改控制面板设置的情况下将其更改为使用另一天?
是否可以“即时”更改 DTPicker 控件在一周的第一天使用的星期几?
我知道它使用系统一周的第一天(如控制面板中定义)进行此设置,但是否可以在不更改控制面板设置的情况下将其更改为使用另一天?
试试这个,来自MikeD的旧 VB6 新闻组的帖子
您可以使用 Win32 API 使用 DTPicker 完成此操作。DTPicker 使用实际的 MonthView 控件。您可以向该控件发送MCM_SETFIRSTDAYOFWEEK 消息来更改一周的第一天。请注意,您必须(并且只能)在 DropDown 事件中执行此操作,因为在此之前,MonthView 控件不存在。在 CloseUp 事件之后,MonthView 被销毁。哦...一周第一天的值是 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