www.pudn.com > Jianasyhttpclient.rar > MainFrm.cpp


// MainFrm.cpp : implementation of the CMainFrame class 
// 
 
#include "stdafx.h" 
#include "asyhttpclient.h" 
#include "MainFrm.h" 
//-----------新添----------------- 
#include "HttpAsySocket.h" 
#include "DlgUrl.H" 
#include "AFXINET.H" 
//-----------新添----------------- 
 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame 
 
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) 
 
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) 
	//{{AFX_MSG_MAP(CMainFrame) 
	ON_WM_CREATE() 
	ON_COMMAND(ID_Connect, OnConnect) 
	ON_COMMAND(ID_GO, OnGo) 
	ON_COMMAND(ID_POST, OnPost) 
	ON_UPDATE_COMMAND_UI(ID_POST, OnUpdatePost) 
	ON_COMMAND(ID_GET, OnGet) 
	ON_UPDATE_COMMAND_UI(ID_GET, OnUpdateGet) 
	ON_COMMAND(ID_OPTIONS, OnOptions) 
	ON_UPDATE_COMMAND_UI(ID_OPTIONS, OnUpdateOptions) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
static UINT indicators[] = 
{ 
	ID_SEPARATOR,           // status line indicator 
	ID_INDICATOR_CAPS, 
	ID_INDICATOR_NUM, 
	ID_INDICATOR_SCRL, 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame construction/destruction 
 
CMainFrame::CMainFrame() 
{ 
	// TODO: add member initialization code here 
    m_chkget=1; 
	m_chkpost=0; 
	m_chkoptions=0; 
}  
 
CMainFrame::~CMainFrame() 
{ 
} 
 
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{ 
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1) 
		return -1; 
	 
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP 
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || 
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) 
	{ 
		TRACE0("Failed to create toolbar\n"); 
		return -1;      // fail to create 
	} 
     
	//----新添:在工具栏中加入可编辑组合框----- 
     
	//先在工具栏预留一个静态文本框、一个组合框和分隔符位置 
	m_wndToolBar.SetButtonInfo(0,IDC_STEXT,TBBS_SEPARATOR,80); 
	m_wndToolBar.SetButtonInfo(1,IDC_COMBO,TBBS_SEPARATOR,400); 
   // m_wndToolBar.SetButtonInfo(2,ID_SEPARATOR,TBBS_SEPARATOR,20); 
 
    //创建一个静态文本框、一个组合框 
	CRect rCombo; 
	m_wndToolBar.GetItemRect(0,&rCombo);  
    m_wndToolBar.m_stext.Create("URL地址:",SS_CENTER|WS_VISIBLE,rCombo,&m_wndToolBar,IDC_STEXT); 
     
	m_wndToolBar.GetItemRect(1,&rCombo);  
	rCombo.bottom +=150; 
	m_wndToolBar.m_Combo.Create(CBS_DROPDOWN|WS_VISIBLE,rCombo,&m_wndToolBar,IDC_COMBO); 
 
	CString item; 
	//item="http://xx/test.asp"; 
	//item="http://xx/zml/default.htm"; 
    item="http://202.113.29.120/software/index.dhtml";  
	//http://202.113.29.120/software/index.dhtml?op=showfull&ino=5519 
	m_wndToolBar.m_Combo.AddString(item); 
	//新添结束 
	 
	if (!m_wndStatusBar.Create(this) || 
		!m_wndStatusBar.SetIndicators(indicators, 
		  sizeof(indicators)/sizeof(UINT))) 
	{ 
		TRACE0("Failed to create status bar\n"); 
		return -1;      // fail to create 
	} 
 
	// TODO: Delete these three lines if you don't want the toolbar to 
	//  be dockable 
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); 
	EnableDocking(CBRS_ALIGN_ANY); 
	DockControlBar(&m_wndToolBar); 
 
	return 0; 
} 
 
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	if( !CFrameWnd::PreCreateWindow(cs) ) 
		return FALSE; 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
 
	return TRUE; 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame diagnostics 
 
#ifdef _DEBUG 
void CMainFrame::AssertValid() const 
{ 
	CFrameWnd::AssertValid(); 
} 
 
void CMainFrame::Dump(CDumpContext& dc) const 
{ 
	CFrameWnd::Dump(dc); 
} 
 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CMainFrame message handlers 
 
 
