hexview.cpp
上传用户:ycdyang2
上传日期:2007-01-07
资源大小:126k
文件大小:6k
源码类别:

编辑器/阅读器

开发平台:

Visual C++

  1. /* ---------------------------------------------------------------------------
  2.    This code can be used as you wish but without warranties as to performance 
  3.    of merchantability or any other warranties whether expressed or implied.
  4.    
  5.  Written by Mike Funduc, Funduc Software Inc. 8/1/96
  6.  To download the code and more useful utilities (including Search and
  7.  Replace for Windows 95/NT, 3.1x) go to:
  8.  http://www.funduc.com
  9. ----------------------------------------------------------------------------*/
  10. // hexview.cpp : Defines the class behaviors for the application.
  11. //
  12. #include "stdafx.h"
  13. #include "hexview.h"
  14. #include "MainFrm.h"
  15. #include "ChildFrm.h"
  16. #include "hexviewDoc.h"
  17. #include "hexviewView.h"
  18. #ifdef _DEBUG
  19. #define new DEBUG_NEW
  20. #undef THIS_FILE
  21. static char THIS_FILE[] = __FILE__;
  22. #endif
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CHexviewApp
  25. BEGIN_MESSAGE_MAP(CHexviewApp, CWinApp)
  26. //{{AFX_MSG_MAP(CHexviewApp)
  27. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  28. // NOTE - the ClassWizard will add and remove mapping macros here.
  29. //    DO NOT EDIT what you see in these blocks of generated code!
  30. //}}AFX_MSG_MAP
  31. // Standard file based document commands
  32. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  33. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  34. // Standard print setup command
  35. ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
  36. END_MESSAGE_MAP()
  37. /////////////////////////////////////////////////////////////////////////////
  38. // CHexviewApp construction
  39. CHexviewApp::CHexviewApp()
  40. {
  41. m_lStartOffset = -1;
  42. m_lEndOffset = -1;
  43. }
  44. /////////////////////////////////////////////////////////////////////////////
  45. // The one and only CHexviewApp object
  46. CHexviewApp theApp;
  47. CHexviewApp *HexGetApp() 
  48. return (CHexviewApp *)AfxGetApp(); 
  49. }          
  50. /////////////////////////////////////////////////////////////////////////////
  51. // CHexviewApp initialization
  52. BOOL bDBCS = FALSE;
  53. #include "locale.h"
  54. BOOL CHexviewApp::InitInstance()
  55. {
  56. // Standard initialization
  57. // If you are not using these features and wish to reduce the size
  58. //  of your final executable, you should remove from the following
  59. //  the specific initialization routines you do not need.
  60. CPINFO info;
  61. GetCPInfo(GetOEMCP(), &info);
  62.     bDBCS = (info.MaxCharSize > 1);
  63. #ifdef _AFXDLL
  64. Enable3dControls(); // Call this when using MFC in a shared DLL
  65. #else
  66. Enable3dControlsStatic(); // Call this when linking to MFC statically
  67. #endif
  68. LoadStdProfileSettings();  // Load standard INI file options (including MRU)
  69. // Register the application's document templates.  Document templates
  70. //  serve as the connection between documents, frame windows and views.
  71. CMultiDocTemplate* pDocTemplate;
  72. pDocTemplate = new CMultiDocTemplate(
  73. IDR_HEXVWTYPE,
  74. RUNTIME_CLASS(CHexviewDoc),
  75. RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  76. RUNTIME_CLASS(CHexviewView));
  77. AddDocTemplate(pDocTemplate);
  78. // create main MDI Frame window
  79. CMainFrame* pMainFrame = new CMainFrame;
  80. if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  81. return FALSE;
  82. m_pMainWnd = pMainFrame;
  83. m_pMainWnd->DragAcceptFiles();
  84. // Parse command line for standard shell commands, DDE, file open
  85. CHexCommandLine cmdInfo;
  86. ParseCommandLine(cmdInfo);
  87. m_lStartOffset = cmdInfo.m_lStartOffset;
  88. m_lEndOffset = cmdInfo.m_lEndOffset;
  89. if (m_lStartOffset == -1)   // Show about box
  90. m_pMainWnd->PostMessage(WM_COMMAND, ID_APP_ABOUT); 
  91. // DON'T display a new MDI child window during startup!!!
  92. if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew)
  93. cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
  94. // Dispatch commands specified on the command line
  95. if (!ProcessShellCommand(cmdInfo))
  96. return FALSE;
  97. // The main window has been initialized, so show and update it.
  98. pMainFrame->ShowWindow(m_nCmdShow);
  99. pMainFrame->UpdateWindow();
  100. return TRUE;
  101. }
  102. void CHexCommandLine::ParseParam( LPCTSTR lpszParam, BOOL bFlag, BOOL bLast)
  103. {
  104. char *stopval;
  105. switch (lpszParam[0])
  106. {
  107. case 's':  // Start Offset
  108. case 'S':
  109. if (bFlag)
  110. m_lStartOffset = strtol(lpszParam + 1, &stopval, 10);
  111. break;
  112. case 'e':  // End Offset
  113. case 'E':
  114. if (bFlag)
  115. m_lEndOffset = strtol(lpszParam + 1, &stopval, 10);
  116. break;
  117. default:
  118. break;
  119. }
  120. CCommandLineInfo::ParseParam( lpszParam, bFlag, bLast);
  121. }
  122. /////////////////////////////////////////////////////////////////////////////
  123. // CAboutDlg dialog used for App About
  124. class CAboutDlg : public CDialog
  125. {
  126. public:
  127. CAboutDlg();
  128. // Dialog Data
  129. //{{AFX_DATA(CAboutDlg)
  130. enum { IDD = IDD_ABOUTBOX };
  131. //}}AFX_DATA
  132. // ClassWizard generated virtual function overrides
  133. //{{AFX_VIRTUAL(CAboutDlg)
  134. protected:
  135. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  136. //}}AFX_VIRTUAL
  137. // Implementation
  138. protected:
  139. //{{AFX_MSG(CAboutDlg)
  140. // No message handlers
  141. //}}AFX_MSG
  142. DECLARE_MESSAGE_MAP()
  143. };
  144. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  145. {
  146. //{{AFX_DATA_INIT(CAboutDlg)
  147. //}}AFX_DATA_INIT
  148. }
  149. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  150. {
  151. CDialog::DoDataExchange(pDX);
  152. //{{AFX_DATA_MAP(CAboutDlg)
  153. //}}AFX_DATA_MAP
  154. }
  155. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  156. //{{AFX_MSG_MAP(CAboutDlg)
  157. // No message handlers
  158. //}}AFX_MSG_MAP
  159. END_MESSAGE_MAP()
  160. // App command to run the dialog
  161. void CHexviewApp::OnAppAbout()
  162. {
  163. CAboutDlg aboutDlg;
  164. aboutDlg.DoModal();
  165. }
  166. /////////////////////////////////////////////////////////////////////////////
  167. // CHexviewApp commands
  168. void CHexviewApp::GetOffsets(long &lStartOffset, long &lEndOffset)
  169. {
  170. if (m_lEndOffset > m_lStartOffset)
  171. {
  172. lStartOffset = m_lStartOffset;
  173. lEndOffset = m_lEndOffset;
  174. }
  175. m_lStartOffset = -1;
  176. m_lEndOffset = -1;
  177. }