J'ai aussi XP pro, donc ya un blème ?
Une proposition de code pour ta lib: un DateRequester() ?
Code : Tout sélectionner
Procedure CalendarCallback(Window.l, message.l, wParam.l, lParam.l)
Result = #PB_ProcessPureBasicEvents
;#MCN_SELECT = -746 ; MCN_SELECT = MCN_FIRST + 4
Select message
Case #WM_NOTIFY
*hdrX.NMDATETIMECHANGE = lParam
Select *hdrX\nmhdr\code
Case #MCN_SELECT
SendMessage_(WindowID(0), #WM_CLOSE, 0, 0)
Result = #True
EndSelect
EndSelect
ProcedureReturn Result
EndProcedure
; Select a date with the Windows Calendar.
Procedure GetDate(DateInit.s)
;#MCM_SETCURSEL = $1002
;#MCM_GETCURSEL = $1001
dt.INIT_COMMON_CONTROLSEX\dwSize = SizeOf(INIT_COMMON_CONTROLSEX)
dt\dwICC = #ICC_DATE_CLASSES
InitCommonControlsEx_(@dt)
st.SYSTEMTIME\wYear = Val(Left(DateInit, 4))
st\wMonth = Val(Mid(DateInit, 5, 2))
st\wDay = Val(Right(DateInit, 2))
If OpenWindow(0, 165, 0, 196, 156, #PB_Window_WindowCentered | #PB_Window_Invisible, "Choisissez une date:")
hndlCalendar.l = CreateWindowEx_(0, "SysMonthCal32", "DateTime", #WS_CHILD | #WS_VISIBLE | #WS_BORDER, 0, 0, 196, 156, WindowID(0), 0, GetModuleHandle_(0), 0)
SendMessage_(hndlCalendar, #MCM_SETCURSEL, 0, @st)
HideWindow(0, 0)
SetWindowCallback(@CalendarCallback())
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow And EventWindowID() = 0
SendMessage_(hndlCalendar, #MCM_GETCURSEL, 0, @time.SYSTEMTIME)
CloseWindow(0)
ProcedureReturn Val(FormatDate("%yyyy%mm%dd", Date(time\wYear, time\wMonth, time\wDay, 0, 0, 0)))
EndIf
EndProcedure
Il faudra peut-être l'adapter pour l'inclure dans ta librairie, moi je l'utilise sous forme de dll. On peut même lui passer une date initiale en paramètre, et elle me retourne la date choisie par l'utilisateur sous la forme: "20040509" c'est le format dont j'avais besoin. On pourrait lui passer un 2ème paramètre qui serait soit une chaine vide, soit une chaine de format du genre: "AAAA/MM/JJ", ou "JJ-MM-AAAA", ou "JJ/MM/AA" il faudrait alors interprèter le format pour retourner la date dans le format choisi...
On appellerais alors: DateRequester("09/05/2004", "JJ/MM/AAAA")
Ca pourrait faire un bon DateRequester(), non ?