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

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

?? secretchatdlg.cpp

?? 經過測試確實可行
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
		AfxGetResourceHandle(),
		hRsrc);
	::sndPlaySound(
		(LPCTSTR)::LockResource(hglb),
		SND_MEMORY | SND_SYNC | SND_NODEFAULT);
	::FreeResource(hglb);
	/**********************************/
}

BOOL CSecretChatDlg::Disconnection()	//斷開連接
{	
	if(!m_online)	//聯機時的處理
		return TRUE;
	/*正在發送或接收消息時不能斷開連接,否則會出現嚴重的錯誤提示
	if(m_send != 0 || m_receive != -1)
	{
		MessageBox(
			"發送或接收消息時,請別斷開連接",
			"密聊",
			MB_ICONEXCLAMATION);
		return FALSE;
	}*/


	m_statusMessages.SetWindowText("已經斷開連接");	//已經斷開服務器連接
	
	//斷開連接成功后改變按鈕的狀態
	CString str = "連接";
	m_connect.SetIcon(IDI_CONNECT);
	m_connect.SetTooltipText(&str);	
	m_connect.SetWindowText(str);

	/*這里有些邏輯錯誤,雙方會造成循環發送HEAD_DISCONNECTION消息
	MessagePackage	msg;
	msg.head = HEAD_DISCONNECTION;
	SendData(msg, 12);
	*/
	m_online = FALSE;	//提示斷線
	TrayIcon();	//設置狀態區圖標
	SetWindowText("密聊 (未連接)");	//提示已連接還是未連接

	//關閉套接字
	CloseSocket();//斷開了那還怎么發通知斷線消息給對方呀?
	PlayWaveSound(IDR_OFFLINE);	//斷開時的聲音提示

	return TRUE;
}

BOOL CSecretChatDlg::Connect()			//建立連接
{	
	if(m_online)	//沒聯機時的處理
		return TRUE;

	if(m_connectDlg.DoModal() != IDOK)
	{
		return FALSE;
	}

	m_IP = m_connectDlg.m_IP;
	m_port = m_connectDlg.m_port;

	if(!prevent_connect())
		return FALSE;	//防止自己連接自己

	m_statusMessages.SetWindowText("連接中...");

	/*連接不能在線程了完成否則對方無法創建得到服務器套接字對象,
	所以就發不了消息給客戶機了*/
	if( (NULL != (m_pSocket = new CClientSocket)) //確定了指向那個套接字
		&& m_pSocket->Create() )		//創建套接字對象
	{
		if(m_pSocket->Connect(m_IP, m_port) )
		{	
			//成功連接的IP地址記入注冊表中
			AfxGetApp()->WriteProfileString("Connect", "IPHistory", m_IP);
			m_clientOrService = FALSE;	//客戶端
			connect_succeed_update();
		}
		else
		{
			CloseSocket();//關閉套接字
			m_statusMessages.SetWindowText("連接失敗!");
			PlayWaveSound(IDR_OFFLINE);	//連接失敗時的聲音提示
			return FALSE;
		}
	}
	else
	{
		return FALSE;
	}
	/*
	unsigned long nThreadID;
	::CreateThread(
		NULL,
		0,
		connect_thread,
		this,
		0,
		&nThreadID);*/

	return TRUE;
}

int CSecretChatDlg::SendData(MessagePackage &msg, int n)	//發送數據
{
	//斷開連接就不能再發送消息了
	if(!m_online)
		return 0;

	if(m_clientOrService)	//服務器端
	{
		m_socketListen.m_pServiceSocket->Send(&msg, n);
		//錯誤提示
		CuoWuTiShi();
	}
	else					//客戶機端
	{
		m_pSocket->Send(&msg, n);
		//錯誤提示
		CuoWuTiShi();
	}
	return 0;

}

void CSecretChatDlg::WinHelp(DWORD dwData, UINT nCmd) //按下F1打開幫助文件
{
	::ShellExecute( 
		m_hWnd, 
		"open",
		"http://www.wjmshome.com/SecretChat.htm",
		"", 
		"", 
		SW_SHOWNORMAL);
	
	//CDialog::WinHelp(dwData, nCmd);
}

void CSecretChatDlg::OnSecretkey() //通訊雙方的密鑰設置和密鑰管理
{
	m_setupDlg.m_index = 0;
	if(m_setupDlg.DoModal() == IDOK)
	{

	}
}

void CSecretChatDlg::OnSetup()		//常規設置
{
	m_setupDlg.m_index = 3;
	if(m_setupDlg.DoModal() == IDOK)
	{

	}
	
}

