亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? myqqdlg.cpp

?? 很小的一個模仿qq 做的一個通信程序.可以實現即時聊天.發送文件等功能
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		if(num==0) break;
		end=sockClient.Send(m_buf, num); 
		temp+=end;
		pDlg->m_Progress.SetPos(temp);
		if(pDlg->FileStop==true) 
		{
			pDlg->FileStop=false;
			pDlg->FileWork=false;
			break;
		}
		
		if(end==SOCKET_ERROR)
		{
			AfxMessageBox("_SendFileThread Send錯誤!"+pDlg->GetError(GetLastError()));
			break;
			
		}
	}
	pDlg->m_Progress.SetPos(0);
	CString strLocalName;
	pDlg->GetLocalHostName(strLocalName);
	CString strLocalIP;
	pDlg->GetIpAddress(strLocalName,strLocalIP);
	if(temp==myFileInfo.fileLength)
		pDlg->AddMsgList(strLocalIP+"->"+strLocalName,"文件發送成功");
	else 
		pDlg->AddMsgList(strLocalIP+"->"+strLocalName,"文件發送失敗");
	myFile.Close();
	sockClient.Close();
	pDlg->FileWork=false;
	pDlg->GetDlgItem(IDC_PROGRESS_SEND_FILE)->ShowWindow(SW_HIDE);
	pDlg->GetDlgItem(IDC_BUTTON_STOP_FILE)->EnableWindow(false);

	pDlg->GetDlgItem(IDCANCEL)->EnableWindow(true);
	pDlg->GetDlgItem(IDC_BUTTON_DISCONNECT)->EnableWindow(true);
	
	return 0;
}



UINT _SendMsgThread(LPVOID lparam)	//TCP發送信息線程
{
	
	CMyQQDlg *pDlg=(CMyQQDlg *)lparam;
	if(pDlg->StopServer==true)	return -1;
	
	CSocket sockClient;
	sockClient.Create();
	CString ip,strError;
	pDlg->m_You_IP.GetWindowText(ip);
	int conn=sockClient.Connect(ip, PORT+pDlg->m_client);
	if(conn==0)	///////////////////////////////////
	{
		AfxMessageBox("_SendMsgThread Connect錯誤!"+pDlg->GetError(GetLastError()));
		sockClient.ShutDown(2);
		sockClient.Close();
		AfxEndThread(1L);
		return 0;
		
	}
	//首先發送標記M為信息,2
	int end=0;
	end=sockClient.Send("M",FLAG); 
	if(end==SOCKET_ERROR)
	{
		AfxMessageBox("_SendMsgThread Send錯誤!"+pDlg->GetError(GetLastError()));
		return -1;
	}
	else if(end!=2)
	{
		AfxMessageBox("消息頭錯誤");
		return -1;
	}
	CString strMsg=pDlg->m_MsgSend;
	end=sockClient.Send(strMsg,strMsg.GetLength()); 
	if(end==SOCKET_ERROR)
	{
		AfxMessageBox("_SendMsgThread Send錯誤!"+pDlg->GetError(GetLastError()));
		return -1;
	}
	CString strLocalName;
	pDlg->GetLocalHostName(strLocalName);
	CString strLocalIP;
	pDlg->GetIpAddress(strLocalName,strLocalIP);
	pDlg->AddMsgList(strLocalIP+"->"+strLocalName,strMsg);
	
	int i=0;
	sockClient.Close();

	return 0;
}
UINT _ThreadCapture(LPVOID lparam)	//抓取對方屏幕線程
{
	
	CMyQQDlg *pDlg=(CMyQQDlg *)lparam;
	if(pDlg->StopServer==true)	return -1;
	
	CSocket sockClient;
	sockClient.Create();
	CString ip;
	pDlg->m_You_IP.GetWindowText(ip);
	sockClient.Connect(ip, PORT+pDlg->m_client); 
	//首先發送標記C為抓取,2
	int end=0;
	end=sockClient.Send("C",FLAG);
	///////////////////////////////////////////////////////////////////發送標志是否成功
	if(end==SOCKET_ERROR)										
	{
		AfxMessageBox("_ThreadCapture Send錯誤!"+pDlg->GetError(GetLastError()));
		return -1;
	}
	
	else if(end!=2) 
	{
		AfxMessageBox("發送頭錯誤");
		return -1;
	}
	return 0;
}
///////////////////////////////////////////////////////////////////
UINT _SendMsgUdpThread(LPVOID lparam)	//UDP發送信息
{
	
	CMyQQDlg *pDlg=(CMyQQDlg *)lparam;
	if(pDlg->StopServer==true)	return -1;
	
	CSocket sockClientUdp;
	pDlg->m_type=PORT+pDlg->m_client+10;
	sockClientUdp.Create(pDlg->m_type,SOCK_DGRAM);
	CString strMsg=pDlg->m_MsgSend;
	int ret=0;
	CString ipStr;
	pDlg->m_You_IP.GetWindowText(ipStr);
	UINT port=PORT+pDlg->m_server;
	ret=sockClientUdp.SendTo(strMsg,strMsg.GetLength(),port,ipStr);
	if(ret==SOCKET_ERROR) 
	{
		DWORD error=GetLastError();
		
	}
	CString strLocalName;
	pDlg->GetLocalHostName(strLocalName);
	CString strLocalIP;
	pDlg->GetIpAddress(strLocalName,strLocalIP);
	pDlg->AddMsgList(strLocalIP+"->"+strLocalName,strMsg);
	sockClientUdp.Close();
	return 0;
	
}

