![]() |
![]() |
|
![]() |
||||||||||||||||||
![]() |
![]() |
![]() |
||||||||||||||||
|
![]() |
|
![]() |
|
||||||||||||||
![]() |
![]() |
Календарь / Разное. / Дата, время, таймеры |
![]() |
КалендарьАвтор: Norm Almond. Скачать исходник с примером - 44Kb ОписаниеПозволяет задавать описание к любому дню месяца, ведёт лог. Для программистов здесь будут интересены некоторые реализации элементов управления. Также устранены недостатки многих календарей присутствующих на рынке программного обеспечения. Интерфейс
ИспользованиеФайлы:
В заголовочный файл необходимо включить "calwnd.h" // Добавление календаря и зависимых файлов #include "CalWnd.h" Теперь создаём объект CCalWnd как член вашего Вашего класса окна class CMyWnd
{
public:
... другие объявления
protected:
CCalWnd m_wndCalendar;
Теперь создаём окно календаря. int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// Сперва вызываем OnCreate базового класса
if (CWnd ::OnCreate(lpCreateStruct) == -1)
return -1;
// Теперь создаём наш календарь
// при создании окна задаются координаты лева и верха.
// размер календаря устанавливается автоматически ...
if (m_wndCalendar.Create(NULL,"Calendar",
WS_VISIBLE|WS_CHILD,CRect(20,20,0,0),this,0x0101) == -1)
return -1;
... другой код
Так же Вам необходимо включить обработчик сообщения об изменении даты. (Когда пользователь кликает по дате). Он вставляется в .cpp файл Вашего главного окна. Поместить его надо за пределами комментария AFX_MSG_MAP. BEGIN_MESSAGE_MAP(CChildView,CWnd )
//{{AFX_MSG_MAP(CChildView)
ON_WM_PAINT()
ON_WM_CREATE()
ON_WM_LBUTTONDBLCLK()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_DATE_NOTIFY,OnDateNotify) // <--- СЮДА
END_MESSAGE_MAP()
И, соответственно, в .h файл. Естевственно за пределами AFX_MSG_MAP комментария. //{{AFX_MSG(CChildView)
afx_msg void OnPaint();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
//}}AFX_MSG
void OnDateNotify(UINT nId); // <--- СЮДА
DECLARE_MESSAGE_MAP()
И в заключении сам обработчик. LRESULT CChildView::OnDateNotify(WPARAM wParam, LPARAM nControlId)
{
COleDateTime tm = m_wndCalendar.GetDate();
TRACE("Date Selected %s for Control ID %d\n",
tm.Format("%c"), nControlId);
return 0;
}
Ну а более подробно о принципе работы календаря можно посмотреть в исходнике :)
|
![]() |
![]() |
![]() |
|