SAVER.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // Saver.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "Saver.h"
  5. #include "drawwnd.h"
  6. #include "Saverdlg.h"
  7. #include "saverwnd.h"
  8. #ifdef _DEBUG
  9. #undef THIS_FILE
  10. static char BASED_CODE THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CSaverApp
  14. BEGIN_MESSAGE_MAP(CSaverApp, CWinApp)
  15. //{{AFX_MSG_MAP(CSaverApp)
  16. // NOTE - the ClassWizard will add and remove mapping macros here.
  17. //    DO NOT EDIT what you see in these blocks of generated code!
  18. //}}AFX_MSG
  19. ON_COMMAND(ID_HELP, CWinApp::OnHelp)
  20. END_MESSAGE_MAP()
  21. TCHAR szConfig[]=_T("Config");
  22. /////////////////////////////////////////////////////////////////////////////
  23. // CSaverApp construction
  24. CSaverApp::CSaverApp()
  25. {
  26. // TODO: add construction code here,
  27. // Place all significant initialization in InitInstance
  28. }
  29. /////////////////////////////////////////////////////////////////////////////
  30. // The one and only CSaverApp object
  31. CSaverApp theApp;
  32. BOOL MatchOption(LPTSTR lpsz, LPTSTR lpszOption)
  33. {
  34. if (lpsz[0] == '-' || lpsz[0] == '/')
  35. lpsz++;
  36. if (lstrcmpi(lpsz, lpszOption) == 0)
  37. return TRUE;
  38. return FALSE;
  39. }
  40. /////////////////////////////////////////////////////////////////////////////
  41. // CSaverApp initialization
  42. BOOL CSaverApp::InitInstance()
  43. {
  44. // Standard initialization
  45. // If you are not using these features and wish to reduce the size
  46. //  of your final executable, you should remove from the following
  47. //  the specific initialization routines you do not need.
  48. Enable3dControls();
  49. SetRegistryKey(_T("MFC Screen Savers Inc."));
  50. if (__argc == 1 || MatchOption(__argv[1], _T("c")))
  51. DoConfig();
  52. else if (MatchOption(__argv[1], _T("p")))
  53. {
  54. CWnd* pParent = CWnd::FromHandle((HWND)atol(__argv[2]));
  55. ASSERT(pParent != NULL);
  56. CDrawWnd* pWnd = new CDrawWnd();
  57. CRect rect;
  58. pParent->GetClientRect(&rect);
  59. pWnd->Create(NULL, WS_VISIBLE|WS_CHILD, rect, pParent, NULL);
  60. m_pMainWnd = pWnd;
  61. return TRUE;
  62. }
  63. else if (MatchOption(__argv[1], _T("s")))
  64. {
  65. CSaverWnd* pWnd = new CSaverWnd;
  66. pWnd->Create();
  67. m_pMainWnd = pWnd;
  68. return TRUE;
  69. }
  70. return FALSE;
  71. }
  72. void CSaverApp::DoConfig()
  73. {
  74. CSaverDlg dlg;
  75. dlg.m_nWidth = GetProfileInt(szConfig, _T("Width"), 10);
  76. int nStyle = GetProfileInt(szConfig, _T("Style"), 0);
  77. dlg.m_nCapStyle = 0;
  78. if ((nStyle & PS_ENDCAP_MASK) == PS_ENDCAP_SQUARE)
  79. dlg.m_nCapStyle = 1;
  80. else if ((nStyle & PS_ENDCAP_MASK) == PS_ENDCAP_FLAT)
  81. dlg.m_nCapStyle = 2;
  82. dlg.m_nJoinStyle = 0;
  83. if ((nStyle & PS_JOIN_MASK) == PS_JOIN_BEVEL)
  84. dlg.m_nJoinStyle = 1;
  85. else if ((nStyle & PS_JOIN_MASK) == PS_JOIN_MITER)
  86. dlg.m_nJoinStyle = 2;
  87. dlg.m_nResolution = GetProfileInt(szConfig, _T("Resolution"), 10);
  88. dlg.m_nSpeed = GetProfileInt(szConfig, _T("Speed"), 100);
  89. dlg.m_color = RGB(GetProfileInt(szConfig, _T("ColorRed"), 255),
  90. GetProfileInt(szConfig, _T("ColorGreen"), 0),
  91. GetProfileInt(szConfig, _T("ColorBlue"), 0));
  92. m_pMainWnd = &dlg;
  93. if (dlg.DoModal() == IDOK)
  94. {
  95. WriteProfileInt(szConfig, _T("ColorRed"), GetRValue(dlg.m_color));
  96. WriteProfileInt(szConfig, _T("ColorGreen"), GetGValue(dlg.m_color));
  97. WriteProfileInt(szConfig, _T("ColorBlue"), GetBValue(dlg.m_color));
  98. WriteProfileInt(szConfig, _T("Width"), dlg.m_nWidth);
  99. int nStyle = 0;
  100. if (dlg.m_nCapStyle == 0)
  101. nStyle = PS_ENDCAP_ROUND;
  102. else if (dlg.m_nCapStyle == 1)
  103. nStyle = PS_ENDCAP_SQUARE;
  104. else if (dlg.m_nCapStyle == 2)
  105. nStyle = PS_ENDCAP_FLAT;
  106. if (dlg.m_nJoinStyle == 0)
  107. nStyle |= PS_JOIN_ROUND;
  108. else if (dlg.m_nJoinStyle == 1)
  109. nStyle |= PS_JOIN_BEVEL;
  110. else if (dlg.m_nJoinStyle == 2)
  111. nStyle |= PS_JOIN_MITER;
  112. WriteProfileInt(szConfig, _T("Style"), nStyle);
  113. WriteProfileInt(szConfig, _T("Resolution"), dlg.m_nResolution);
  114. WriteProfileInt(szConfig, _T("Speed"), dlg.m_nSpeed);
  115. }
  116. }