QGIS.cpp
上传用户:oybseng
上传日期:2015-04-27
资源大小:7831k
文件大小:5k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. // QGIS.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "QGIS.h"
  5. #include "MainFrm.h"
  6. #include "ChildFrm.h"
  7. #include "QGISDoc.h"
  8. #include "QGISView.h"
  9. #include "QObjects/include/QMapObj.h"
  10. #include "QObjects/include/QLayerObj.h"
  11. #include "QObjects/include/QGlobalObj.h"
  12. #ifdef _DEBUG
  13. #define new DEBUG_NEW
  14. #undef THIS_FILE
  15. static char THIS_FILE[] = __FILE__;
  16. #endif
  17. /*__declspec (dllimport) CQGlobalObj g_QObj;*/
  18. // int g_nPixelsPerInchX;      //当前设备上X方向每英寸的象素点数
  19. // int g_nPixelsPerInchY;      //当前设备上Y方向每英寸的象素点数
  20. // COLORREF g_CurBackgroundColor;
  21. // COLORREF g_CurPenColor;
  22. // COLORREF g_CurBrushColor;
  23. // int g_nCurMapMode;           //当前坐标映射模式
  24. // int g_nCurWorldMapMode;      //当前世界坐标映射模式
  25. // double g_fEffectiveDistance;  //选择对象时的有效距离
  26. CQMapObj * g_pCurMap;           //全局地图对象
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CQGISApp
  29. BEGIN_MESSAGE_MAP(CQGISApp, CWinApp)
  30. //{{AFX_MSG_MAP(CQGISApp)
  31. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  32. ON_COMMAND(ID_FILE_NEW, OnFileNew)
  33. //}}AFX_MSG_MAP
  34. // Standard file based document commands
  35. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  36. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  37. // Standard print setup command
  38. ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
  39. END_MESSAGE_MAP()
  40. /////////////////////////////////////////////////////////////////////////////
  41. // CQGISApp construction
  42. CQGISApp::CQGISApp()
  43. {
  44. // TODO: add construction code here,
  45. // Place all significant initialization in InitInstance
  46. }
  47. /////////////////////////////////////////////////////////////////////////////
  48. // The one and only CQGISApp object
  49. CQGISApp theApp;
  50. /////////////////////////////////////////////////////////////////////////////
  51. // CQGISApp initialization
  52. BOOL CQGISApp::InitInstance()
  53. {
  54. // 如果一个运行在 Windows XP 上的应用程序清单指定要
  55. // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
  56. //则需要 InitCommonControls()。否则,将无法创建窗口。
  57. InitCommonControls();
  58. CWinApp::InitInstance();
  59. // 初始化 OLE 库
  60. //  if (!AfxOleInit())
  61. //  {
  62. //  AfxMessageBox(IDP_OLE_INIT_FAILED);
  63. //  return FALSE;
  64. //  }
  65. AfxEnableControlContainer();
  66. // Standard initialization
  67. // If you are not using these features and wish to reduce the size
  68. //  of your final executable, you should remove from the following
  69. //  the specific initialization routines you do not need.
  70. /*
  71. #ifdef _AFXDLL
  72. Enable3dControls(); // Call this when using MFC in a shared DLL
  73. #else
  74. Enable3dControlsStatic(); // Call this when linking to MFC statically
  75. #endif
  76. */
  77. // Change the registry key under which our settings are stored.
  78. // TODO: You should modify this string to be something appropriate
  79. // such as the name of your company or organization.
  80. SetRegistryKey(_T("Local AppWizard-Generated Applications"));
  81. LoadStdProfileSettings(4);  // Load standard INI file options (including MRU)
  82. // Register the application's document templates.  Document templates
  83. //  serve as the connection between documents, frame windows and views.
  84. CMultiDocTemplate* pDocTemplate;
  85. pDocTemplate = new CMultiDocTemplate(
  86. IDR_QGISTYPE,
  87. RUNTIME_CLASS(CQGISDoc),
  88. RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  89. RUNTIME_CLASS(CQGISView));
  90. AddDocTemplate(pDocTemplate);
  91. // create main MDI Frame window
  92. CMainFrame* pMainFrame = new CMainFrame;
  93. if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  94. return FALSE;
  95. m_pMainWnd = pMainFrame;
  96. // Parse command line for standard shell commands, DDE, file open
  97. CCommandLineInfo cmdInfo;
  98. ParseCommandLine(cmdInfo);
  99. // Dispatch commands specified on the command line
  100. if (!ProcessShellCommand(cmdInfo))
  101. return FALSE;
  102. // The main window has been initialized, so show and update it.
  103. pMainFrame->ShowWindow(m_nCmdShow);
  104. pMainFrame->UpdateWindow();
  105. return TRUE;
  106. }
  107. /////////////////////////////////////////////////////////////////////////////
  108. // CAboutDlg dialog used for App About
  109. class CAboutDlg : public CDialog
  110. {
  111. public:
  112. CAboutDlg();
  113. // Dialog Data
  114. //{{AFX_DATA(CAboutDlg)
  115. enum { IDD = IDD_ABOUTBOX };
  116. //}}AFX_DATA
  117. // ClassWizard generated virtual function overrides
  118. //{{AFX_VIRTUAL(CAboutDlg)
  119. protected:
  120. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  121. //}}AFX_VIRTUAL
  122. // Implementation
  123. protected:
  124. //{{AFX_MSG(CAboutDlg)
  125. // No message handlers
  126. //}}AFX_MSG
  127. DECLARE_MESSAGE_MAP()
  128. };
  129. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  130. {
  131. //{{AFX_DATA_INIT(CAboutDlg)
  132. //}}AFX_DATA_INIT
  133. }
  134. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  135. {
  136. CDialog::DoDataExchange(pDX);
  137. //{{AFX_DATA_MAP(CAboutDlg)
  138. //}}AFX_DATA_MAP
  139. }
  140. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  141. //{{AFX_MSG_MAP(CAboutDlg)
  142. // No message handlers
  143. //}}AFX_MSG_MAP
  144. END_MESSAGE_MAP()
  145. // App command to run the dialog
  146. void CQGISApp::OnAppAbout()
  147. {
  148. CAboutDlg aboutDlg;
  149. aboutDlg.DoModal();
  150. }
  151. /////////////////////////////////////////////////////////////////////////////
  152. // CQGISApp message handlers
  153. void CQGISApp::OnFileNew() 
  154. {
  155. // TODO: Add your command handler code here
  156. CWinApp::OnFileNew();
  157. }
  158. int CQGISApp::ExitInstance() 
  159. {
  160. // TODO: Add your specialized code here and/or call the base class
  161. if(g_pCurMap)
  162. delete g_pCurMap;
  163. g_pCurMap = 0;
  164. return CWinApp::ExitInstance();
  165. }