SingleScreen.cpp
上传用户:qdhuadeli
上传日期:2007-02-07
资源大小:978k
文件大小:3k
源码类别:

多显示器编程

开发平台:

Visual C++

  1. // SingleScreen.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "SingleScreen.h"
  5. #include "SingleScreenDlg.h"
  6. #include "SaverWindow.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CSingleScreenApp
  14. BEGIN_MESSAGE_MAP(CSingleScreenApp, CWinApp)
  15. //{{AFX_MSG_MAP(CSingleScreenApp)
  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. /////////////////////////////////////////////////////////////////////////////
  22. // CSingleScreenApp construction
  23. CSingleScreenApp::CSingleScreenApp()
  24. {
  25. // TODO: add construction code here,
  26. // Place all significant initialization in InitInstance
  27. }
  28. /////////////////////////////////////////////////////////////////////////////
  29. // The one and only CSingleScreenApp object
  30. CSingleScreenApp theApp;
  31. /////////////////////////////////////////////////////////////////////////////
  32. // CSingleScreenApp initialization
  33. BOOL CSingleScreenApp::InitInstance()
  34. {
  35. // Command line arguments for a screen saver are:
  36. // /s run as screen saver
  37. // /c configuration dialog
  38. // /p <hwnd> Is running in the preview window
  39. // /a   password, not used in demo app
  40. if (!AfxSocketInit())
  41. {
  42. AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
  43. return FALSE;
  44. }
  45. #ifdef _AFXDLL
  46. Enable3dControls(); // Call this when using MFC in a shared DLL
  47. #else
  48. Enable3dControlsStatic(); // Call this when linking to MFC statically
  49. #endif
  50. CString csCmdLine = m_lpCmdLine;
  51. csCmdLine.MakeLower();
  52. // Get the command line flags
  53. int nFwdSlash = csCmdLine.FindOneOf( "/-" );
  54. HWND hwndParent = NULL;
  55. #ifdef _DEBUG
  56. TCHAR cFlag = 's';
  57. #else
  58. TCHAR cFlag = 'C';
  59. #endif
  60. if ( nFwdSlash > -1 && csCmdLine.GetLength() > nFwdSlash+1 )
  61. cFlag = csCmdLine[nFwdSlash+1];
  62. if ( cFlag == 'p' && csCmdLine.GetLength() > nFwdSlash + 3 )
  63. hwndParent = (HWND)atoi( &((LPCTSTR)csCmdLine)[nFwdSlash+2] );
  64. if ( tolower(cFlag) == 'c' )
  65. {
  66. // Run configuration dialog
  67. CWnd* pParent = (cFlag=='c')?CWnd::GetActiveWindow():NULL;
  68. CSingleScreenDlg dlg( pParent );
  69. m_pMainWnd = &dlg;
  70. int nResponse = dlg.DoModal();
  71. if (nResponse == IDOK)
  72. {
  73. }
  74. else if (nResponse == IDCANCEL)
  75. {
  76. }
  77. }
  78. else
  79. {
  80. // Run screen saver either desktop or preview
  81. CSaverWindow* pSaverWindow = new CSaverWindow;
  82. if ( pSaverWindow->Create(hwndParent) )
  83. {
  84. m_pMainWnd = pSaverWindow;
  85. return TRUE;
  86. }
  87. }
  88. return FALSE;
  89. }