⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex30av~1.cpp

📁 《vc++技术内墓》 附带源码
💻 CPP
字号:
// ex30aView.cpp : implementation of the CEx30aView class//#include "stdafx.h"#include "ex30a.h"#include "mainfrm.h"#include "ex30aDoc.h"#include "ex30aView.h"#include "Utility.h"#include "SheetConfig.h"#include "BlockSock.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endifextern CBlockingSocket g_sListen;/////////////////////////////////////////////////////////////////////////////// CEx30aViewIMPLEMENT_DYNCREATE(CEx30aView, CEditView)BEGIN_MESSAGE_MAP(CEx30aView, CEditView)	//{{AFX_MSG_MAP(CEx30aView)	ON_COMMAND(ID_INTERNET_START_SERVER, OnInternetStartServer)	ON_UPDATE_COMMAND_UI(ID_INTERNET_START_SERVER, OnUpdateInternetStartServer)	ON_COMMAND(ID_INTERNET_REQUEST_SOCK, OnInternetRequestSocket)	ON_COMMAND(ID_INTERNET_REQUEST_INET, OnInternetRequestWininet)	ON_COMMAND(ID_INTERNET_STOP_SERVER, OnInternetStopServer)	ON_UPDATE_COMMAND_UI(ID_INTERNET_STOP_SERVER, OnUpdateInternetStopServer)	ON_COMMAND(ID_INTERNET_CONFIGURATION, OnInternetConfiguration)	ON_UPDATE_COMMAND_UI(ID_INTERNET_CONFIGURATION, OnUpdateInternetConfiguration)	ON_COMMAND(ID_EDIT_CLEAR_ALL, OnEditClearAll)	ON_COMMAND(IDC_REQUEST, OnRequest)	ON_WM_CONTEXTMENU()	//}}AFX_MSG_MAP	// Standard printing commands	ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)	ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CEx30aView construction/destructionCEx30aView::CEx30aView(){	// TODO: add construction code here}CEx30aView::~CEx30aView(){}BOOL CEx30aView::PreCreateWindow(CREATESTRUCT& cs){	BOOL bPreCreated = CEditView::PreCreateWindow(cs);	cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL);	// Enable word-wrapping	cs.style |= ES_READONLY;	return bPreCreated;}/////////////////////////////////////////////////////////////////////////////// CEx30aView drawingvoid CEx30aView::OnDraw(CDC* pDC){	CEx30aDoc* pDoc = GetDocument();	ASSERT_VALID(pDoc);	// TODO: add draw code for native data here}/////////////////////////////////////////////////////////////////////////////// CEx30aView printingBOOL CEx30aView::OnPreparePrinting(CPrintInfo* pInfo){	// default CEditView preparation	return CEditView::OnPreparePrinting(pInfo);}void CEx30aView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo){	// Default CEditView begin printing.	CEditView::OnBeginPrinting(pDC, pInfo);}void CEx30aView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo){	// Default CEditView end printing	CEditView::OnEndPrinting(pDC, pInfo);}/////////////////////////////////////////////////////////////////////////////// CEx30aView diagnostics#ifdef _DEBUGvoid CEx30aView::AssertValid() const{	CEditView::AssertValid();}void CEx30aView::Dump(CDumpContext& dc) const{	CEditView::Dump(dc);}CEx30aDoc* CEx30aView::GetDocument() // non-debug version is inline{	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEx30aDoc)));	return (CEx30aDoc*)m_pDocument;}#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////// CEx30aView message handlersvoid CEx30aView::OnInternetStartServer() {	try {		CSockAddr saServer;		if(g_strIPServer.IsEmpty()) { // first or only IP			saServer = CSockAddr(INADDR_ANY, (USHORT) g_nPortServer);		}		else {	// if our computer has multiple IP addresses...			saServer = CSockAddr(g_strIPServer, (USHORT) g_nPortServer);		}		g_sListen.Create();		g_sListen.Bind(saServer);		g_sListen.Listen();// start listening		g_bListening = TRUE;		g_nConnection = 0;		AfxBeginThread(ServerThreadProc, GetSafeHwnd(), THREAD_PRIORITY_NORMAL);	}	catch(CBlockingSocketException* e) {		g_sListen.Cleanup();		LogBlockingSocketException(GetSafeHwnd(), "VIEW:", e);		e->Delete();	}}void CEx30aView::OnUpdateInternetStartServer(CCmdUI* pCmdUI) {	pCmdUI->Enable(!g_bListening);}void CEx30aView::OnInternetRequestSocket() {	AfxBeginThread(ClientSocketThreadProc, GetSafeHwnd(), THREAD_PRIORITY_NORMAL);}void CEx30aView::OnInternetRequestWininet() {	AfxBeginThread(ClientWinInetThreadProc, GetSafeHwnd(), THREAD_PRIORITY_NORMAL);}void CEx30aView::OnInternetStopServer() {	try {		if(g_bListening) {			g_sListen.Close();		}	}	catch(CBlockingSocketException* e) {		LogBlockingSocketException(GetSafeHwnd(), "VIEW:", e);		e->Delete();	}}void CEx30aView::OnUpdateInternetStopServer(CCmdUI* pCmdUI) {	pCmdUI->Enable(g_bListening);}void CEx30aView::OnInternetConfiguration() {	CSheetConfig sh("Configuration");	sh.m_pageServer.m_strDirect = g_strDirect;	sh.m_pageServer.m_strDefault = g_strDefault;	sh.m_pageServer.m_nPortServer = g_nPortServer;	sh.m_pageClient.m_strServerIP = g_strServerIP;	sh.m_pageClient.m_nPort = g_nPort;	sh.m_pageClient.m_strServerName = g_strServerName;	sh.m_pageClient.m_strFile = g_strFile;	sh.m_pageClient.m_strProxy = g_strProxy;	sh.m_pageClient.m_bUseProxy = g_bUseProxy;	sh.m_pageAdv.m_strIPClient = g_strIPClient;	sh.m_pageAdv.m_strIPServer = g_strIPServer;	if(sh.DoModal() == IDOK) {		g_strDirect = sh.m_pageServer.m_strDirect;		g_strDefault = sh.m_pageServer.m_strDefault;		g_nPortServer = sh.m_pageServer.m_nPortServer;		g_strServerIP = sh.m_pageClient.m_strServerIP;		g_nPort = sh.m_pageClient.m_nPort;		g_strServerName = sh.m_pageClient.m_strServerName;		if(sh.m_pageClient.m_strFile.IsEmpty()) {			g_strFile = "/";		}		else {			g_strFile = sh.m_pageClient.m_strFile;		}		g_strProxy = sh.m_pageClient.m_strProxy;		g_bUseProxy = sh.m_pageClient.m_bUseProxy;		g_strIPClient = sh.m_pageAdv.m_strIPClient;		g_strIPServer = sh.m_pageAdv.m_strIPServer;		if(!g_strIPClient.IsEmpty() && g_bUseProxy) {			AfxMessageBox("Warning: you can't assign a client IP address if "				"you are using a proxy server");		}		if(!g_strServerIP.IsEmpty() && g_bUseProxy) {			AfxMessageBox("Warning: you must specify the server by name if "				"you are using a proxy server");		}		if(g_strServerIP.IsEmpty() && g_strServerName.IsEmpty()) {			AfxMessageBox("Warning: you must specify either a server name or "				"a server IP address");		}		if(!g_strServerIP.IsEmpty() && !g_strServerName.IsEmpty()) {			AfxMessageBox("Warning: you cannot specify both a server name "				"and a server IP address");		}		::SetCurrentDirectory(g_strDirect);	}}void CEx30aView::OnUpdateInternetConfiguration(CCmdUI* pCmdUI) {	pCmdUI->Enable(!g_bListening);}void CEx30aView::OnEditClearAll() {	SetWindowText("");}void CEx30aView::OnRequest() {	CWnd& rBar = ((CMainFrame*) AfxGetApp()->m_pMainWnd)->m_wndDialogBar;	// g_strURL: thread sync?	rBar.GetDlgItemText(IDC_URL, g_strURL);	TRACE("CEx30aView::OnRequest -- URL = %s\n", (const char*) g_strURL);	AfxBeginThread(ClientUrlThreadProc, GetSafeHwnd(), THREAD_PRIORITY_NORMAL);}void CEx30aView::OnContextMenu(CWnd* pWnd, CPoint point) {	// clear-all menu activated on right button	CMenu menu;	menu.LoadMenu(IDR_CONTEXT_MENU);	menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,		point.x, point.y, this);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -