Files
Work/common/calendar.cpp
2024-08-07 09:09:36 -04:00

92 lines
2.4 KiB
C++

#include <common/calendar.hpp>
#include <common/string.hpp>
#include <common/comctlex.hpp>
CalendarControl::CalendarControl(GUIWindow &parentWnd,HWND hControlWnd,UINT controlID)
: mParentWnd(parentWnd), Control(hControlWnd,controlID)
{
mNotifyHandler.setCallback(this,&CalendarControl::notifyHandler);
parentWnd.insertHandler(VectorHandler::NotifyHandler,&mNotifyHandler);
CommonControlsEx commonControlsEx;
commonControlsEx.flags(CommonControlsEx::InitDate);
commonControlsEx.initCommonControlsEx();
}
CalendarControl::CalendarControl(GUIWindow &parentWnd,UINT controlID,const Rect &initRect,DWORD style,DWORD styleEx)
: mParentWnd(parentWnd)
{
CommonControlsEx commonControlsEx;
commonControlsEx.flags(CommonControlsEx::InitDate);
commonControlsEx.initCommonControlsEx();
mNotifyHandler.setCallback(this,&CalendarControl::notifyHandler);
parentWnd.insertHandler(VectorHandler::NotifyHandler,&mNotifyHandler);
createControl(styleEx,MONTHCAL_CLASS,"",style,initRect,parentWnd,controlID);
}
CalendarControl::~CalendarControl()
{
}
bool CalendarControl::resize(void)
{
Rect minRect;
if(!isValid())return false;
getMinReqRect(minRect);
width(minRect.right());
height(minRect.bottom());
return true;
}
CallbackData::ReturnType CalendarControl::notifyHandler(CallbackData &someCallbackData)
{
if(controlID()!=someCallbackData.wParam())return FALSE;
NMHDR *pNotifyHeader=(NMHDR*)someCallbackData.lParam();
switch(pNotifyHeader->code)
{
case MCN_SELCHANGE :
{
NMSELCHANGE *pSelChange=((NMSELCHANGE*)someCallbackData.lParam());
handleSelChange(*pSelChange);
mSelChangeHandler.callback(CallbackData(0,(LPARAM)pSelChange));
}
case MCN_GETDAYSTATE :
{
NMDAYSTATE *pDayState=((NMDAYSTATE*)someCallbackData.lParam());
handleDayState(*pDayState);
mDayStateHandler.callback(CallbackData(0,(LPARAM)pDayState));
}
case MCN_SELECT :
{
NMSELCHANGE *pSelChange=((NMSELCHANGE*)someCallbackData.lParam());
handleSelect(*((NMSELCHANGE*)someCallbackData.lParam()));
mSelectHandler.callback(CallbackData(0,(LPARAM)pSelChange));
}
case MCN_FIRST :
break;
case MCN_LAST :
break;
}
return FALSE;
}
// virtuals
bool CalendarControl::handleSelChange(NMSELCHANGE &nmSelChange)
{
return false;
}
bool CalendarControl::handleDayState(NMDAYSTATE &nmDayState)
{
return false;
}
bool CalendarControl::handleSelect(NMSELCHANGE &nmSelChange)
{
return false;
}