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

对话框与窗口

开发平台:

Visual C++

  1. // XTWindowPos.cpp : implementation of the CXTWindowPos class.
  2. //
  3. // This file is a part of the XTREME CONTROLS 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 "Resource.h"
  22. #include "Common/XTPVC80Helpers.h"  // Visual Studio 2005 helper functions
  23. #include "Common/XTPResourceManager.h"
  24. #include "XTDefines.h"
  25. #include "XTGlobal.h"
  26. #include "XTWindowPos.h"
  27. #include "XTRegistryManager.h"
  28. #define XT_IDS_REG_SETTINGS _T("Settings")
  29. #define XT_IDS_REG_WNDPOS   _T("Window Position")
  30. #ifdef _DEBUG
  31. #define new DEBUG_NEW
  32. #undef THIS_FILE
  33. static char THIS_FILE[] = __FILE__;
  34. #endif
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CXTWindowPos
  37. /////////////////////////////////////////////////////////////////////////////
  38. CXTWindowPos::CXTWindowPos()
  39. {
  40. ASSERT(sizeof(CXTWindowPos) == sizeof(WINDOWPLACEMENT));
  41. memset((LPWINDOWPLACEMENT)this, 0, sizeof(WINDOWPLACEMENT));
  42. length = sizeof(WINDOWPLACEMENT);
  43. showCmd = SW_SHOW;
  44. }
  45. BOOL CXTWindowPos::SaveWindowPos(CWnd* pWnd, LPCTSTR lpszWndPos/*=NULL*/, LPCTSTR lpszSection/*=NULL*/)
  46. {
  47. ASSERT(pWnd); // must be valid.
  48. if (!pWnd)
  49. return FALSE;
  50. if (::IsWindow(pWnd->m_hWnd))
  51. {
  52. if (pWnd->GetWindowPlacement(this))
  53. {
  54. CString strSection;
  55. if (lpszSection)
  56. strSection = lpszSection;
  57. else
  58. strSection = XT_IDS_REG_SETTINGS;
  59. CString strEntry;
  60. if (lpszWndPos)
  61. strEntry = lpszWndPos;
  62. else
  63. strEntry = XT_IDS_REG_WNDPOS;
  64. // Make sure we don't pop up
  65. // minimized the next time
  66. if (showCmd != SW_SHOWMAXIMIZED)
  67. {
  68. showCmd = SW_SHOWNORMAL;
  69. }
  70. CXTRegistryManager regManager;
  71. regManager.WriteProfileBinary(strSection, strEntry,
  72. reinterpret_cast<LPBYTE>((LPWINDOWPLACEMENT)this), sizeof(WINDOWPLACEMENT));
  73. return TRUE;
  74. }
  75. }
  76. return FALSE;
  77. }
  78. BOOL CXTWindowPos::LoadWindowPos(CWnd* pWnd, LPCTSTR lpszWndPos/*=NULL*/, LPCTSTR lpszSection/*=NULL*/)
  79. {
  80. ASSERT_VALID(pWnd); // must be valid.
  81. if (::IsWindow(pWnd->m_hWnd))
  82. {
  83. if (LoadWindowPos(lpszWndPos, lpszSection))
  84. {
  85. pWnd->SetWindowPlacement(this);
  86. return TRUE;
  87. }
  88. }
  89. return FALSE;
  90. }
  91. BOOL CXTWindowPos::LoadWindowPos(LPCTSTR lpszWndPos/*=NULL*/, LPCTSTR lpszSection/*=NULL*/)
  92. {
  93. UINT nSize = 0;
  94. LPBYTE pbtData = 0;
  95. CString strSection;
  96. if (lpszSection)
  97. strSection = lpszSection;
  98. else
  99. strSection = XT_IDS_REG_SETTINGS;
  100. CString strEntry;
  101. if (lpszWndPos)
  102. strEntry = lpszWndPos;
  103. else
  104. strEntry = XT_IDS_REG_WNDPOS;
  105. CXTRegistryManager regManager;
  106. if (!regManager.GetProfileBinary(strSection, strEntry,
  107. &pbtData, &nSize))
  108. {
  109. return FALSE;
  110. }
  111. BOOL bResult = FALSE;
  112. if (nSize == sizeof(WINDOWPLACEMENT))
  113. {
  114. MEMCPY_S((void*)&*((LPWINDOWPLACEMENT)this), pbtData, (DWORD)sizeof(WINDOWPLACEMENT));
  115. bResult = TRUE;
  116. }
  117. delete[] pbtData;
  118. return bResult;
  119. }