Изменить день начала недели на DTPicker - PullRequest
2 голосов
/ 20 января 2012

Можно ли изменить день недели, который использует элемент управления DTPicker для первого дня недели "на лету"?

Я знаю, что он использует систему в первый день недели (как определено на панели управления) для этой настройки, но можно ли изменить ее на использование другого дня без изменения настройки панели управления?

1 Ответ

4 голосов
/ 20 января 2012

Попробуйте это из сообщения в старой группе новостей VB6 от MikeD

Это можно сделать с помощью DTPicker с помощью Win32 API.DTPicker использует фактический элемент управления MonthView.Вы можете отправить этому элементу управления MCM_SETFIRSTDAYOFWEEK сообщение , чтобы изменить первый день недели.Обратите внимание, что вы должны (и можете только) делать это в событии DropDown, поскольку до этого элемент управления MonthView не существовал.MonthView разрушается после события CloseUp.Ох ... значение для первого дня недели - это lParam SendMessage (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 
...