void CMainFrame::OnConnect()  
{ 
	// TODO: Add your command handler code here 
	//------------新添-------------- 
  CDlgUrl dlg; 
   
 
  m_strURL="http://xx/zml/default.htm"; 
 
  dlg.m_strURL=m_strURL; 
  if (IDOK != dlg.DoModal()) return; 
  m_strURL=dlg.m_strURL; 
 
   //获取视中的编辑框 
  CMainFrame *pMainFrame; 
  CEditView *pEditView; 
   
  pMainFrame=(CMainFrame *)AfxGetMainWnd(); 
  pEditView=(CEditView *)pMainFrame->GetActiveView();  
  CEdit &edit=pEditView->GetEditCtrl();  	 
  // 分解用户输入的URL地址 
  DWORD dwServiceType; 
  CString strServerName; 
  INTERNET_PORT nPort; 
     
  if (! AfxParseURL(m_strURL,dwServiceType,strServerName,m_strObject,nPort) || (dwServiceType != AFX_INET_SERVICE_HTTP)) 
  {    
      AfxMessageBox("用户输入错误!"); 
	  return;	   
  }	   
 
  int nErrno; 
 
  // 创建CHttpSocket对象并与服务器连接 
  m_HttpSocket=new CHttpAsySocket;  
  if (! m_HttpSocket->Create(0,SOCK_STREAM,FD_CONNECT)) 
  {   nErrno=m_HttpSocket->GetLastError(); 
      if (nErrno !=WSAEWOULDBLOCK) 
      { 
        AfxMessageBox("创建套接字对象失败"); 
	    return; 
	  }	  
  }	 
  int cnt=0; 
 
  if (!m_HttpSocket->Connect(strServerName,80)) 
  {   nErrno=m_HttpSocket->GetLastError(); 
      if (nErrno !=WSAEWOULDBLOCK) 
      { 
      AfxMessageBox("创建套接字对象失败"); 
	  return;	   
	  } 
  }	 
 
    //------------新添-------------- 
} 
 
void CMainFrame::OnGo()  
{ 
 //读取工具条中组合框中字串 
  char *p=m_strURL.GetBuffer(256); 
  m_wndToolBar.m_Combo.GetWindowText(p,256); 
  m_strURL.ReleaseBuffer(); 
 
  //获取视中的编辑框 
  CMainFrame *pMainFrame; 
  CEditView *pEditView; 
   
  pMainFrame=(CMainFrame *)AfxGetMainWnd(); 
  pEditView=(CEditView *)pMainFrame->GetActiveView();  
  CEdit &edit=pEditView->GetEditCtrl();  	 
  // 分解用户输入的URL地址 
  DWORD dwServiceType; 
  CString strServerName; 
  INTERNET_PORT nPort; 
     
  if (! AfxParseURL(m_strURL,dwServiceType,strServerName,m_strObject,nPort) || (dwServiceType != AFX_INET_SERVICE_HTTP)) 
  {    
      AfxMessageBox("用户输入错误!"); 
	  return;	   
  }	   
 
  int nErrno; 
 
  // 创建CHttpSocket对象并与服务器连接 
  m_HttpSocket=new CHttpAsySocket;  
  if (! m_HttpSocket->Create(0,SOCK_STREAM,FD_CONNECT)) 
  {   nErrno=m_HttpSocket->GetLastError(); 
      if (nErrno !=WSAEWOULDBLOCK) 
      { 
        AfxMessageBox("创建套接字对象失败"); 
	    return; 
	  }	  
  }	 
  int cnt=0; 
 
  if (!m_HttpSocket->Connect(strServerName,80)) 
  {   nErrno=m_HttpSocket->GetLastError(); 
      if (nErrno !=WSAEWOULDBLOCK) 
      { 
      AfxMessageBox("创建套接字对象失败"); 
	  return;	   
	  } 
  }	 
 
  
 
	 
} 
 
void CMainFrame::OnPost()  
{ 
	// TODO: Add your command handler code here 
	if (!m_chkpost) 
	{  m_chkpost=1; 
	   m_chkget=0; 
	   m_chkoptions=0; 
    }; 
  
} 
 
void CMainFrame::OnUpdatePost(CCmdUI* pCmdUI)  
{ 
	// TODO: Add your command update UI handler code here 
	pCmdUI->SetCheck(m_chkpost);  
} 
 
void CMainFrame::OnGet()  
{ 
	// TODO: Add your command handler code here 
	if (!m_chkget) 
	{  m_chkget=1; 
	   m_chkpost=0; 
	   m_chkoptions=0; 
         
    }; 
} 
 
void CMainFrame::OnUpdateGet(CCmdUI* pCmdUI)  
{ 
	// TODO: Add your command update UI handler code here 
	pCmdUI->SetCheck(m_chkget);  
} 
 
void CMainFrame::OnOptions()  
{ 
	// TODO: Add your command handler code here 
	if (!m_chkoptions) 
	{  m_chkoptions=1; 
	   m_chkget=0; 
	   m_chkpost=0; 
    }; 
} 
 
void CMainFrame::OnUpdateOptions(CCmdUI* pCmdUI)  
{ 
	// TODO: Add your command update UI handler code here 
	pCmdUI->SetCheck(m_chkoptions);  
}