DATEDIAL.CPP
上传用户:aakk678
上传日期:2022-07-09
资源大小:406k
文件大小:3k
源码类别:

界面编程

开发平台:

Visual C++

  1. // datedial.cpp : implementation file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1997 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "wordpad.h"
  14. #include "datedial.h"
  15. #include "helpids.h"
  16. #include <winnls.h>
  17. #ifdef _DEBUG
  18. #undef THIS_FILE
  19. static char BASED_CODE THIS_FILE[] = __FILE__;
  20. #endif
  21. SYSTEMTIME CDateDialog::m_time;
  22. LCID CDateDialog::m_id;
  23. CListBox* CDateDialog::m_pListBox = NULL;
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CDateDialog dialog
  26. const DWORD CDateDialog::m_nHelpIDs[] =
  27. {
  28. IDC_DATEDIALOG_LIST, IDH_WORDPAD_TIMEDATE,
  29. IDC_STATIC_HEADING, IDH_WORDPAD_TIMEDATE,
  30. IDOK, IDH_WORDPAD_TIMEDATE,
  31. IDCANCEL, IDH_WORDPAD_TIMEDATE,
  32. 0 , 0
  33. };
  34. CDateDialog::CDateDialog(CWnd* pParent /*=NULL*/)
  35. : CCSDialog(CDateDialog::IDD, pParent)
  36. {
  37. //{{AFX_DATA_INIT(CDateDialog)
  38. m_strSel = _T("");
  39. //}}AFX_DATA_INIT
  40. }
  41. void CDateDialog::DoDataExchange(CDataExchange* pDX)
  42. {
  43. CCSDialog::DoDataExchange(pDX);
  44. //{{AFX_DATA_MAP(CDateDialog)
  45. DDX_Control(pDX, IDC_DATEDIALOG_LIST, m_listBox);
  46. DDX_LBString(pDX, IDC_DATEDIALOG_LIST, m_strSel);
  47. //}}AFX_DATA_MAP
  48. }
  49. BEGIN_MESSAGE_MAP(CDateDialog, CCSDialog)
  50. //{{AFX_MSG_MAP(CDateDialog)
  51. ON_LBN_DBLCLK(IDC_DATEDIALOG_LIST, OnDblclkDatedialogList)
  52. //}}AFX_MSG_MAP
  53. END_MESSAGE_MAP()
  54. /////////////////////////////////////////////////////////////////////////////
  55. // CDateDialog message handlers
  56. BOOL CDateDialog::OnInitDialog() 
  57. {
  58. CCSDialog::OnInitDialog();
  59. m_pListBox = &m_listBox; // set static member
  60. GetLocalTime(&m_time);
  61. m_id = GetUserDefaultLCID();
  62. EnumDateFormats(DateFmtEnumProc, m_id, DATE_SHORTDATE);
  63. EnumDateFormats(DateFmtEnumProc, m_id, DATE_LONGDATE);
  64. EnumTimeFormats(TimeFmtEnumProc, m_id, 0);
  65. m_pListBox = NULL;
  66. m_listBox.SetCurSel(0);
  67. return TRUE;  // return TRUE unless you set the focus to a control
  68.               // EXCEPTION: OCX Property Pages should return FALSE
  69. }
  70. BOOL CALLBACK CDateDialog::DateFmtEnumProc(LPTSTR lpszFormatString)
  71. {
  72. ASSERT(m_pListBox != NULL);
  73. TCHAR buf[256];
  74. VERIFY(GetDateFormat(m_id, 0, &m_time, lpszFormatString, buf, 256));
  75. // we can end up with same format because a format with leading
  76. // zeroes may be the same as one without when a number is big enough
  77. // e.g. 09/10/94 9/10/94 are different but 10/10/94 and 10/10/94 are
  78. // the same
  79. if (m_pListBox->FindStringExact(-1,buf) == CB_ERR)
  80. m_pListBox->AddString(buf);
  81. return TRUE;
  82. }
  83. BOOL CALLBACK CDateDialog::TimeFmtEnumProc(LPTSTR lpszFormatString)
  84. {
  85. ASSERT(m_pListBox != NULL);
  86. TCHAR buf[256];
  87. VERIFY(GetTimeFormat(m_id, 0, &m_time, lpszFormatString, buf, 256));
  88. // we can end up with same format because a format with leading
  89. // zeroes may be the same as one without when a number is big enough
  90. // e.g. 09/10/94 9/10/94 are different but 10/10/94 and 10/10/94 are
  91. // the same
  92. if (m_pListBox->FindStringExact(-1,buf) == CB_ERR)
  93. m_pListBox->AddString(buf);
  94. return TRUE;
  95. }
  96. void CDateDialog::OnDblclkDatedialogList() 
  97. {
  98. OnOK();
  99. }