BOOL CSecretChatDlg::InstallPrivateKey(CString fileName/*安裝的文件名*/)
{
	if(fileName == "")
	{	//當沒說明安裝的文件時,就安裝默認的
		fileName =
			m_appName 
			+ "\\user\\" 
			+ AfxGetApp()->GetProfileString("SecretKeySetup", "UserPrivateKey");
	}

	CFile file;
	SecretKey secretKey;
	if(!file.Open(
		fileName,
		CFile::modeReadWrite | CFile::typeBinary))
		return FALSE;
	if(file.GetLength() != sizeof(SecretKey))
		return FALSE;
	file.SeekToBegin();
	file.Read(&secretKey, sizeof(SecretKey));
	file.Close();

	if(secretKey.ID != SECRETKEY_ID)
		return FALSE;
	if(secretKey.privateOrPublic != SECRETKEY_PRIVATE)
		return FALSE;

	m_userNameStatic.SetWindowText(AfxGetApp()->GetProfileString("SecretKeySetup", "UserPrivateKey"));
	m_userNameStatic.SetLink(TRUE,FALSE);
	m_userNameStatic.SetTextColor(RGB(0,128,192));
	m_userNameStatic.SetLinkCursor(AfxGetApp()->LoadCursor( IDC_HAND));

	m_private_key_send.SK_to_vlong(secretKey.sk/*自己的私鑰*/);
	m_private_key_receive.SK_to_vlong(secretKey.sk/*自己的私鑰*/);

	return TRUE;
}

BOOL CSecretChatDlg::InstallPublicKey(CString fileName/*安裝的文件名*/)
{
	if(fileName == "")
	{	//當沒說明安裝的文件時,就安裝默認的
		fileName =
			m_appName 
			+ "\\friend\\" 
			+ AfxGetApp()->GetProfileString("SecretKeySetup", "FriendPublicKey");
	}

	CFile file;
	SecretKey secretKey;
	if(!file.Open(
		fileName,
		CFile::modeReadWrite | CFile::typeBinary))
		return FALSE;
	if(file.GetLength() != sizeof(SecretKey))
		return FALSE;
	file.SeekToBegin();
	file.Read(&secretKey, sizeof(SecretKey));
	file.Close();

	if(secretKey.ID != SECRETKEY_ID)
		return FALSE;
	if(secretKey.privateOrPublic != SECRETKEY_PUBLIC)
		return FALSE;

	m_friendNameStatic.SetWindowText(AfxGetApp()->GetProfileString("SecretKeySetup", "FriendPublicKey"));
	m_friendNameStatic.SetLink(TRUE,FALSE);
	m_friendNameStatic.SetTextColor(RGB(255,128,128));
	m_friendNameStatic.SetLinkCursor(AfxGetApp()->LoadCursor( IDC_HAND));

	m_public_key_send.PK_to_vlong(secretKey.pk/*對方的公鑰*/);
	m_public_key_receive.PK_to_vlong(secretKey.pk/*對方的公鑰*/);

	return TRUE;
}

BOOL CSecretChatDlg::MyUpdateData() //根據注冊表數據進行設置
{
	//顯示出私鑰和公鑰名
	m_userNameStatic.SetWindowText(
		AfxGetApp()->GetProfileString("SecretKeySetup", "UserPrivateKey"));
	m_friendNameStatic.SetWindowText(
		AfxGetApp()->GetProfileString("SecretKeySetup", "FriendPublicKey"));
	m_userNameStatic.SetLink(TRUE,FALSE);
	m_userNameStatic.SetTextColor(RGB(0,128,192));
	m_userNameStatic.SetLinkCursor(AfxGetApp()->LoadCursor( IDC_HAND));
	m_friendNameStatic.SetLink(TRUE,FALSE);
	m_friendNameStatic.SetTextColor(RGB(255,128,128));
	m_friendNameStatic.SetLinkCursor(AfxGetApp()->LoadCursor( IDC_HAND));

	//頂層窗口
	if(AfxGetApp()->GetProfileInt("General", "Top", 0))
	{
		::SetWindowPos(
			GetSafeHwnd(),
			HWND_TOPMOST,
			0,0,0,0,
			SWP_NOMOVE | SWP_NOSIZE);
	}
	else
	{
		::SetWindowPos(
			GetSafeHwnd(),
			HWND_NOTOPMOST,
			0,0,0,0,
			SWP_NOMOVE | SWP_NOSIZE);
	}

	//顯示位置
	TrayIcon();

	//LAN啟動周期性連接
	if(AfxGetApp()->GetProfileInt("General", "LANStartup", 0))
	{
		SetTimer(1002, 60000, NULL);	//以60秒為周期連接LAN
	}
	else
	{
		KillTimer(1002);
	}

	//安裝私鑰和公鑰
	InstallPrivateKey();
	InstallPublicKey();


	return TRUE;

}