////////////////////////////////////客戶端線程結束//////////////////////////////////////



///////////////////////////////////函數//////////////////////////////////////////

int CMyQQDlg::ReceiveFileMsg(CSocket &recSo,SOCKADDR_IN &client)//接受函數
{
//	if(StopServer==true)	return -1;
	if(m_type=='C')		//抓取
	{
		SaveYouScreen(CopyScreenToBitmap(),client);//發送地址
	}
	
	else if(m_type=='F')			//文件
	{
		SaveYouFile(recSo,client);
	}
	
	else if(m_type=='M')	//信息
	{
		char buff[100]={0};
		CString msg;
		int ret=0;
		for(;;)
		{
			ret=recSo.Receive(buff,100);
			if(ret==0)
				break;
			msg+=buff;
		}
		CString strOut,strIn;
		m_You_IP.GetWindowText(strIn);
		GetNamebyAddress(strIn,strOut);
		CString youName;
		youName.Format(inet_ntoa(client.sin_addr));
		CString str=youName+"<-"+strOut;
		AddMsgList(str,msg);
	}
	recSo.Close();	
	return 0;
}



HBITMAP CMyQQDlg::CopyScreenToBitmap()
{
	CRect rect(0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
	HDC hScrDC,hMemDC;	// 屏幕和內存設備描述表
	HBITMAP hBitmap, hOldBitmap;// 位圖句柄
	int xScrn, yScrn;	// 屏幕分辨率
	hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);	//為屏幕創建設備描述表
	hMemDC = CreateCompatibleDC(hScrDC);//為屏幕設備描述表創建兼容的內存設備描述表
	xScrn = GetDeviceCaps(hScrDC, HORZRES);// 獲得屏幕分辨率
	yScrn = GetDeviceCaps(hScrDC, VERTRES);
	hBitmap = CreateCompatibleBitmap(hScrDC, rect.Width(), rect.Height());// 創建一個與屏幕設備描述表兼容的位圖
	hOldBitmap =(HBITMAP)SelectObject(hMemDC, hBitmap);// 把新位圖選到內存設備描述表中
	BitBlt(hMemDC, 0, 0, rect.Width(), rect.Height(),hScrDC,rect.left,rect.top, SRCCOPY);// 把屏幕設備描述表拷貝到內存設備描述表中
	hBitmap =(HBITMAP)SelectObject(hMemDC, hOldBitmap);//得到屏幕位圖的句柄
	DeleteDC(hScrDC);//清除 
	DeleteDC(hMemDC);
	return hBitmap;// 返回位圖句柄
}


void CMyQQDlg::SaveYouScreen(HBITMAP hBitmap,SOCKADDR_IN &client)//接受屏幕
{
	HDC hDC; //設備描述表
	int iBits;//當前顯示分辨率下每個像素所占字節數
	WORD wBitCount;//位圖中每個像素所占字節數
	DWORD dwPaletteSize=0,//定義調色板大小
		  dwBmBitsSize,//位圖中像素字節大小
		  dwDIBSize;//位圖文件大小 
	BITMAP Bitmap;//位圖屬性結構
	BITMAPFILEHEADER bmfHdr;//位圖文件頭結構
	BITMAPINFOHEADER bi;//位圖信息頭結構 
	LPBITMAPINFOHEADER lpbi;//指向位圖信息頭結構
	HANDLE hDib, hPal,hOldPal=NULL;//定義文件,分配內存句柄,調色板句柄
	hDC = CreateDC("DISPLAY",NULL,NULL,NULL);
	iBits = GetDeviceCaps(hDC, BITSPIXEL) * 
		GetDeviceCaps(hDC, PLANES);//計算位圖文件每個像素所占字節數
	DeleteDC(hDC);
	if (iBits <= 1)
		wBitCount = 1;
	else if (iBits <= 4)
		wBitCount = 4;
	else if (iBits <= 8)
		wBitCount = 8;
	else if (iBits <= 24)
		wBitCount = 24;
	if (wBitCount <= 8)
		dwPaletteSize = (1<<wBitCount)*sizeof(RGBQUAD);//計算調色板大小
	
	//設置位圖信息頭結構
	GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&Bitmap);
	bi.biSize            = sizeof(BITMAPINFOHEADER);
	bi.biWidth           = Bitmap.bmWidth;
	bi.biHeight          = Bitmap.bmHeight;
	bi.biPlanes          = 1;
	bi.biBitCount         = wBitCount;
	bi.biCompression      = BI_RGB;
	bi.biSizeImage        = 0;
	bi.biXPelsPerMeter     = 0;
	bi.biYPelsPerMeter     = 0;
	bi.biClrUsed         = 0;
	bi.biClrImportant      = 0;
	
	dwBmBitsSize = ((Bitmap.bmWidth * wBitCount+31)/32)* 4 *Bitmap.bmHeight ;
	//為位圖內容分配內存
	hDib  = GlobalAlloc(GHND,dwBmBitsSize+dwPaletteSize+sizeof(BITMAPINFOHEADER));
	lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
	*lpbi = bi;
	// 處理調色板   
	hPal = GetStockObject(DEFAULT_PALETTE);
	if (hPal)
	{
		hDC=::GetDC(NULL);
		hOldPal = SelectPalette(hDC,(HPALETTE)hPal, FALSE);
		RealizePalette(hDC);
	}
	// 獲取該調色板下新的像素值
	GetDIBits(hDC, hBitmap, 0, (UINT) Bitmap.bmHeight,
		(LPSTR)lpbi + sizeof(BITMAPINFOHEADER)
		+dwPaletteSize,
		(BITMAPINFO*)
		lpbi, DIB_RGB_COLORS);
	//恢復調色板   
	if (hOldPal)
	{
		SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
		RealizePalette(hDC);
		::ReleaseDC(NULL, hDC);
	}
	// 設置位圖文件頭
	bmfHdr.bfType = 0x4D42;  // "BM"
	dwDIBSize    = sizeof(BITMAPFILEHEADER) 
		+ sizeof(BITMAPINFOHEADER)
		+ dwPaletteSize + dwBmBitsSize;  
	bmfHdr.bfSize = dwDIBSize;
	bmfHdr.bfReserved1 = 0;
	bmfHdr.bfReserved2 = 0;
	bmfHdr.bfOffBits = (DWORD)sizeof
		(BITMAPFILEHEADER) 
		+ (DWORD)sizeof(BITMAPINFOHEADER)
		+ dwPaletteSize;
	
	CSocket sockClient;
	sockClient.Create();
	sockClient.Connect(inet_ntoa(client.sin_addr), PORT+m_client); //連接到申請方

	//首先發送標記F為文件,2
	FILEINFO myFileInfo;
	myFileInfo.fileLength=sizeof(BITMAPFILEHEADER)+dwDIBSize;//得到文件大小
	strcpy(myFileInfo.fileName,"對方屏幕.bmp");//得到文件名稱
	sockClient.Send("F",FLAG);
	sockClient.Send(&myFileInfo,sizeof(FILEINFO));
	sockClient.Send(&bmfHdr, sizeof(BITMAPFILEHEADER)); 
	sockClient.Send(lpbi, dwDIBSize); 
	GlobalUnlock(hDib);
	GlobalFree(hDib);
}


int CMyQQDlg::SaveYouFile(CSocket &recSo, SOCKADDR_IN &client)//接受文件
{
	CString fname;
	CFileDialog dlg(false);	//另存文件
	FILEINFO myFileInfo;
	recSo.Receive(&myFileInfo,sizeof(FILEINFO));
	int fileLength=myFileInfo.fileLength;
	CString strfileIp,strfileName,strfileLength;
	strfileIp.Format(inet_ntoa(client.sin_addr));
	strfileName.Format(myFileInfo.fileName);
	strfileLength.Format("%f",myFileInfo.fileLength/1024.0);
	CString title="文件"+strfileName+" 大小"+strfileLength+"KB "+"來在"+strfileIp+" 是否接受";
	dlg.m_ofn.lpstrTitle=title;//標題條
	char fileme[500]={0};//必須足夠大小
	strcpy(fileme,strfileIp+strfileName);
	dlg.m_ofn.lpstrFile=fileme;	//文件名稱
	if(dlg.DoModal()==IDOK)
	{
		fname=dlg.GetPathName();	//得到文件名名稱、路徑
		GetDlgItem(IDC_PROGRESS_SEND_FILE)->ShowWindow(SW_SHOW);
	}
	else
	{
		GetDlgItem(IDC_PROGRESS_SEND_FILE)->ShowWindow(SW_HIDE);
		GetDlgItem(IDC_BUTTON_STOP_FILE)->EnableWindow(false);
		
		GetDlgItem(IDC_BUTTON_DISCONNECT)->EnableWindow(true);
		GetDlgItem(IDCANCEL)->EnableWindow(true);
		
		recSo.Close();	
		return 0;	
		
	}
	char buf[SIZEFILE]={0};
	CFile f(fname,CFile::modeCreate|CFile::modeWrite);	//存文件
	
	m_Progress.SetRange32(0,fileLength);
	
	int n=0;	//接受的字節數 0表示結束
	int temp=0;
	GetDlgItem(IDC_BUTTON_STOP_FILE)->EnableWindow(true);
	
	GetDlgItem(IDCANCEL)->EnableWindow(false);
	GetDlgItem(IDC_BUTTON_DISCONNECT)->EnableWindow(false);
	
	
	for(;;)
	{
		n=recSo.Receive(buf,SIZEFILE);	//接受
		if(n==0)		//0表示結束
			break;		//接受完畢
		f.Write(buf,n);
		temp+=n;
		m_Progress.SetPos(temp);
		if(FileWork==false) FileWork=true;
		if(FileStop==true) 
		{
			FileStop=false;
			FileWork=false;
			break ;
		}
		
	}
	f.Close();
	m_Progress.SetPos(0);
	if(temp==fileLength)
		AddMsgList(inet_ntoa(client.sin_addr),"文件接受成功");
	else
		AddMsgList(inet_ntoa(client.sin_addr),"文件接受失敗");
	FileWork=false;
	GetDlgItem(IDC_PROGRESS_SEND_FILE)->ShowWindow(SW_HIDE);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色老汉av一区二区三区| 91免费视频观看| 亚洲一区二三区| 国产欧美精品一区| 久久精品一区二区三区av| 精品免费日韩av| 亚洲精品一区二区三区在线观看 | 日韩高清一级片| 亚洲一区二区影院| 91久久精品一区二区二区| 91在线观看视频| 国产香蕉久久精品综合网| 亚洲电影一级片| 亚瑟在线精品视频| 99国产一区二区三精品乱码| 色哟哟一区二区| 欧美男生操女生| 久久综合久久鬼色| 日韩毛片高清在线播放| 五月婷婷综合激情| 国产美女视频一区| 91麻豆国产香蕉久久精品| 久久精品欧美日韩精品| 免费成人av在线播放| 成人黄色一级视频| 在线看国产日韩| 精品国产凹凸成av人导航| 26uuu欧美日本| 精品久久久久久久久久久久包黑料| 亚洲精品视频在线观看网站| 亚洲视频在线观看一区| 国产成a人无v码亚洲福利| 欧美在线观看视频一区二区三区| 亚洲欧洲日本在线| 久久国产精品无码网站| 91碰在线视频| 亚洲女同ⅹxx女同tv| 精品无人区卡一卡二卡三乱码免费卡| aaa欧美色吧激情视频| 日韩视频在线永久播放| 成人免费在线视频观看| 91丝袜国产在线播放| 亚洲欧美国产毛片在线| 欧美影院午夜播放| 欧美国产欧美综合| 91美女片黄在线观看91美女| 色天使色偷偷av一区二区| 麻豆视频一区二区| 91久久国产最好的精华液| 日韩一区二区三区在线观看| 日韩不卡在线观看日韩不卡视频| 欧美久久久久久久久| 国产精品丝袜在线| 国内精品免费在线观看| 欧美日韩高清影院| 久久精品久久综合| 国产精品五月天| 91成人免费网站| 麻豆成人91精品二区三区| 久久精品一区二区三区不卡牛牛| 99视频在线精品| 日韩精品午夜视频| 91丨国产丨九色丨pron| 亚洲图片欧美综合| 在线观看一区日韩| 亚洲成人av电影| 在线亚洲高清视频| 一区二区欧美视频| 91丨九色丨蝌蚪丨老版| 亚洲欧美日韩久久| 欧美午夜理伦三级在线观看| 日本美女一区二区| 国产精品女主播av| 欧美一区二区三区精品| 一区二区三区四区中文字幕| 日韩欧美国产小视频| 免费高清在线视频一区·| 国产精品视频麻豆| 日韩视频一区二区| 欧美自拍偷拍一区| 国产成人av在线影院| 久久精品欧美日韩精品| 欧美色国产精品| 日本欧美在线看| 亚洲欧洲日韩女同| 26uuu亚洲综合色欧美| 欧洲av在线精品| 亚洲国产一区二区在线播放| 麻豆精品新av中文字幕| 国产成人超碰人人澡人人澡| 欧美肥大bbwbbw高潮| 国产精品久久久久久久久搜平片| 青青草成人在线观看| 亚洲天堂2016| 久久精品无码一区二区三区| 欧美丰满少妇xxxxx高潮对白| 成人黄色777网| 国产剧情av麻豆香蕉精品| 中文字幕精品综合| 日韩欧美国产精品一区| 欧美亚洲综合在线| 99久久亚洲一区二区三区青草| 国内精品久久久久影院薰衣草 | 国产日韩欧美a| 日韩午夜在线播放| 欧美男生操女生| 欧美日韩一区在线观看| 成人av免费在线观看| 色香蕉成人二区免费| 亚洲1区2区3区视频| 一区二区在线观看免费 | 欧美日韩成人在线| 在线视频观看一区| 在线视频你懂得一区| 色狠狠色狠狠综合| 91麻豆自制传媒国产之光| 96av麻豆蜜桃一区二区| 成年人国产精品| 99精品欧美一区| 色噜噜狠狠色综合中国| 色综合久久99| 欧美性猛交一区二区三区精品| 欧美色倩网站大全免费| 欧美日韩国产高清一区二区三区 | 精品国产乱码久久久久久牛牛| 日韩欧美一二区| 精品福利视频一区二区三区| 精品伦理精品一区| 国产午夜亚洲精品羞羞网站| 中文字幕乱码亚洲精品一区| 亚洲欧洲美洲综合色网| 一区二区三区免费在线观看| 亚洲第一综合色| 日韩不卡一区二区| 国产一区二区三区在线观看精品| 国产剧情av麻豆香蕉精品| 不卡的电视剧免费网站有什么| 色综合天天综合网国产成人综合天| 视频在线在亚洲| 美女视频网站黄色亚洲| 成人动漫在线一区| 欧美影片第一页| 欧美一区二区在线播放| 精品国产乱码久久久久久浪潮| 国产视频一区在线播放| 亚洲免费毛片网站| 日韩制服丝袜先锋影音| 国产麻豆视频一区| 日本大香伊一区二区三区| 91精品国产美女浴室洗澡无遮挡| 2023国产一二三区日本精品2022| 国产精品国产三级国产aⅴ无密码| 一区二区三区在线不卡| 六月婷婷色综合| 91在线国产福利| 欧美一区欧美二区| 亚洲欧美综合色| 欧美aa在线视频| 91小宝寻花一区二区三区| 7777精品伊人久久久大香线蕉经典版下载| 91在线云播放| 欧美一区在线视频| 亚洲精品日日夜夜| 国产一区二区三区在线看麻豆 | 国产福利一区二区| 欧美亚洲综合一区| 亚洲国产成人自拍| 美日韩黄色大片| 91极品美女在线| 国产精品色婷婷| 久久国产精品99久久久久久老狼 | 免费在线观看不卡| 92精品国产成人观看免费 | 欧美日韩亚州综合| 国产精品乱码一区二三区小蝌蚪| 日韩av中文在线观看| 一本一本久久a久久精品综合麻豆| 26uuu亚洲综合色| 日韩中文字幕麻豆| 欧美日本一区二区三区四区| 国产精品久久久久久久第一福利 | 精品国产污污免费网站入口 | 国产精品色眯眯| 久久99蜜桃精品| 91精品国产综合久久精品| 亚洲一区二区综合| 色妞www精品视频| 中文字幕日韩精品一区| 国产在线精品视频| 欧美精品一区二区三| 日韩av电影免费观看高清完整版在线观看| 一本一道久久a久久精品| 国产精品久久三| 成人亚洲一区二区一| 欧美色图在线观看| 亚洲人吸女人奶水| 91蜜桃网址入口| 亚洲最新视频在线播放| 一本一道久久a久久精品| 亚洲免费av高清|