PageCalendar.cpp
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:17k
源码类别:

界面编程

开发平台:

Visual C++

  1. // PageCalendar.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "profuis_controls.h"
  5. #include "PageCalendar.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. #if (!defined __EXT_MFC_NO_DATE_PICKER)
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CPageCalendar dialog
  14. CPageCalendar::CPageCalendar(CWnd* pParent /*=NULL*/)
  15. : CPageBase(CPageCalendar::IDD, pParent)
  16. , m_bInitComplete( false )
  17. , m_bVerificationInProcess( false )
  18. {
  19. //{{AFX_DATA_INIT(CPageCalendar)
  20. //}}AFX_DATA_INIT
  21. }
  22. void CPageCalendar::DoDataExchange(CDataExchange* pDX)
  23. {
  24. CPageBase::DoDataExchange(pDX);
  25. //{{AFX_DATA_MAP(CPageCalendar)
  26. DDX_Control(pDX, IDC_CALENDAR_ROWS_MIN, m_wndRowsMin);
  27. DDX_Control(pDX, IDC_CALENDAR_ROWS_MAX, m_wndRowsMax);
  28. DDX_Control(pDX, IDC_CALENDAR_COLUMNS_MAX, m_wndColumnsMax);
  29. DDX_Control(pDX, IDC_CALENDAR_COLUMNS_MIN, m_wndColumnsMin);
  30. DDX_Control(pDX, IDC_CALENDAR_ROWS_MIN_SPIN, m_spinRowsMin);
  31. DDX_Control(pDX, IDC_CALENDAR_ROWS_MAX_SPIN, m_spinRowsMax);
  32. DDX_Control(pDX, IDC_CALENDAR_COLUMNS_MIN_SPIN, m_spinColumnsMin);
  33. DDX_Control(pDX, IDC_CALENDAR_COLUMNS_MAX_SPIN, m_spinColumnsMax);
  34. DDX_Control(pDX, IDC_STATIC_NOTIFICATIONS, m_StaticNotifications);
  35. DDX_Control(pDX, IDC_STATIC_R_MIN, m_staticRMin);
  36. DDX_Control(pDX, IDC_STATIC_R_MAX, m_staticRMax);
  37. DDX_Control(pDX, IDC_STATIC_C_MIN, m_staticCMin);
  38. DDX_Control(pDX, IDC_STATIC_C_MAX, m_staticCMax);
  39. DDX_Control(pDX, IDC_CHECK_RESERVE_BORDERS, m_chkReserveBorders);
  40. DDX_Control(pDX, IDC_CHECK_NO_HDR_BK, m_chkNoHdrBk);
  41. DDX_Control(pDX, IDC_CHECK_HIDE_NON_MONTH_DAYS_INSIDE, m_chkHideNonMonthDaysInside);
  42. DDX_Control(pDX, IDC_CHECK_ENABLE_MULTIPLE_SELECT, m_chkEnableMultipleSelect);
  43. DDX_Control(pDX, IDC_CHECK_BOLD_WEEK, m_chkBoldWeek);
  44. DDX_Control(pDX, IDC_CHECK_BOLD_POPUP, m_chkBoldPopup);
  45. DDX_Control(pDX, IDC_CHECK_BOLD_HEADER, m_chkBoldHeader);
  46. DDX_Control(pDX, IDC_CHECK_BOLD_CELL, m_chkBoldCell);
  47. DDX_Control(pDX, IDC_CHECK_AUTO_DIMENSIONS_MODE, m_chkAutoDimensionsMode);
  48. DDX_Control(pDX, IDC_CHECK_SHOW_TODAY_HIGHLIGHT, m_chkShowTodayHighlight);
  49. DDX_Control(pDX, IDC_CHECK_SHOW_NON_MONTH_DAYS, m_chkShowNonMonthDays);
  50. DDX_Control(pDX, IDC_CHECK_SHOW_MONTH_LIST_SHADOW, m_chkShowMonthListShadow);
  51. DDX_Control(pDX, IDC_CHECK_SHOW_BTN_TODAY, m_chkShowBtnToday);
  52. DDX_Control(pDX, IDC_CHECK_SHOW_BTN_SEPARATOR, m_chkShowBtnSeparator);
  53. DDX_Control(pDX, IDC_CHECK_SHOW_BTN_NONE, m_chkShowBtnNone);
  54. DDX_Control(pDX, IDC_CHECK_SHOW_BORDERS, m_chkShowBorders);
  55. DDX_Control(pDX, IDC_CALENDAR, m_wndDatePicker);
  56. //}}AFX_DATA_MAP
  57. DDX_Control(pDX, IDC_NOTIFICATIONS, m_wndNotifications);
  58. }
  59. BEGIN_MESSAGE_MAP(CPageCalendar, CPageBase)
  60. //{{AFX_MSG_MAP(CPageCalendar)
  61. //}}AFX_MSG_MAP
  62. ON_REGISTERED_MESSAGE(
  63. CExtDatePickerWnd::g_nMsgSelectionNotification,
  64. OnMsgSelectionNotification
  65. )
  66. END_MESSAGE_MAP()
  67. /////////////////////////////////////////////////////////////////////////////
  68. // CPageCalendar message handlers
  69. BOOL CPageCalendar::OnInitDialog() 
  70. {
  71. CPageBase::OnInitDialog();
  72. // AddAnchor( IDC_CHECK_RESERVE_BORDERS, CSize( 0,  0) );
  73. // AddAnchor( IDC_CHECK_SHOW_BORDERS, CSize( 0,  0) );
  74. AddAnchor( IDC_CHECK_SHOW_BTN_TODAY, CSize( 0,  15) );
  75. AddAnchor( IDC_CHECK_SHOW_BTN_NONE, CSize( 0,  15) );
  76. AddAnchor( IDC_CHECK_SHOW_BTN_SEPARATOR, CSize( 0,  15) );
  77. AddAnchor( IDC_CHECK_BOLD_HEADER, CSize( 0,  30) );
  78. AddAnchor( IDC_CHECK_BOLD_POPUP, CSize( 0,  30) );
  79. AddAnchor( IDC_CHECK_BOLD_WEEK, CSize( 0,  30) );
  80. AddAnchor( IDC_CHECK_BOLD_CELL, CSize( 0,  30) );
  81. AddAnchor( IDC_CHECK_SHOW_NON_MONTH_DAYS, CSize( 0,  45) );
  82. AddAnchor( IDC_CHECK_HIDE_NON_MONTH_DAYS_INSIDE,CSize( 0,  45) );
  83. AddAnchor( IDC_CHECK_NO_HDR_BK, CSize( 0,  60) );
  84. AddAnchor( IDC_CHECK_SHOW_TODAY_HIGHLIGHT, CSize( 0,  75) );
  85. AddAnchor( IDC_CHECK_SHOW_MONTH_LIST_SHADOW,CSize( 0,  90) );
  86. AddAnchor( IDC_CHECK_ENABLE_MULTIPLE_SELECT,CSize( 0,  100) );
  87. AddAnchor( IDC_CALENDAR, __RDA_LT, __RDA_RB );
  88. AddAnchor( IDC_NOTIFICATIONS, __RDA_LB, __RDA_RB );
  89. AddAnchor( IDC_STATIC_NOTIFICATIONS, __RDA_LB );
  90. m_wndDatePicker.m_lParamCookie = LPARAM(IDC_CALENDAR);
  91. //////////////////////////////////////////////////////////////////////////
  92. ::CheckDlgButton( 
  93. this->GetSafeHwnd(), 
  94. IDC_CHECK_SHOW_BORDERS, 
  95. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_BORDER_SHOW
  96. ? BST_CHECKED
  97. : BST_UNCHECKED
  98. );
  99. ::CheckDlgButton( 
  100. this->GetSafeHwnd(), 
  101. IDC_CHECK_SHOW_BTN_NONE, 
  102. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_BUTTON_NONE
  103. ? BST_CHECKED
  104. : BST_UNCHECKED
  105. );
  106. ::CheckDlgButton( 
  107. this->GetSafeHwnd(), 
  108. IDC_CHECK_SHOW_BTN_TODAY, 
  109. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_BUTTON_TODAY
  110. ? BST_CHECKED
  111. : BST_UNCHECKED
  112. );
  113. ::CheckDlgButton( 
  114. this->GetSafeHwnd(), 
  115. IDC_CHECK_SHOW_BTN_SEPARATOR, 
  116. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_BUTTON_SEPARATOR
  117. ? BST_CHECKED
  118. : BST_UNCHECKED
  119. );
  120. ::CheckDlgButton( 
  121. this->GetSafeHwnd(), 
  122. IDC_CHECK_BOLD_HEADER, 
  123. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_BOLD_HEADER
  124. ? BST_CHECKED
  125. : BST_UNCHECKED
  126. );
  127. ::CheckDlgButton( 
  128. this->GetSafeHwnd(), 
  129. IDC_CHECK_BOLD_POPUP, 
  130. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_BOLD_HEADER_POPUP
  131. ? BST_CHECKED
  132. : BST_UNCHECKED
  133. );
  134. ::CheckDlgButton( 
  135. this->GetSafeHwnd(), 
  136. IDC_CHECK_BOLD_WEEK, 
  137. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_BOLD_WEEK_DAYS
  138. ? BST_CHECKED
  139. : BST_UNCHECKED
  140. );
  141. ::CheckDlgButton( 
  142. this->GetSafeHwnd(), 
  143. IDC_CHECK_BOLD_CELL, 
  144. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_BOLD_DAY_CELLS
  145. ? BST_CHECKED
  146. : BST_UNCHECKED
  147. );
  148. ::CheckDlgButton( 
  149. this->GetSafeHwnd(), 
  150. IDC_CHECK_SHOW_NON_MONTH_DAYS, 
  151. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_SHOW_NON_MONTH_DAYS
  152. ? BST_CHECKED
  153. : BST_UNCHECKED
  154. );
  155. ::CheckDlgButton( 
  156. this->GetSafeHwnd(), 
  157. IDC_CHECK_HIDE_NON_MONTH_DAYS_INSIDE, 
  158. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_HIDE_INNER_NON_MONTH_DAYS
  159. ? BST_CHECKED
  160. : BST_UNCHECKED
  161. );
  162. ::CheckDlgButton( 
  163. this->GetSafeHwnd(), 
  164. IDC_CHECK_RESERVE_BORDERS, 
  165. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_BORDER_RESERVE
  166. ? BST_CHECKED
  167. : BST_UNCHECKED
  168. );
  169. ::CheckDlgButton( 
  170. this->GetSafeHwnd(), 
  171. IDC_CHECK_SHOW_TODAY_HIGHLIGHT, 
  172. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_SHOW_TODAY_HIGHLIGHT
  173. ? BST_CHECKED
  174. : BST_UNCHECKED
  175. );
  176. ::CheckDlgButton( 
  177. this->GetSafeHwnd(), 
  178. IDC_CHECK_SHOW_MONTH_LIST_SHADOW, 
  179. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_SHOW_MONTH_LIST_SHADOW
  180. ? BST_CHECKED
  181. : BST_UNCHECKED
  182. );
  183. ::CheckDlgButton( 
  184. this->GetSafeHwnd(), 
  185. IDC_CHECK_ENABLE_MULTIPLE_SELECT, 
  186. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_MULTIPLE_SELECTION
  187. ? BST_CHECKED
  188. : BST_UNCHECKED
  189. );
  190. ::CheckDlgButton( 
  191. this->GetSafeHwnd(), 
  192. IDC_CHECK_NO_HDR_BK, 
  193. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_NO_HEADER_BACKGROUND
  194. ? BST_CHECKED
  195. : BST_UNCHECKED
  196. );
  197. ::CheckDlgButton( 
  198. this->GetSafeHwnd(), 
  199. IDC_CHECK_AUTO_DIMENSIONS_MODE, 
  200. m_wndDatePicker.GetDatePickerStyle() & __EDPWS_AUTO_DIMENSION_MODE
  201. ? BST_CHECKED
  202. : BST_UNCHECKED
  203. );
  204. GetDlgItem( IDC_CALENDAR_COLUMNS_MAX )->EnableWindow( IsDlgButtonChecked( IDC_CHECK_AUTO_DIMENSIONS_MODE ) );
  205. GetDlgItem( IDC_CALENDAR_ROWS_MAX )->EnableWindow( IsDlgButtonChecked( IDC_CHECK_AUTO_DIMENSIONS_MODE ) );
  206. GetDlgItem( IDC_CALENDAR_COLUMNS_MAX_SPIN )->EnableWindow( IsDlgButtonChecked( IDC_CHECK_AUTO_DIMENSIONS_MODE ) );
  207. GetDlgItem( IDC_CALENDAR_ROWS_MAX_SPIN )->EnableWindow( IsDlgButtonChecked( IDC_CHECK_AUTO_DIMENSIONS_MODE ) );
  208. m_spinColumnsMin.SetRange(0,10);
  209. m_spinColumnsMax.SetRange(0,10);
  210. m_spinRowsMin.SetRange(0,10);
  211. m_spinRowsMax.SetRange(0,10);
  212. GetDlgItem( IDC_CALENDAR_COLUMNS_MIN )->SetWindowText(_T("1"));
  213. GetDlgItem( IDC_CALENDAR_ROWS_MIN )->SetWindowText(_T("1"));
  214. GetDlgItem( IDC_CALENDAR_COLUMNS_MAX )->SetWindowText(_T("1"));
  215. GetDlgItem( IDC_CALENDAR_ROWS_MAX )->SetWindowText(_T("1"));
  216. m_bInitComplete = true;
  217. return TRUE;  // return TRUE unless you set the focus to a control
  218.               // EXCEPTION: OCX Property Pages should return FALSE
  219. }
  220. //////////////////////////////////////////////////////////////////////////
  221. BOOL CPageCalendar::OnCmdMsg(UINT nID, INT nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
  222. {
  223. if( !m_bInitComplete ){
  224. return CPageBase::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  225. }
  226. if( nCode == EN_CHANGE && !m_bVerificationInProcess)
  227. {
  228. switch( nID )
  229. {
  230. case IDC_CALENDAR_ROWS_MIN:
  231. {
  232. INT nRowsMin = GetDlgItemInt( IDC_CALENDAR_ROWS_MIN );
  233. if( nRowsMin < 1 ){
  234. nRowsMin = 1;
  235. }
  236. CSize szCalendarDimensionsMin;
  237. CSize szCalendarDimensionsMax;
  238. m_wndDatePicker.DimGet( 
  239. &szCalendarDimensionsMin,
  240. &szCalendarDimensionsMax
  241. );
  242. szCalendarDimensionsMin.cy = nRowsMin;
  243. m_wndDatePicker.DimSet( 
  244. szCalendarDimensionsMin,
  245. szCalendarDimensionsMax
  246. );
  247. _VerifyCalendarDimensions();
  248. }
  249. break;
  250. case IDC_CALENDAR_COLUMNS_MIN:
  251. {
  252. INT nColumnsMin = GetDlgItemInt( IDC_CALENDAR_COLUMNS_MIN );
  253. if( nColumnsMin < 1 ){
  254. nColumnsMin = 1;
  255. }
  256. CSize szCalendarDimensionsMin;
  257. CSize szCalendarDimensionsMax;
  258. m_wndDatePicker.DimGet( 
  259. &szCalendarDimensionsMin,
  260. &szCalendarDimensionsMax
  261. );
  262. szCalendarDimensionsMin.cx = nColumnsMin;
  263. m_wndDatePicker.DimSet( 
  264. szCalendarDimensionsMin,
  265. szCalendarDimensionsMax
  266. );
  267. _VerifyCalendarDimensions();
  268. }
  269. break;
  270. case IDC_CALENDAR_ROWS_MAX:
  271. {
  272. INT nRowsMax = GetDlgItemInt( IDC_CALENDAR_ROWS_MAX );
  273. if( nRowsMax < 1 ){
  274. nRowsMax = 1;
  275. }
  276. CSize szCalendarDimensionsMin;
  277. CSize szCalendarDimensionsMax;
  278. m_wndDatePicker.DimGet( 
  279. &szCalendarDimensionsMin,
  280. &szCalendarDimensionsMax
  281. );
  282. szCalendarDimensionsMax.cy = nRowsMax;
  283. m_wndDatePicker.DimSet( 
  284. szCalendarDimensionsMin,
  285. szCalendarDimensionsMax
  286. );
  287. _VerifyCalendarDimensions();
  288. }
  289. break;
  290. case IDC_CALENDAR_COLUMNS_MAX:
  291. {
  292. INT nColumnsMax = GetDlgItemInt( IDC_CALENDAR_COLUMNS_MAX );
  293. if( nColumnsMax < 1 ){
  294. nColumnsMax = 1;
  295. }
  296. CSize szCalendarDimensionsMin;
  297. CSize szCalendarDimensionsMax;
  298. m_wndDatePicker.DimGet( 
  299. &szCalendarDimensionsMin,
  300. &szCalendarDimensionsMax
  301. );
  302. szCalendarDimensionsMax.cx = nColumnsMax;
  303. m_wndDatePicker.DimSet( 
  304. szCalendarDimensionsMin,
  305. szCalendarDimensionsMax
  306. );
  307. _VerifyCalendarDimensions();
  308. }
  309. break;
  310. default:
  311. return CPageBase::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  312. }
  313. m_wndDatePicker.UpdateDatePickerWnd();
  314. return TRUE;
  315. }
  316. if( nCode == CN_COMMAND )
  317. {
  318. switch( nID )
  319. {
  320. case IDC_CHECK_SHOW_BORDERS:
  321. IsDlgButtonChecked( nID )
  322. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_BORDER_SHOW )
  323. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_BORDER_SHOW, 0 );
  324. break;
  325. case IDC_CHECK_SHOW_BTN_TODAY:
  326. IsDlgButtonChecked( nID )
  327. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_BUTTON_TODAY )
  328. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_BUTTON_TODAY, 0 );
  329. break;
  330. case IDC_CHECK_SHOW_BTN_NONE:
  331. IsDlgButtonChecked( nID )
  332. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_BUTTON_NONE )
  333. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_BUTTON_NONE, 0 );
  334. break;
  335. case IDC_CHECK_SHOW_BTN_SEPARATOR:
  336. IsDlgButtonChecked( nID )
  337. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_BUTTON_SEPARATOR )
  338. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_BUTTON_SEPARATOR, 0 );
  339. break;
  340. case IDC_CHECK_BOLD_HEADER:
  341. IsDlgButtonChecked( nID )
  342. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_BOLD_HEADER )
  343. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_BOLD_HEADER, 0 );
  344. break;
  345. case IDC_CHECK_BOLD_POPUP:
  346. IsDlgButtonChecked( nID )
  347. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_BOLD_HEADER_POPUP )
  348. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_BOLD_HEADER_POPUP, 0 );
  349. break;
  350. case IDC_CHECK_BOLD_WEEK:
  351. IsDlgButtonChecked( nID )
  352. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_BOLD_WEEK_DAYS )
  353. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_BOLD_WEEK_DAYS, 0 );
  354. break;
  355. case IDC_CHECK_BOLD_CELL:
  356. IsDlgButtonChecked( nID )
  357. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_BOLD_DAY_CELLS )
  358. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_BOLD_DAY_CELLS, 0 );
  359. break;
  360. case IDC_CHECK_HIDE_NON_MONTH_DAYS_INSIDE:
  361. IsDlgButtonChecked( nID )
  362. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_HIDE_INNER_NON_MONTH_DAYS )
  363. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_HIDE_INNER_NON_MONTH_DAYS, 0 );
  364. break;
  365. case IDC_CHECK_RESERVE_BORDERS:
  366. IsDlgButtonChecked( nID )
  367. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_BORDER_RESERVE )
  368. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_BORDER_RESERVE, 0 );
  369. break;
  370. case IDC_CHECK_SHOW_NON_MONTH_DAYS:
  371. IsDlgButtonChecked( nID )
  372. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_SHOW_NON_MONTH_DAYS )
  373. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_SHOW_NON_MONTH_DAYS, 0 );
  374. break;
  375. case IDC_CHECK_SHOW_TODAY_HIGHLIGHT:
  376. IsDlgButtonChecked( nID )
  377. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_SHOW_TODAY_HIGHLIGHT )
  378. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_SHOW_TODAY_HIGHLIGHT, 0 );
  379. break;
  380. case IDC_CHECK_SHOW_MONTH_LIST_SHADOW:
  381. IsDlgButtonChecked( nID )
  382. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_SHOW_MONTH_LIST_SHADOW )
  383. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_SHOW_MONTH_LIST_SHADOW, 0 );
  384. break;
  385. case IDC_CHECK_ENABLE_MULTIPLE_SELECT:
  386. IsDlgButtonChecked( nID )
  387. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_MULTIPLE_SELECTION )
  388. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_MULTIPLE_SELECTION, 0 );
  389. break;
  390. case IDC_CHECK_NO_HDR_BK:
  391. IsDlgButtonChecked( nID )
  392. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_NO_HEADER_BACKGROUND )
  393. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_NO_HEADER_BACKGROUND, 0 );
  394. break;
  395. case IDC_CHECK_AUTO_DIMENSIONS_MODE:
  396. IsDlgButtonChecked( nID )
  397. ? m_wndDatePicker.ModifyDatePickerStyle( 0, __EDPWS_AUTO_DIMENSION_MODE )
  398. : m_wndDatePicker.ModifyDatePickerStyle( __EDPWS_AUTO_DIMENSION_MODE, 0 );
  399. GetDlgItem( IDC_CALENDAR_COLUMNS_MAX )->EnableWindow( IsDlgButtonChecked( nID ) );
  400. GetDlgItem( IDC_CALENDAR_ROWS_MAX )->EnableWindow( IsDlgButtonChecked( nID ) );
  401. GetDlgItem( IDC_CALENDAR_COLUMNS_MAX_SPIN )->EnableWindow( IsDlgButtonChecked( nID ) );
  402. GetDlgItem( IDC_CALENDAR_ROWS_MAX_SPIN )->EnableWindow( IsDlgButtonChecked( nID ) );
  403. break;
  404. default:
  405. return CPageBase::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  406. }
  407. m_wndDatePicker.UpdateDatePickerWnd();
  408. return TRUE;
  409. }
  410. return CPageBase::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  411. }
  412. //////////////////////////////////////////////////////////////////////////
  413. void CPageCalendar::_VerifyCalendarDimensions()
  414. {
  415. m_bVerificationInProcess = true;
  416. CSize szCalendarDimensionsMin;
  417. CSize szCalendarDimensionsMax;
  418. m_wndDatePicker.DimGet( 
  419. &szCalendarDimensionsMin,
  420. &szCalendarDimensionsMax
  421. );
  422. SetDlgItemInt( IDC_CALENDAR_ROWS_MIN, szCalendarDimensionsMin.cy );
  423. SetDlgItemInt( IDC_CALENDAR_COLUMNS_MIN, szCalendarDimensionsMin.cx );
  424. SetDlgItemInt( IDC_CALENDAR_ROWS_MAX, szCalendarDimensionsMax.cy );
  425. SetDlgItemInt( IDC_CALENDAR_COLUMNS_MAX, szCalendarDimensionsMax.cx );
  426. m_bVerificationInProcess = false;
  427. }
  428. //////////////////////////////////////////////////////////////////////////
  429. LRESULT CPageCalendar::OnMsgSelectionNotification( WPARAM wParam, LPARAM lParam )
  430. {
  431. lParam;
  432. const CExtDatePickerWnd::SELECTION_NOTIFICATION * pSN =
  433. CExtDatePickerWnd::SELECTION_NOTIFICATION::FromWPARAM( wParam );
  434. if( pSN->m_lParamCookie == LPARAM(IDC_CALENDAR) )
  435. {
  436. CString strMsg, strMsgAll,
  437. strDtBegin( pSN->m_dtBegin.Format() ),
  438. strDtEnd( pSN->m_dtEnd.Format() );
  439. strMsg.Format(
  440. _T("Selection %s:t%s"),
  441. pSN->m_bFinalSelectionChanging ? _T("changed") : _T("changing"),
  442. //pSN->m_lParamCookie,
  443. strDtBegin
  444. );
  445. if( pSN->m_dtBegin != pSN->m_dtEnd ){
  446. strMsg += _T(" - ");
  447. strMsg += strDtEnd;
  448. }
  449. strMsg += _T("rn");
  450. m_wndNotifications.GetWindowText( strMsgAll );
  451. m_wndNotifications.SetWindowText( strMsgAll + strMsg );
  452. int nCharCount = strMsgAll.GetLength() + strMsg.GetLength();
  453. m_wndNotifications.SetSel(nCharCount-1,nCharCount-1);
  454. }
  455. return 0L;
  456. }
  457. #endif // #if (!defined __EXT_MFC_NO_DATE_PICKER)