BOOL CSecretChatDlg::PreTranslateMessage(MSG* pMsg) 
{
	//快捷鍵
	if( pMsg->message == WM_KEYDOWN)
	{
		BOOL bCtrl = ::GetKeyState( VK_CONTROL) & 0x8000;
		BOOL bShift = ::GetKeyState( VK_SHIFT) & 0x8000;
		BOOL bAlt = ::GetKeyState( VK_MENU) & 0x8000;

		switch( pMsg->wParam)
		{
		case VK_ESCAPE:	//不能Esc就退出程序
			if(AfxGetApp()->GetProfileInt("General", "Tray", 1))
			{
				ShowWindow( SW_MINIMIZE);
				ShowWindow(SW_HIDE);		//隱藏動畫
			}
			else
			{	
				ShowWindow( SW_MINIMIZE);
			}
			return TRUE;	//必須要立即返回
			break;
		case VK_RETURN:
			if( bCtrl)
			{
				SendMessage( WM_COMMAND, IDC_SEND);
				return TRUE;
			}
			break;
		case 'J':
			if( bCtrl)
			{
				HKEY hkey;
				char sz[MAX_PATH];	//緩沖區必須要和設置時的相同才能讀到數據
				DWORD dwtype, sl = MAX_PATH;
				::RegOpenKeyEx(
					HKEY_CURRENT_USER,
					"Software\\文件密使\\Application",
					NULL,
					KEY_ALL_ACCESS,
					&hkey);
				::RegQueryValueEx(
					hkey,
					"DirectoryName",
					NULL,
					&dwtype,
					(LPBYTE)sz,
					&sl);
				::RegCloseKey(hkey);
				CString strJiaMi = sz;

				::ShellExecute(
					NULL, 
					"open",
					strJiaMi + "\\jiami.exe", 
					"", 
					"",
					SW_SHOW);
				return TRUE;
			}
			break;
		}
	}

	//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	m_toolTip.RelayEvent(pMsg);	//
	//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
	return CDialog::PreTranslateMessage(pMsg);
}

void CSecretChatDlg::OnUsername() //查看用戶的私鑰信息
{
	CSecretKeyEdit secretKeyEditDlg;
	secretKeyEditDlg.m_select = SECRETKEY_PRIVATE;
	if(secretKeyEditDlg.validateSecretKey(
		m_appName 
		+ "\\user\\" 
		+ AfxGetApp()->GetProfileString("SecretKeySetup", "UserPrivateKey"))
		!= SECRETKEY_PRIVATE)
	{
		MessageBox(
			"不是用戶私鑰文件",
			"密聊",
			MB_ICONINFORMATION);
		return;
	}
	secretKeyEditDlg.DoModal();

}

void CSecretChatDlg::OnFriendname() //查看好友的公鑰信息
{
	CSecretKeyEdit secretKeyEditDlg;
	secretKeyEditDlg.m_select = SECRETKEY_PUBLIC;
	if(secretKeyEditDlg.validateSecretKey(
		m_appName 
		+ "\\friend\\" 
		+ AfxGetApp()->GetProfileString("SecretKeySetup", "FriendPublicKey"))
		!= SECRETKEY_PUBLIC)
	{
		MessageBox(
			"不是好友公鑰文件",
			"密聊",
			MB_ICONINFORMATION);
		return;
	}
	secretKeyEditDlg.DoModal();
	
}

BOOL CSecretChatDlg::AskPublicKey()	//請求獲得連線好友的公鑰文件
{
	if(m_online)
	{
		MessagePackage	msg;
		msg.head = HEAD_CLAIM_PUBLIC_KEY;
		SendData(msg, sizeof(msg));
		return TRUE;
	}
	else
	{	
		MessageBox(
			"需要聯機才能請求獲得對方的公鑰文件",
			"密聊",
			MB_ICONINFORMATION);
		return FALSE;
	}

}

