📄 benbenbrowser.cpp
字号:
// benbenBrowser.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "benbenBrowser.h"
#include "MainFrm.h"
#include "ChildFrm.h"
#include "benbenBrowserDoc.h"
#include "benbenBrowserView.h"
#include <..\src\occimpl.h>
#include "CustSite.h"
#include<winsock2.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBenbenBrowserApp
BEGIN_MESSAGE_MAP(CBenbenBrowserApp, CWinAppEx)
//{{AFX_MSG_MAP(CBenbenBrowserApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, CWinAppEx::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinAppEx::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinAppEx::OnFilePrintSetup)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBenbenBrowserApp construction
CBenbenBrowserApp::CBenbenBrowserApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CBenbenBrowserApp object
CBenbenBrowserApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CBenbenBrowserApp initialization
BOOL CBenbenBrowserApp::InitInstance()
{
CCustomOccManager *pMgr = new CCustomOccManager;
// Create an IDispatch class for extending the Dynamic HTML Object Model
m_pDispOM = new CImpIDispatch;
m_pDropTarget=new CImpIDropTarget;
// Set our control containment up but using our control container
// management class instead of MFC's default
AfxEnableControlContainer(pMgr);
if (!AfxOleInit())
{
AfxMessageBox("Ole Initialization Failed");
return FALSE;
}
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// Change the registry key under which our settings are stored.
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(); // Load standard INI file options (including MRU)
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views.
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_BENBENTYPE,
RUNTIME_CLASS(CBenbenBrowserDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CBenbenBrowserView));
pDocTemplate->SetContainerInfo(IDR_FONT_POPUP);
AddDocTemplate(pDocTemplate);
/////////////////////
::CoInitialize(NULL);
//////////////////
// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
pDocTemplate->m_hMenuShared=pMainFrame->NewMenu();
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// The main window has been initialized, so show and update it.
pMainFrame->ShowWindow(m_nCmdShow,"benben");
pMainFrame->UpdateWindow();
pMainFrame->DragAcceptFiles();
CChildFrame *childFrame=(CChildFrame *)pMainFrame->GetActiveFrame();
if(childFrame)
{
CBenbenBrowserView *view=(CBenbenBrowserView *)childFrame->GetActiveView();
if(view)
view->GoHome();
}
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
void GetHostIPAddress(CString &IP);
void SetAboutText();
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
CStatic m_ctrlhost;
CEdit m_editctl;
CString m_strabout;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
m_strabout = _T("");
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
DDX_Control(pDX, IDC_STATIC_HOST, m_ctrlhost);
DDX_Control(pDX, IDC_ABOUT_EDIT, m_editctl);
DDX_Text(pDX, IDC_ABOUT_EDIT, m_strabout);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// App command to run the dialog
void CBenbenBrowserApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
// theApp.WinHelp(0);
}
/////////////////////////////////////////////////////////////////////////////
// CBenbenBrowserApp message handlers
CView * CBenbenBrowserApp::OnNewBenFile(BOOL beVisible)
{
try
{
POSITION pos = GetFirstDocTemplatePosition();
if(pos)
{
CDocTemplate * pTemplate = GetNextDocTemplate(pos);
while(pos &&!pTemplate->IsKindOf(RUNTIME_CLASS(CBenbenBrowserDoc)))
pTemplate = GetNextDocTemplate(pos);
if(pTemplate)
{
CDocument *pDoc=pTemplate->OpenDocumentFile(NULL,beVisible);
POSITION pos = pDoc->GetFirstViewPosition();
if(pos != NULL)
{
CView* pView = pDoc->GetNextView(pos);
if(pView)
pView->GetParentFrame()->ShowWindow(SW_SHOW);
return pView;
}
}
}
}
catch(...)
{
}
return NULL;
}
int CBenbenBrowserApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
::CoFreeUnusedLibraries();
::CoUninitialize();
if(m_pDispOM)
delete m_pDispOM;
if(m_pDropTarget)
delete m_pDropTarget;
return CWinAppEx::ExitInstance();
}
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
SetAboutText();
CString IP;
GetHostIPAddress(IP);
m_ctrlhost.SetWindowText(IP);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CAboutDlg::SetAboutText()
{
CStdioFile myfile;
CString strFilePath,text;
TCHAR sz[MAX_PATH];
GetModuleFileName(NULL,sz,sizeof(sz));
strFilePath=sz;
strFilePath=strFilePath.Left(strFilePath.ReverseFind('\\'));
strFilePath=strFilePath.Left(strFilePath.ReverseFind('\\'));
strFilePath=strFilePath+"\\DefData\\about.dat";
if( myfile.Open(strFilePath,CFile::modeRead))
{
while(myfile.ReadString(text))
{
m_strabout+=text;
m_strabout+="\r\n";//(char)0x0d;
//m_strabout+=(char)0x0A;
}
myfile.Close();
}
UpdateData(FALSE);
}
void CAboutDlg::GetHostIPAddress(CString &IP)
{
WORD wVersionRequested;
WSADATA wsaData;
char name[255];
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD( 2, 0 );
if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
{
if( gethostname ( name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{
IP = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}
WSACleanup( );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -