datedial.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // datedial.cpp : implementation file
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "wordpad.h"
  22. #include "datedial.h"
  23. #include "helpids.h"
  24. #include <winnls.h>
  25. #ifdef _DEBUG
  26. #undef THIS_FILE
  27. static char BASED_CODE THIS_FILE[] = __FILE__;
  28. #endif
  29. SYSTEMTIME CDateDialog::m_time;
  30. LCID CDateDialog::m_id;
  31. CListBox* CDateDialog::m_pListBox = NULL;
  32. /////////////////////////////////////////////////////////////////////////////
  33. // CDateDialog dialog
  34. const DWORD CDateDialog::m_nHelpIDs[] =
  35. {
  36. IDC_DATEDIALOG_LIST, IDH_WORDPAD_TIMEDATE,
  37. IDC_STATIC_HEADING, IDH_WORDPAD_TIMEDATE,
  38. IDOK, IDH_WORDPAD_TIMEDATE,
  39. IDCANCEL, IDH_WORDPAD_TIMEDATE,
  40. 0 , 0
  41. };
  42. CDateDialog::CDateDialog(CWnd* pParent /*=NULL*/)
  43. : CCSDialog(CDateDialog::IDD, pParent)
  44. {
  45. //{{AFX_DATA_INIT(CDateDialog)
  46. m_strSel = _T("");
  47. //}}AFX_DATA_INIT
  48. }
  49. void CDateDialog::DoDataExchange(CDataExchange* pDX)
  50. {
  51. CCSDialog::DoDataExchange(pDX);
  52. //{{AFX_DATA_MAP(CDateDialog)
  53. DDX_Control(pDX, IDC_DATEDIALOG_LIST, m_listBox);
  54. DDX_LBString(pDX, IDC_DATEDIALOG_LIST, m_strSel);
  55. //}}AFX_DATA_MAP
  56. }
  57. BEGIN_MESSAGE_MAP(CDateDialog, CCSDialog)
  58. //{{AFX_MSG_MAP(CDateDialog)
  59. ON_LBN_DBLCLK(IDC_DATEDIALOG_LIST, OnDblclkDatedialogList)
  60. //}}AFX_MSG_MAP
  61. END_MESSAGE_MAP()
  62. /////////////////////////////////////////////////////////////////////////////
  63. // CDateDialog message handlers
  64. BOOL CDateDialog::OnInitDialog()
  65. {
  66. CCSDialog::OnInitDialog();
  67. m_pListBox = &m_listBox; // set static member
  68. GetLocalTime(&m_time);
  69. m_id = GetUserDefaultLCID();
  70. EnumDateFormats(DateFmtEnumProc, m_id, DATE_SHORTDATE);
  71. EnumDateFormats(DateFmtEnumProc, m_id, DATE_LONGDATE);
  72. EnumTimeFormats(TimeFmtEnumProc, m_id, 0);
  73. m_pListBox = NULL;
  74. m_listBox.SetCurSel(0);
  75. return TRUE;  // return TRUE unless you set the focus to a control
  76.               // EXCEPTION: OCX Property Pages should return FALSE
  77. }
  78. BOOL CALLBACK CDateDialog::DateFmtEnumProc(LPTSTR lpszFormatString)
  79. {
  80. ASSERT(m_pListBox != NULL);
  81. TCHAR buf[256];
  82. VERIFY(GetDateFormat(m_id, 0, &m_time, lpszFormatString, buf, 256));
  83. // we can end up with same format because a format with leading
  84. // zeroes may be the same as one without when a number is big enough
  85. // e.g. 09/10/94 9/10/94 are different but 10/10/94 and 10/10/94 are
  86. // the same
  87. if (m_pListBox->FindStringExact(-1,buf) == CB_ERR)
  88. m_pListBox->AddString(buf);
  89. return TRUE;
  90. }
  91. BOOL CALLBACK CDateDialog::TimeFmtEnumProc(LPTSTR lpszFormatString)
  92. {
  93. ASSERT(m_pListBox != NULL);
  94. TCHAR buf[256];
  95. VERIFY(GetTimeFormat(m_id, 0, &m_time, lpszFormatString, buf, 256));
  96. // we can end up with same format because a format with leading
  97. // zeroes may be the same as one without when a number is big enough
  98. // e.g. 09/10/94 9/10/94 are different but 10/10/94 and 10/10/94 are
  99. // the same
  100. if (m_pListBox->FindStringExact(-1,buf) == CB_ERR)
  101. m_pListBox->AddString(buf);
  102. return TRUE;
  103. }
  104. void CDateDialog::OnDblclkDatedialogList()
  105. {
  106. OnOK();
  107. }