BOOL CSecretChatDlg::ClaimPublicKey(MessagePackage &msg)	//請求對方的公鑰
{
	//生成公鑰信息
	SecretKey secretKey;
	CFile file;
	if(!file.Open(
		m_appName + "\\user\\" + AfxGetApp()->GetProfileString("SecretKeySetup", "UserPrivateKey"),
		CFile::modeReadWrite | CFile::typeBinary))
		return FALSE;
	if(file.GetLength() != sizeof(SecretKey))
		return FALSE;
	file.SeekToBegin();
	file.Read(&secretKey, sizeof(SecretKey));
	file.Close();

	//清除私鑰信息
	char chTemp[2048 / 8];
	for(int i = 0;i < (2048 / 8);i++)
	{
		chTemp[i] = 0;
	}
	::MoveMemory(
		(char *)&secretKey.sk,	//目標
		chTemp,					//源內容
		2048 / 8);
	secretKey.privateOrPublic = SECRETKEY_PUBLIC;//公鑰標記

	msg.head = HEAD_REVERT_PUBLIC_KEY;	//回復給對方
	::MoveMemory(
		msg.data,							//目標
		(char *)&secretKey,					//源內容
		sizeof(SecretKey));	//公鑰文件信息包涵公鑰文件名

	SendData(msg, sizeof(msg));

	return TRUE;
}

