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

📄 view.h

📁 这是一本学习 window编程的很好的参考教材
💻 H
📖 第 1 页 / 共 2 页
字号:
					DWORD dwHigh=0;
					SetFilePointer(hFile,0,(PLONG)&dwHigh,FILE_BEGIN);
					/*::PostMessage(g_hRecvWnd,WM_RESETSIZE,pPacket->ph.dwAllSize/1500+1,0);*/
					/*hFile=CreateFile(szFileName,
						GENERIC_WRITE,
						FILE_SHARE_WRITE,
						NULL,
						OPEN_ALWAYS,
						FILE_ATTRIBUTE_NORMAL,
						NULL);*/
				}
				FindClose(hFind);
			}
		
			TCHAR szMessage[1024];
			wsprintf(szMessage,"已经接收%d字节,剩余:%d字节",pPacket->ph.dwCurrentPos,pPacket->ph.dwAllSize-pPacket->ph.dwCurrentPos);
			dlg.SetLineText(2,szMessage);

			dlg.UpdateProgress ( pPacket->ph.dwCurrentPos+pPacket->ph.dwCurrentSize,pPacket->ph.dwAllSize );
			
			DWORD dwHigh=0;
			DWORD dwWritten;
			SetFilePointer(hFile,pPacket->ph.dwCurrentPos,(PLONG)&dwHigh,FILE_BEGIN);
			WriteFile(hFile,pPacket->data,pPacket->ph.dwCurrentSize,&dwWritten,0);
		
			if (pPacket->ph.bEnd) {
				break;
			}

	   }
	   if(hFile)CloseHandle(hFile);
	   	dlg.EndDialog();
	    ::CoUninitialize();
	   g_bThreadStart=FALSE;
	   ::MessageBox(NULL,"数据接收完毕","提示",MB_OK);
	   return 0;

   }
   LRESULT OnRecv(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
   {  
	   GetDlgItemText(IDC_FILENAME,m_szFileName,sizeof(m_szFileName));
	   if (_tcslen(m_szFileName)==NULL) {
		   OnBrowse(wNotifyCode,IDC_BROWSE,GetDlgItem(IDC_BROWSE),bHandled);
	   }
	   DWORD dwThread;
	   InitRecv(m_szFileName,1,0);
	/* SetDlgItemText(IDC_EDIT1,"");
		if (!g_bThreadStart) {
			g_bThreadStart=TRUE;
			CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)lpListenProc,m_szFileName,0,&dwThread);
		}
		else
		    MessageBox("侦听线程已经启动","提示",MB_OK);*/
	  

	   return true;
   }
  // LRESULT OnNMRclickListview(int /*idCtrl*/, LPNMHDR pNMHDR, BOOL& /*bHandled*/);
};
class CSendPacketDlg : public CDialogImpl<CSendPacketDlg>
{
public:
   enum { IDD = IDD_SENDPACKETDLG };

   CBrush m_brBack;
   CUpDownCtrl m_spinMiniSeconds;
   BEGIN_MSG_MAP(CSendPacketDlg)
   
      MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
      MESSAGE_HANDLER(WM_CTLCOLORDLG, OnCtlColorDlg)
      MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnCtlColorDlg)

      MESSAGE_HANDLER(WM_SHOWWINDOW,OnShowWindow)
	  COMMAND_HANDLER(IDC_BROWSE, BN_CLICKED,OnBrowse)
	  COMMAND_HANDLER(IDC_SEND, BN_CLICKED,OnSend)
	  	REFLECT_NOTIFICATIONS()
   END_MSG_MAP()

   
   TCHAR m_szFileName[MAX_PATH];
   
	LRESULT OnSend(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
	{
		GetDlgItemText(IDC_FILENAME,m_szFileName,sizeof(m_szFileName));
		if (_tcslen(m_szFileName)==NULL) {
			OnBrowse(wNotifyCode,IDC_BROWSE,GetDlgItem(IDC_BROWSE),bHandled);
		}
		InitSend(m_szFileName,0,1);
//		PACKET Buffer;
//		Buffer.ph.dwFlag=0x12345678;
//		//_tcscpy(Buffer.ph.szFileName,m_szFileName);
//		Buffer.ph.dwCurrentPos=0;
//		
//		WIN32_FIND_DATA FindFileData;
//		HANDLE hFind;
//
//		Buffer.ph.bEnd=FALSE;
//		hFind = FindFirstFile(m_szFileName, &FindFileData);
//		if (hFind != INVALID_HANDLE_VALUE) 
//		{
//			Buffer.ph.dwAllSize=FindFileData.nFileSizeLow;
//
//		}
//		FindClose(hFind);
//		Buffer.ph.dwCurrentPos=0;
//		DWORD dwLeftSize=Buffer.ph.dwAllSize;
//		Buffer.ph.dwID=0;
//		Buffer.ph.dwCurrentSize=dwLeftSize>(1500-sizeof(PACKETHEADER))?1500-sizeof(PACKETHEADER):dwLeftSize;
//		HANDLE hFile=CreateFile(m_szFileName,
//			GENERIC_READ,
//			FILE_SHARE_READ,
//			NULL,
//			OPEN_EXISTING,
//			FILE_ATTRIBUTE_NORMAL,
//			NULL);
//		int i=0;
//		CoInitialize(NULL);
//		CSHProgressWnd dlg;
//		dlg.SetTitle ( _T("正在发送") );
//		dlg.SetAnimation ( IDR_FILECOPY );
//		dlg.SetCancelMessage ( _T("取消") );
//		dlg.SetLineText ( 1, _T("正在发送...") );
//		dlg.SetCalculateTime ( true );
//		dlg.SetAllowMinimize ( true );
//		dlg.SetCalculateTime ( true );
//		dlg.SetShowProgressBar ( true );
//        
//		dlg.ShowModeless(g_hWndTabView);
//		int nDelay=GetDlgItemInt(IDC_EDIT1);
//		struct pcap_pkthdr *header;
//		u_char *pkt_data;
//		int res;
//		//CXAviPlayDlg* ap=new CXAviPlayDlg(g_hWndTabView,dwLeftSize,"正在发送");
//		while (dwLeftSize!=0) {
//			
//			i++;
//			if (i>Buffer.ph.dwAllSize/(1500-sizeof(PACKETHEADER))) {
//				Buffer.ph.bEnd=TRUE;
//			}
//			DWORD dwlen;
//			ReadFile(hFile,Buffer.data,Buffer.ph.dwCurrentSize,&dwlen,NULL);	
//		    
//			if(!dwlen)break;
//			if(dlg.HasUserCanceled()){
//				dlg.SetCancelMessage("请等待当前的操作正在被清理");
//
//				break;
//			}
//			Buffer.ph.dwCurrentBlockCheckSum=checksum(Buffer.data,dwlen);
//			Buffer.ph.dwCurrentSize=dwlen;
//			
//retry:
//			pcap_sendpacket(fp, (u_char *)&Buffer, sizeof Buffer);
//				Sleep(1);
//			while((res = pcap_next_ex( fp, &header,(const BYTE**) &pkt_data)) >= 0)
//			{
//
//				if(res == 0)
//				{
//				
//					goto retry;
//					
//				}
//				if ( header->len==46&&pkt_data[45]==1)break;
//				continue;;
//				
//				
//			}
//			Buffer.ph.dwID++;
//			dwLeftSize-=dwlen;
//			Buffer.ph.dwCurrentSize=dwLeftSize>(1500-sizeof(PACKETHEADER))?1500-sizeof(PACKETHEADER):dwLeftSize;
//			
//			Buffer.ph.dwCurrentPos+=dwlen;
//			TCHAR szMessage[1024];
//			wsprintf(szMessage,"已经发送%d字节,剩余:%d字节",Buffer.ph.dwCurrentPos,Buffer.ph.dwAllSize-Buffer.ph.dwCurrentPos);
//			dlg.SetLineText(2,szMessage);
//			dlg.UpdateProgress ( Buffer.ph.dwCurrentPos,Buffer.ph.dwAllSize );
//			
//			//Sleep(nDelay);
//		}
//		CoUninitialize();
//		dlg.EndDialog();
//		CloseHandle(hFile);
		/*::MessageBox(NULL,"数据发送完毕","提示",MB_OK);*/
		return true;
	}
	LRESULT OnBrowse(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
	{
		OPENFILENAME ofn;       // common dialog box structure
		TCHAR szFile[260];       // buffer for file name


		// Initialize OPENFILENAME
		ZeroMemory(&ofn, sizeof(ofn));
		ofn.lStructSize = sizeof(ofn);
		ofn.hwndOwner = m_hWnd;
		ofn.lpstrFile = szFile;
		//
		// Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
		// use the contents of szFile to initialize itself.
		//
		ofn.lpstrFile[0] = '\0';
		ofn.nMaxFile = sizeof(szFile);
		ofn.lpstrFilter = _T("All Files\0*.*\0");
		ofn.nFilterIndex = 1;
		ofn.lpstrFileTitle = NULL;
		ofn.nMaxFileTitle = 0;
		ofn.lpstrInitialDir = NULL;
		ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

		// Display the Open dialog box. 

		if (GetOpenFileName(&ofn)==TRUE) {

			_tcscpy(m_szFileName,(TCHAR*)ofn.lpstrFile);
			SetDlgItemText(IDC_FILENAME,m_szFileName);
		}



		return 0;
	}  
   LRESULT OnShowWindow(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
   {
	 
	   return 0;
   } 
   LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
   {
     m_brBack.CreateSolidBrush(RGB(240,241,245));
	*m_szFileName=NULL;
	
	m_spinMiniSeconds = GetDlgItem(IDC_SPIN1);
	m_spinMiniSeconds.SetRange(1, 30);
	m_spinMiniSeconds.SetPos(15);
    m_spinMiniSeconds.SetBuddy(GetDlgItem(IDC_EDIT1));
	SetDlgItemInt(IDC_EDIT1,15);
      return 0;
   }  
  
   LRESULT OnCtlColorDlg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
   {
      return (LRESULT) (HBRUSH) m_brBack;
   }
};


class CTabView : public CTabPanelImpl<CTabView>
{
public:
	DECLARE_WND_CLASS(_T("WTL_CollapsiblePanel"))

	typedef CTabPanelImpl<CTabView> parentClass;

	
	CImageList m_Images;
	CSendPacketDlg m_view1;
	CRecvPacketDlg m_view2;

	BOOL PreTranslateMessage(MSG* pMsg)
	{
		pMsg;
		return FALSE;
	}

	BEGIN_MSG_MAP(CTabPanelImpl)
		MESSAGE_HANDLER(WM_CREATE, OnCreate)
		MESSAGE_HANDLER(WM_DESTROY, OnDestory)
		MESSAGE_HANDLER(WM_SET_PANEL_ACTIVE, OnSetActive)
		CHAIN_MSG_MAP( parentClass )
	END_MSG_MAP()
	LRESULT OnDestory(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{
	/*	 pcap_close(fp);*/
	   
		return 0;
	}
	LRESULT OnSetActive(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{
		SetCurSel((int )lParam);
		return 0;
	}
	LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{

        
		
		g_hWndTabView=m_hWnd;
		LRESULT lRes = parentClass::OnCreate(uMsg, wParam, lParam, bHandled);

		m_Images.CreateFromImage(MAKEINTRESOURCE(IDB_HEADERS), 32, 0, RGB(0,128,128), IMAGE_BITMAP, LR_CREATEDIBSECTION);
		SetImageList(m_Images, LVSIL_NORMAL);

		m_view1.Create(m_hWnd);
		m_view2.Create(m_hWnd);
	
		//SetExtendedPanelStyle(CPS_EX_FLATSTYLE);
		//SetExtendedPanelStyle(CPS_EX_SELHIGHLIGHT | CPS_EX_NOSCROLLBAR);      
		SetExpandBitmaps(IDI_EXPAND, IDI_COLLAPSE);
		InsertItem(m_view1, _T("发送以太包"),0);
		InsertItem(m_view2, _T("接收以太包"));
	
		SetItemExpanded(0, FALSE);

		//pcap_if_t *alldevs;
		//pcap_if_t *d;
		//char errbuf[PCAP_ERRBUF_SIZE+1];
		//if (pcap_findalldevs_ex("rpcap://", NULL, &alldevs, errbuf) == -1)
		//{
		//	MessageBox("WinPCap程序加载失败,请重新运行安装程序安装WinPCap","提示",MB_OK|MB_ICONSTOP);
		//	return 0;
		//}
		//for(d=alldevs;d;d=d->next)
		//{
		//	GetNetcardName(d);
		//}
	

		//if ( (fp= pcap_open(g_netchardsource/*"\\Device\\NPF_{8065DF3F-B15B-4EE1-BFEF-0A8893E9DABE}"*/,			// name of the device
		//	256,				// portion of the packet to capture (only the first 100 bytes)
		//	PCAP_OPENFLAG_PROMISCUOUS, 	// promiscuous mode
		//	1000,				// read timeout
		//	NULL,				// authentication on the remote machine
		//	errbuf				// error buffer
		//	) ) == NULL)

		//{
		//	ATLTRACE("\nUnable to open the adapter. %s is not supported by WinPcap\n", g_netchardsource);
		//	return NULL;
		//}
	
		return lRes;
	}
	
	//void GetNetcardName(pcap_if_t *d)
	//{
	//	pcap_addr_t *a;



	//	for(a=d->addresses;a;a=a->next) {
	//		//printf("\tAddress Family: #%d\n",a->addr->sa_family);

	//		switch(a->addr->sa_family)
	//		{
	//		case AF_INET:
	//			/*printf("\tAddress Family Name: AF_INET\n");*/
	//			if (a->addr){
	//				_tcscpy(g_netchardsource,d->name);
	//			}
	//			break;



	//		default:

	//			break;
	//		}
	//	}

	//}



};
#endif

⌨️ 快捷键说明

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