Sign in to follow this  
Followers 0
DjDeep00

Mulitple Date Selection with GUICtrlCreateMonthCal

7 posts in this topic

I want to be able to choose a date range in a calendar. I am able to choose it in the GUI but I need help reading it from the GUI. Here is my script:

#include <GUIConstants.au3>

#include <date.au3>

#include <GuiMonthCal.au3>

opt('MustDeclareVars', 1)

Dim $Date, $Date2, $Btn_Dates, $Combo, $msg, $Status

GUICreate( "Set Max Sel Count", 450, 254)

$Date2 = GUICtrlCreateMonthCal (_NowCalcDate(), 10, 10, 190, 155,$MCS_MULTISELECT)

_GUICtrlMonthCalSetMaxSelCount ($Date2, 100)

$Status = GUICtrlCreateLabel("", 0, 234, 450, 20, BitOR($SS_SUNKEN, $SS_CENTER))

$Btn_Dates = GUICtrlCreateButton("Dates", 180, 180, 90, 30)

GUISetState()

While 1

$msg = GUIGetMsg()

Select

Case $msg = $GUI_EVENT_CLOSE

ExitLoop

Case $msg = $Btn_Dates

Msgbox(0,"Date",GUICtrlRead($Date2))

EndSelect

WEnd

Share this post


Link to post
Share on other sites



lResult = SendMessage( // returns LRESULT in lResult

(HWND) hWndControl, // handle to destination control

(UINT) MCM_GETSELRANGE, // message ID

(WPARAM) wParam, // = 0; not used, must be zero

(LPARAM) lParam // = (LPARAM) (LPSYSTEMTIME) lprgSysTimeArray;

);

Here is what I have so far. Please advise.

Func _GUICtrlMonthCalGetRange($h_monthcal)

If IsHWnd($h_monthcal) Then

Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_monthcal, "int", $MCS_MULTISELECT, "int", 0, "int", 0)

Return $a_ret[0][0]

Else

Return GUICtrlSendMsg($h_monthcal, $MCS_MULTISELECT, 0, 0)

EndIf

EndFunc

Share this post


Link to post
Share on other sites

don't forget:

lprgSysTimeArray

Pointer to a two-element array of SYSTEMTIME structures that will receive the lower and upper limits of the user's selection. The lower and upper limits are placed in lprgSysTimeArray[0] and lprgSysTimeArray[1], respectively. This parameter must be a valid address and cannot be NULL.

1st off you need to be using MCM_GETSELRANGE not MCS_MULTISELECT

I played around with this a little yesterday, haven't had time to keep at it.


SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Share this post


Link to post
Share on other sites

don't forget:

lprgSysTimeArray

Pointer to a two-element array of SYSTEMTIME structures that will receive the lower and upper limits of the user's selection. The lower and upper limits are placed in lprgSysTimeArray[0] and lprgSysTimeArray[1], respectively. This parameter must be a valid address and cannot be NULL.

1st off you need to be using MCM_GETSELRANGE not MCS_MULTISELECT

I played around with this a little yesterday, haven't had time to keep at it.

Not sure how you got the value for Global Const $MCS_MULTISELECT = 0x2. What will be the value for $MCM_GETSELRANGE?

Sorry for all the questions. This is my first time making a UDF. If possible if you can show me how to do this then I might not have to bug anyone in the future.

Thanx in advance.

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Global Const $MCM_GETRANGE = ($MCM_FIRST + 17)

either google or use something like APIViewer 2004

Edited by gafrost

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Share this post


Link to post
Share on other sites

Global Const $MCM_GETRANGE = ($MCM_FIRST + 17)

either google or use something like APIViewer 2004

I need help with this, I'd like to read a range. Anyone ever got this to work ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0