OLE_DATABASE.CPP
上传用户:sygkzy
上传日期:2013-03-13
资源大小:150k
文件大小:6k
源码类别:

Oracle数据库

开发平台:

Visual C++

  1. // ole_database.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "ole_database.h"
  5. #include "MainFrm.h"
  6. #include "ole_databaseDoc.h"
  7. #include "ole_databaseView.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // COle_databaseApp
  15. BEGIN_MESSAGE_MAP(COle_databaseApp, CWinApp)
  16. //{{AFX_MSG_MAP(COle_databaseApp)
  17. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  18. // NOTE - the ClassWizard will add and remove mapping macros here.
  19. //    DO NOT EDIT what you see in these blocks of generated code!
  20. //}}AFX_MSG_MAP
  21. // Standard file based document commands
  22. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  23. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  24. // Standard print setup command
  25. ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
  26. END_MESSAGE_MAP()
  27. /////////////////////////////////////////////////////////////////////////////
  28. // COle_databaseApp construction
  29. COle_databaseApp::COle_databaseApp()
  30. {
  31. // TODO: add construction code here,
  32. // Place all significant initialization in InitInstance
  33. }
  34. /////////////////////////////////////////////////////////////////////////////
  35. // The one and only COle_databaseApp object
  36. COle_databaseApp theApp;
  37. /////////////////////////////////////////////////////////////////////////////
  38. // COle_databaseApp initialization
  39. BOOL COle_databaseApp::InitInstance()
  40. {
  41. AfxEnableControlContainer();
  42. // Standard initialization
  43. // If you are not using these features and wish to reduce the size
  44. //  of your final executable, you should remove from the following
  45. //  the specific initialization routines you do not need.
  46. #ifdef _AFXDLL
  47. Enable3dControls(); // Call this when using MFC in a shared DLL
  48. #else
  49. Enable3dControlsStatic(); // Call this when linking to MFC statically
  50. #endif
  51. if(!IsGridCtrlRegistered())
  52. {
  53. if(!RegisterGridCtrl())
  54. {
  55. CString sMsg = "<MsFlxGrd.ocx>没有注册,请先注册 ";
  56. sMsg +="<MsFlxGrd.ocx> 然后在使用本程序!";
  57. AfxMessageBox(sMsg);
  58. return FALSE;
  59. }
  60. }
  61. // Change the registry key under which our settings are stored.
  62. // TODO: You should modify this string to be something appropriate
  63. // such as the name of your company or organization.
  64. SetRegistryKey(_T("Local AppWizard-Generated Applications"));
  65. LoadStdProfileSettings();  // Load standard INI file options (including MRU)
  66. // Register the application's document templates.  Document templates
  67. //  serve as the connection between documents, frame windows and views.
  68. CSingleDocTemplate* pDocTemplate;
  69. pDocTemplate = new CSingleDocTemplate(
  70. IDR_MAINFRAME,
  71. RUNTIME_CLASS(COle_databaseDoc),
  72. RUNTIME_CLASS(CMainFrame),       // main SDI frame window
  73. RUNTIME_CLASS(COle_databaseView));
  74. AddDocTemplate(pDocTemplate);
  75. // Parse command line for standard shell commands, DDE, file open
  76. CCommandLineInfo cmdInfo;
  77. ParseCommandLine(cmdInfo);
  78. // Dispatch commands specified on the command line
  79. if (!ProcessShellCommand(cmdInfo))
  80. return FALSE;
  81. // The one and only window has been initialized, so show and update it.
  82. m_pMainWnd->ShowWindow(SW_SHOW);
  83. m_pMainWnd->UpdateWindow();
  84. m_pMainWnd->SetWindowText("数据库工具");
  85. return TRUE;
  86. }
  87. /////////////////////////////////////////////////////////////////////////////
  88. // CAboutDlg dialog used for App About
  89. class CAboutDlg : public CDialog
  90. {
  91. public:
  92. CAboutDlg();
  93. // Dialog Data
  94. //{{AFX_DATA(CAboutDlg)
  95. enum { IDD = IDD_ABOUTBOX };
  96. //}}AFX_DATA
  97. // ClassWizard generated virtual function overrides
  98. //{{AFX_VIRTUAL(CAboutDlg)
  99. protected:
  100. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  101. //}}AFX_VIRTUAL
  102. // Implementation
  103. protected:
  104. //{{AFX_MSG(CAboutDlg)
  105. // No message handlers
  106. //}}AFX_MSG
  107. DECLARE_MESSAGE_MAP()
  108. };
  109. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  110. {
  111. //{{AFX_DATA_INIT(CAboutDlg)
  112. //}}AFX_DATA_INIT
  113. }
  114. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  115. {
  116. CDialog::DoDataExchange(pDX);
  117. //{{AFX_DATA_MAP(CAboutDlg)
  118. //}}AFX_DATA_MAP
  119. }
  120. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  121. //{{AFX_MSG_MAP(CAboutDlg)
  122. // No message handlers
  123. //}}AFX_MSG_MAP
  124. END_MESSAGE_MAP()
  125. // App command to run the dialog
  126. void COle_databaseApp::OnAppAbout()
  127. {
  128. CAboutDlg aboutDlg;
  129. aboutDlg.DoModal();
  130. }
  131. /////////////////////////////////////////////////////////////////////////////
  132. // COle_databaseApp message handlers
  133. BOOL COle_databaseApp::IsGridCtrlRegistered()
  134. {
  135. bool bRet = false;
  136. CLSID clsid;
  137. HRESULT hr = AfxGetClassIDFromString("MSFlexGridLib.MSFlexGrid.1", &clsid);
  138. if(SUCCEEDED(hr))
  139. bRet = true;
  140. return bRet;
  141. }
  142. BOOL COle_databaseApp::RegisterGridCtrl()
  143. {
  144. CString sPath;
  145. TCHAR lpszPath[_MAX_PATH];
  146. DWORD dwLength = _MAX_PATH;
  147. BOOL bRet = ::SearchPath(NULL, _T("MsFlxGrd.ocx"), NULL, dwLength,
  148. lpszPath, NULL);
  149. if(bRet)
  150. {
  151. #ifdef _AFXDLL
  152. HINSTANCE hOCX = AfxLoadLibrary(lpszPath);
  153. if(!hOCX)
  154. bRet = FALSE;
  155. else
  156. {
  157. if(FAILED((*(GetProcAddress(hOCX, "DllRegisterServer")))()))
  158. {
  159. TRACE("DLLRegisterServer() Failed.n");
  160. bRet = false;
  161. }
  162. AfxFreeLibrary(hOCX);
  163. }
  164. #else 
  165. // AfxLoadLibrary not available in the static version
  166. // of the MFC library
  167. HINSTANCE hOCX = ::LoadLibrary(lpszPath);
  168. if(!hOCX)
  169. bRet = FALSE;
  170. else
  171. {
  172. if(FAILED((*(GetProcAddress(hOCX, "DllRegisterServer")))()))
  173. {
  174. TRACE("DLLRegisterServer() Failed.n");
  175. bRet = false;
  176. }
  177. ::FreeLibrary(hOCX);
  178. }
  179. #endif
  180. }
  181. return bRet;
  182. }