SNCSetup.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. // SNCSetup.cpp : 定义应用程序的类行为。
  2. //
  3. #include "stdafx.h"
  4. #include "SNCSetup.h"
  5. #include "SNCSetupDlg.h"
  6. #include "UninstallConfirmDialog.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #endif
  10. // CSNCSetupApp
  11. BEGIN_MESSAGE_MAP(CSNCSetupApp, CWinApp)
  12. ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
  13. END_MESSAGE_MAP()
  14. // CSNCSetupApp 构造
  15. CSNCSetupApp::CSNCSetupApp()
  16. {
  17. // TODO: 在此处添加构造代码,
  18. // 将所有重要的初始化放置在 InitInstance 中
  19. }
  20. // 唯一的一个 CSNCSetupApp 对象
  21. CSNCSetupApp theApp;
  22. // CSNCSetupApp 初始化
  23. BOOL CSNCSetupApp::InitInstance()
  24. {
  25. ::Sleep(500);
  26. HANDLE hMutex=CreateMutex(NULL,TRUE,_T("SpeedNumCube"));
  27. if(hMutex)
  28. {
  29. if(ERROR_ALREADY_EXISTS==GetLastError())
  30. {
  31. //CInstanceDialog dlg;
  32. //dlg.DoModal();
  33. ::MessageBox(NULL,_T("请关闭所有极速号码魔方窗口,然后重试。"),_T("极速号码魔方"),MB_ICONWARNING);
  34. CloseHandle(hMutex);
  35. return FALSE;
  36. }
  37. }
  38. // 如果一个运行在 Windows XP 上的应用程序清单指定要
  39. // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
  40. //则需要 InitCommonControlsEx()。否则,将无法创建窗口。
  41. INITCOMMONCONTROLSEX InitCtrls;
  42. InitCtrls.dwSize = sizeof(InitCtrls);
  43. // 将它设置为包括所有要在应用程序中使用的
  44. // 公共控件类。
  45. InitCtrls.dwICC = ICC_WIN95_CLASSES;
  46. InitCommonControlsEx(&InitCtrls);
  47. CWinApp::InitInstance();
  48. if (!AfxSocketInit())
  49. {
  50. AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
  51. return FALSE;
  52. }
  53. AfxEnableControlContainer();
  54. // 标准初始化
  55. // 如果未使用这些功能并希望减小
  56. // 最终可执行文件的大小,则应移除下列
  57. // 不需要的特定初始化例程
  58. // 更改用于存储设置的注册表项
  59. // TODO: 应适当修改该字符串,
  60. // 例如修改为公司或组织名
  61. SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
  62. bool uninstall = false;
  63. bool isproduct = true;
  64. int argc;
  65. LPWSTR *lpszArgv = NULL;
  66. LPTSTR szCmdLine =GetCommandLine();
  67. lpszArgv = CommandLineToArgvW(szCmdLine,&argc);
  68. if(argc>=2)
  69. {
  70. CString para = lpszArgv[1];
  71. if(para.CompareNoCase(_T("-test"))==0)
  72. {
  73. isproduct = false;
  74. }
  75. }
  76. bool delUserData = false;
  77. CSNCSetupDlg dlg;
  78. dlg.deluserdata = delUserData;
  79. dlg.isproduct = isproduct;
  80. m_pMainWnd = &dlg;
  81. INT_PTR nResponse = dlg.DoModal();
  82. if (nResponse == IDOK)
  83. {
  84. // TODO: 在此放置处理何时用
  85. // “确定”来关闭对话框的代码
  86. }
  87. else if (nResponse == IDCANCEL)
  88. {
  89. // TODO: 在此放置处理何时用
  90. // “取消”来关闭对话框的代码
  91. }
  92. // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
  93. // 而不是启动应用程序的消息泵。
  94. return FALSE;
  95. }