QQ.cpp
上传用户:czfddz
上传日期:2013-03-20
资源大小:1517k
文件大小:8k
源码类别:

酒店行业

开发平台:

C/C++

  1. // QQ.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "QQ.h"
  5. #include "MainFrm.h"
  6. #include "QQDoc.h"
  7. #include "QQView.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. #define UNIQE_NAME "{1C6780D1-4078-41fa-8F5F-8FCC82BD15DD}"
  14. #include ".\SplashWnd\LjxWnd.h"
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CQQApp
  17. BEGIN_MESSAGE_MAP(CQQApp, CWinApp)
  18. //{{AFX_MSG_MAP(CQQApp)
  19. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  20. // NOTE - the ClassWizard will add and remove mapping macros here.
  21. //    DO NOT EDIT what you see in these blocks of generated code!
  22. //}}AFX_MSG_MAP
  23. // Standard file based document commands
  24. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  25. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  26. // Standard print setup command
  27. ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
  28. END_MESSAGE_MAP()
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CQQApp construction
  31. CQQApp::CQQApp()
  32. {
  33. // TODO: add construction code here,
  34. // Place all significant initialization in InitInstance
  35. }
  36. /////////////////////////////////////////////////////////////////////////////
  37. // The one and only CQQApp object
  38. CQQApp theApp;
  39. /////////////////////////////////////////////////////////////////////////////
  40. // CQQApp initialization
  41. BOOL CQQApp::InitInstance()
  42. {
  43. /*
  44.  *            自动安装ODBC数据源
  45. */
  46.                 SetupODBCDateSource();
  47.   ///////*************保证当前只有一个实例在运行*********//////////
  48. m_hOneInstance = ::CreateMutex( NULL,FALSE,UNIQE_NAME);//创建一个互斥体
  49. if (GetLastError() == ERROR_ALREADY_EXISTS )
  50. {
  51. AfxMessageBox( "应用程序已经在运行!" );
  52. return FALSE;//不实现该实例
  53. }
  54.    /*------------------------------------------------------------*/
  55. AfxEnableControlContainer();   //容器支持 
  56. //===================加载皮肤并且设置皮肤窗口================*/
  57. VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), "QQ" , 
  58. NULL,
  59. NULL ) );
  60. VERIFY( 1 == LoadSkinFromResource( AfxGetInstanceHandle()  , "SKINMAGIC" ,"SKINMAGIC") ); 
  61. VERIFY( 1 == SetDialogSkin( "Dialog" ) );
  62. /*==========================END==============================*/
  63.     GetCtrlManager().InstallHook();//使所有控件浮动
  64. //////////////////////////////////////////////////////////////////////////
  65. //增加的闪屏效果代码
  66. CLjxWnd *ljxljx=new CLjxWnd;  //建立一个新窗口对象
  67. ljxljx->CreatLjxWnd ();       //创建窗口
  68. ljxljx->CenterWindow ();      //在屏幕中央
  69. ljxljx->ShowWindow (SW_SHOW); //显示窗口
  70. ljxljx->UpdateWindow ();      //更新窗口,激活OnPait函数
  71. Sleep(100);                 //等待函数指定秒钟
  72. if (ljxljx!=NULL) ljxljx->SendMessage (WM_CLOSE); //关闭窗口
  73. //
  74. // Standard initialization
  75. // If you are not using these features and wish to reduce the size
  76. //  of your final executable, you should remove from the following
  77. //  the specific initialization routines you do not need.
  78. #ifdef _AFXDLL
  79. Enable3dControls(); // Call this when using MFC in a shared DLL
  80. #else
  81. Enable3dControlsStatic(); // Call this when linking to MFC statically
  82. #endif
  83. // Change the registry key under which our settings are stored.
  84. // TODO: You should modify this string to be something appropriate
  85. // such as the name of your company or organization.
  86. SetRegistryKey(_T("Local AppWizard-Generated Applications"));
  87. LoadStdProfileSettings();  // Load standard INI file options (including MRU)
  88. // Register the application's document templates.  Document templates
  89. //  serve as the connection between documents, frame windows and views.
  90. CSingleDocTemplate* pDocTemplate;
  91. pDocTemplate = new CSingleDocTemplate(
  92. IDR_MAINFRAME,
  93. RUNTIME_CLASS(CQQDoc),
  94. RUNTIME_CLASS(CMainFrame),       // main SDI frame window
  95. RUNTIME_CLASS(CQQView));
  96. AddDocTemplate(pDocTemplate);
  97. // Parse command line for standard shell commands, DDE, file open
  98. CCommandLineInfo cmdInfo;
  99. ParseCommandLine(cmdInfo);
  100. // Dispatch commands specified on the command line
  101. if (!ProcessShellCommand(cmdInfo))
  102. return FALSE;
  103. // The one and only window has been initialized, so show and update it.
  104. HICON m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME2);
  105. m_pMainWnd->SetIcon(m_hIcon,true);
  106. m_pMainWnd->ShowWindow(SW_SHOW);
  107. m_pMainWnd->CenterWindow();
  108. m_pMainWnd->UpdateWindow();
  109. m_pMainWnd->SetWindowText("酒店管理系统2003");
  110. return TRUE;
  111. }
  112. /////////////////////////////////////////////////////////////////////////////
  113. // CAboutDlg dialog used for App About
  114. #include ".\email\HyperLink.h"
  115. class CAboutDlg : public CDialog
  116. {
  117. public:
  118. CAboutDlg();
  119. // Dialog Data
  120. //{{AFX_DATA(CAboutDlg)
  121. enum { IDD = IDD_ABOUTBOX };
  122. //}}AFX_DATA
  123. // ClassWizard generated virtual function overrides
  124. //{{AFX_VIRTUAL(CAboutDlg)
  125. protected:
  126. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  127. //}}AFX_VIRTUAL
  128. // Implementation
  129. protected:
  130. //{{AFX_MSG(CAboutDlg)
  131. virtual void OnOK();
  132. virtual BOOL OnInitDialog();
  133. //}}AFX_MSG
  134. CHyperLink m_EMailLink;
  135. DECLARE_MESSAGE_MAP()
  136. };
  137. #define IDS_MAILADDR _T("mailto:kuge3907@sina.com")
  138. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  139. {
  140. //{{AFX_DATA_INIT(CAboutDlg)
  141. //}}AFX_DATA_INIT
  142. }
  143. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  144. {
  145. CDialog::DoDataExchange(pDX);
  146. //{{AFX_DATA_MAP(CAboutDlg)
  147. //}}AFX_DATA_MAP
  148. DDX_Control(pDX, IDC_EMAILLINK, m_EMailLink);
  149. }
  150. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  151. //{{AFX_MSG_MAP(CAboutDlg)
  152. //}}AFX_MSG_MAP
  153. END_MESSAGE_MAP()
  154. // App command to run the dialog
  155. void CQQApp::OnAppAbout()
  156. {
  157. CAboutDlg aboutDlg;
  158. aboutDlg.DoModal();
  159. }
  160. /////////////////////////////////////////////////////////////////////////////
  161. // CQQApp message handlers
  162. void CAboutDlg::OnOK() 
  163. {
  164. // TODO: Add extra validation here
  165.     new CFaderWnd(this,2000);//实现渐隐效果
  166. EndDialog(IDOK);//关闭对话框
  167. // CDialog::OnOK();
  168. }
  169. BOOL CAboutDlg::OnInitDialog() 
  170. {
  171. CDialog::OnInitDialog();
  172. // TODO: Add extra initialization here
  173. m_EMailLink.SetURL(IDS_MAILADDR);
  174. m_EMailLink.SetUnderline(CHyperLink::ulAlways);
  175. return TRUE;  // return TRUE unless you set the focus to a control
  176.               // EXCEPTION: OCX Property Pages should return FALSE
  177. }
  178. int CQQApp::ExitInstance() 
  179. {
  180. // TODO: Add your specialized code here and/or call the base class
  181. CloseHandle( m_hOneInstance );
  182. ExitSkinMagicLib();//卸载皮肤库
  183. return CWinApp::ExitInstance();
  184. }
  185. void CQQApp::SetupODBCDateSource()//用编程的方式自动完成ODBC数据库的安装
  186. {//自动安装ODBC数据源
  187. //仍然有些问题,数据源没有具体的路径bug!!!!!!!!
  188. // 需要继续修改 [6/4/2003]
  189. // CString strDBPath;
  190. // strDBPath=GetDBPath();//获得数据源的路径
  191. // CString strAtturbute;//DataDirectory
  192. // strAtturbute.Format(
  193. // "DSN=酒店管理系统"
  194. // "Description=New Access Data Source"
  195. //        "FileType=Access"
  196. //        "DBQ=%s酒店管理系统.mdb"
  197. // strDBPath
  198. // );//设置ODBC的属性
  199. //修改成下面的样子后问题解决,可以自动在软件启动的时候安装ODBC数据源
  200. //但是要求"酒店管理系统.mdb"数据库要和应用程序放在通一个目录下
  201. //  [6/4/2003-22:40]
  202. //主要的修改的地方:
  203. //相对路径的获取,先前采用的是调用GetDBPath()的方法
  204. //后面采用直接用相对路径的方式".\"(当前目录)
  205. //SQLConfigDataSource()的调用方法比较特殊
  206. /************************************************************************/
  207. //      函数功能说明:实现ODBC数据源的自动安装;
  208. /*             SQLConfigDataSource()的具体用法说明
  209.   1.     HWND hwndParent:调用ConfigDataSource的窗口句柄
  210.          若hwndParent取值为:m_pMainWnd->m_hWnd,则在App启动的时候弹出
  211.  创建数据源的对话框要求用户自己添加数据源
  212.  若若hwndParent取值为:NULL,则系统自动的创建数据源,
  213.  不会弹出创建数据源的对话框;
  214.   2.     WORD      fRequest:
  215.          ODBC_ADD_DSN :添加用户数据源
  216.          ODBC_ADD_SYS_DSN:添加系统用户数据源
  217.   3.     第三个参数:驱动程序的描叙
  218.   4.     数据库的具体属性
  219.                 
  220. /************************************************************************/
  221. SQLConfigDataSource(NULL,ODBC_ADD_DSN,
  222. "Microsoft Access Driver (*.mdb)",
  223. "DSN=酒店管理系统"
  224. "Description=酒店管理系统的数据源"
  225.         "FileType=Access"
  226.         "DBQ=.\酒店管理系统.mdb"
  227.                );
  228. }
  229. CString CQQApp::GetDBPath()
  230. {//获得数据库的路径
  231.    CString szDBPath;
  232.    TCHAR pathtemp[255];
  233.    ::GetModuleFileName(AfxGetApp()->m_hInstance,pathtemp,255);
  234.    szDBPath=pathtemp;//获得路径名称
  235.    int n=szDBPath.ReverseFind('\');
  236.    return szDBPath.Left(n+1);
  237. }