BOOL CSecretChatDlg::RevertPublicKey(MessagePackage &msg)	//接收對方的公鑰
{
	SecretKey secretKey;
	CSecretKeyEdit secretKeyEditDlg;
	CString fileName;
	CFile file;
	CFileFind find;
	::MoveMemory(
		(char *)&secretKey,	//目標
		msg.data,			//源內容
		sizeof(SecretKey));	//公鑰文件信息包涵公鑰文件名

	fileName = //密鑰的文件全路徑
		m_appName 
		+ "\\friend\\" 
		+ secretKeyEditDlg.CharToCString(secretKey.userName, 32) 
		+ ".pk";

	if(find.FindFile(fileName)) //文件存在
	{	
		MessageBox(
			"對方的公鑰文件 " 
			+ secretKeyEditDlg.CharToCString(secretKey.userName, 32)
			+ ".pk 已經存在",
			"密聊",
			MB_ICONEXCLAMATION);
		return FALSE;
	}
	//生成公鑰文件
	file.Open(
		fileName,//密鑰的文件全路徑
		CFile::modeCreate | CFile::modeReadWrite | CFile::typeBinary);
	file.Write(
		&secretKey,
		sizeof(SecretKey));	//寫入信息
	file.Close();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男男视频亚洲欧美| 中文字幕日本乱码精品影院| 国产一区二区久久| 亚洲欧美自拍偷拍| 欧美一区二区女人| 韩国一区二区三区| 亚洲va欧美va人人爽| 国产午夜精品一区二区 | 日本视频中文字幕一区二区三区| 国产欧美日产一区| 欧美午夜在线一二页| 国产一区二区三区四区在线观看| 国产欧美日韩亚州综合| 日韩美一区二区三区| 99精品视频一区二区| 裸体在线国模精品偷拍| 欧美国产精品劲爆| 9191精品国产综合久久久久久| 国产精品一二三区| 日韩精品一二三四| 亚洲在线观看免费| 国产精品毛片无遮挡高清| 亚洲国产精品99久久久久久久久| 精品一区免费av| 亚洲区小说区图片区qvod| 欧美日韩国产经典色站一区二区三区 | 成人激情免费网站| 亚洲国产精品人人做人人爽| 精品国产99国产精品| aa级大片欧美| kk眼镜猥琐国模调教系列一区二区 | 欧美羞羞免费网站| 懂色av噜噜一区二区三区av| 秋霞av亚洲一区二区三| 国产精品国产精品国产专区不蜜| 国产亚洲综合在线| 欧美日韩日日骚| 色哟哟在线观看一区二区三区| 九色综合狠狠综合久久| 久久美女高清视频| 国产1区2区3区精品美女| 国产精品无码永久免费888| 欧美精品久久99久久在免费线 | 日韩欧美在线网站| 成人不卡免费av| voyeur盗摄精品| 成人少妇影院yyyy| 国产99精品视频| 欧美一级一区二区| 欧洲国内综合视频| 色噜噜夜夜夜综合网| 国产成人鲁色资源国产91色综| 国产精品一区2区| 国产精品18久久久久久久网站| 狠狠色丁香婷婷综合| 国产精品99久久久久久似苏梦涵 | 午夜亚洲国产au精品一区二区| 亚洲欧美乱综合| 亚洲黄色免费网站| 亚洲美女在线国产| 午夜激情一区二区| 爽爽淫人综合网网站| 日韩av电影天堂| 日韩精品福利网| 美国十次了思思久久精品导航| 婷婷丁香激情综合| 日本不卡视频在线| 国产激情91久久精品导航| 国产精品亚洲专一区二区三区| 国产成人av一区二区三区在线| 国产91在线观看丝袜| 色播五月激情综合网| 欧美午夜精品一区二区蜜桃 | 99视频精品在线| 成人黄色777网| 欧美顶级少妇做爰| 2021久久国产精品不只是精品| 精品美女一区二区| 国产精品久久久久影院色老大| 亚洲人吸女人奶水| 亚洲风情在线资源站| 蜜臀精品久久久久久蜜臀| 国产91精品精华液一区二区三区 | 精品制服美女久久| 国产不卡一区视频| 国产精品一二三四五| 欧美性大战久久| 欧美成人a∨高清免费观看| 国产午夜精品一区二区三区四区| 国产欧美在线观看一区| 国产成人三级在线观看| 91免费看`日韩一区二区| 欧美色男人天堂| 欧美va亚洲va香蕉在线| 欧美国产日韩在线观看| 性久久久久久久久久久久 | 日韩av网站免费在线| 成人丝袜18视频在线观看| 欧美在线色视频| 久久免费美女视频| 亚洲国产日韩a在线播放性色| 国产999精品久久久久久绿帽| 欧洲精品视频在线观看| 久久亚洲综合色| 亚洲欧美在线另类| 久久精品99国产国产精| 欧洲av一区二区嗯嗯嗯啊| www久久久久| 图片区小说区国产精品视频| 国产成人av一区二区三区在线 | 国产电影精品久久禁18| 在线观看网站黄不卡| 国产精品沙发午睡系列990531| 亚洲成人资源在线| 成人ar影院免费观看视频| 日韩美女主播在线视频一区二区三区| 亚洲资源在线观看| 不卡电影免费在线播放一区| 日韩三级伦理片妻子的秘密按摩| 国产精品蜜臀av| 国产精品乡下勾搭老头1| 日韩一区二区精品葵司在线| 亚洲人成7777| 国产成人在线影院 | 亚洲欧美日韩一区二区三区在线观看| 日韩电影在线看| 一区二区成人在线视频 | 91麻豆精品国产无毒不卡在线观看| 亚洲欧洲成人精品av97| 国产91精品在线观看| xfplay精品久久| 国产一区在线不卡| 久久老女人爱爱| 国产在线精品不卡| 久久精品免费在线观看| 国产精一区二区三区| 精品sm捆绑视频| 国产一区二区在线视频| 久久噜噜亚洲综合| 北条麻妃国产九九精品视频| 日韩高清一区在线| 538prom精品视频线放| 免费在线看一区| 欧美tickling挠脚心丨vk| 久久爱www久久做| 日韩欧美国产成人一区二区| 青青草97国产精品免费观看| 日韩一级二级三级精品视频| 极品少妇xxxx偷拍精品少妇| 久久这里只有精品视频网| 岛国一区二区三区| 亚洲天堂免费看| 在线精品视频小说1| 日韩精品亚洲一区| 久久综合九色综合欧美就去吻| 国产不卡视频在线播放| 一区二区三区中文字幕| 欧美巨大另类极品videosbest| 蜜臀av性久久久久蜜臀aⅴ流畅| 精品国产伦一区二区三区观看体验| 国产高清精品网站| 亚洲麻豆国产自偷在线| 日韩一区二区免费在线电影| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美一区国产二区| 国产91精品露脸国语对白| 亚洲一区二区三区四区在线免费观看 | 色婷婷精品久久二区二区蜜臀av| 亚洲国产精品久久艾草纯爱 | 中文字幕一区日韩精品欧美| 在线视频国内一区二区| 亚洲欧美色综合| 欧美狂野另类xxxxoooo| 国内精品伊人久久久久av影院 | 亚洲一区免费视频| 欧美一二区视频| 国产电影一区在线| 亚洲欧美一区二区三区国产精品 | 久久99日本精品| 亚洲人午夜精品天堂一二香蕉| 91精品一区二区三区在线观看| 国产91在线观看丝袜| 亚洲成a人v欧美综合天堂| 久久久久久久久久久黄色| 欧美综合亚洲图片综合区| 韩国欧美国产1区| 亚洲精品国产成人久久av盗摄 | 国产精品丝袜久久久久久app| 欧美日韩三级视频| 丁香桃色午夜亚洲一区二区三区| 亚洲精品亚洲人成人网| 91精品婷婷国产综合久久性色| 国产成人高清视频| 日韩高清在线观看| 久久免费看少妇高潮| 欧美日本一道本| 国产一区三区三区| 亚洲v日本v欧美v久久精品| 国产精品日日摸夜夜摸av| 精品久久久久久亚洲综合网 |