Download demo project.
The Calendar Control 8.0 (mscal.ocx) shipping with Visual Studio 5.0
looks very nice. It can be very simple incorporate in your application
as a date picker control.
It has two combo box to quickly change a month and a year. Unfortunetly,
when you try to change the month or the year the date sets on NULL value and
doesn’t highlighted.
In my example I implement a full date picker control using
Calendar Control 8.0. I spend some time to find solution how to work with
year’s and month’s comboboxes and I think it will be usefull to share my
experience.
I found that IDs of the Month and the Year comboboxes have the respective
values 1 and 2.
Then, I trap the message event “NewYear”( “NewYear”) and when the combobox
obtains focus change the year(month) using NextYear()(NextMonth()) and
PreviousYear()(PreviousMonth()) methods.
This is a code for NewYear event:
void CDateCal::OnNewYearDateCalendar()
{
// TODO: Add your control notification handler code here
int nID;CWnd* pWnd = GetFocus();
nID = pWnd->GetDlgCtrlID();
CString string;
pWnd->GetWindowText( string );
if(2==nID) {//nID =2 – ID combobox Year
int nDif = atoi(string) – m_nYear;
if(nDif > 0){ //if increase Year
while(nDif–)
OnNextYear();//change year
}
else if(nDif < 0){ //if decrease Year while(nDif++) OnPrevYear();//change Year in a calendar } } }