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

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

?? mainwin.cpp

?? 飛鴿傳書的代碼 是在LINUX平臺上的 好DD哦
?? CPP
?? 第 1 頁 / 共 5 頁
字號:

/*
	晄嵼捠抦 Information 梫媮 Packet庴怣張棟
*/
void TMainWin::MsgGetAbsenceInfo(MsgBuf *msg)
{
	msgMng->Send(&msg->hostSub, IPMSG_SENDABSENCEINFO, cfg->AbsenceCheck ? cfg->AbsenceStr[cfg->AbsenceChoice] : NOTABSENCE_MSGSTR);
}

/*
	晄嵼捠抦 Information 捠抦 Packet庴怣張棟
*/
void TMainWin::MsgSendAbsenceInfo(MsgBuf *msg)
{
	MsgInfoSub(msg);
}

/*
	揧晅僼傽僀儖攋婞捠抦 Packet庴怣張棟
*/
void TMainWin::MsgReleaseFiles(MsgBuf *msg)
{
	int	packet_no = atoi(msg->msgBuf);

	shareMng->EndHostShare(packet_no, &msg->hostSub);
}

/*
	憲怣Dialog惗惉丅偨偩偟丄摨堦偺寎寕憲怣Dialog偑奐偄偰偄傞応崌偼丄
	偦偺Dialog傪 Active偵偡傞偺傒丅
*/
BOOL TMainWin::SendDlgOpen(HWND hRecvWnd, MsgBuf *msg)
{
	TSendDlg *sendDlg;

	if (hRecvWnd)
	{
		for (sendDlg = (TSendDlg *)sendList.TopObj(); sendDlg != NULL; sendDlg = (TSendDlg *)sendList.NextObj(sendDlg))
			if (sendDlg->GetRecvWnd() == hRecvWnd && sendDlg->IsSending() != TRUE)
				return	ActiveDlg(sendDlg), TRUE;
	}

	if ((sendDlg = new TSendDlg(msgMng, shareMng, &hosts, cfg, logmng, hRecvWnd, msg)) == NULL)
		return	FALSE;

	sendList.AddObj(sendDlg);
	sendDlg->Create(), sendDlg->Show();
	ControlIME(sendDlg, TRUE);

// test
	if (hosts.HostCnt() == 0 && cfg->ListGet == FALSE)
		BroadcastEntrySub(inet_addr("127.0.0.1"), htons(portNo), IPMSG_BR_ENTRY);

	return	TRUE;
}

/*
	憲怣Dialog Hide捠抦(WM_SENDDLG_HIDE)張棟丅
	揱偊偰偒偨憲怣Dialog偵懳墳偡傞丄庴怣Dialog傪攋婞
*/
void TMainWin::SendDlgHide(TSendDlg *sendDlg)
{
	ControlIME(sendDlg, FALSE);

	if (sendDlg->GetRecvWnd() && cfg->NoErase == FALSE)
	{
		TRecvDlg *recvDlg;

		for (recvDlg = (TRecvDlg *)recvList.TopObj(); recvDlg != NULL; recvDlg = (TRecvDlg *)recvList.NextObj(recvDlg))
		{
			if (recvDlg->hWnd == sendDlg->GetRecvWnd() && recvDlg->IsClosable())
			{
				recvDlg->EvCommand(0, IDCANCEL, 0);
				break;
			}
		}
	}
}

/*
	憲怣Dialog Exit捠抦(WM_SENDDLG_EXIT)張棟丅
	揱偊偰偒偨憲怣Dialog 偍傛傃懳墳偡傞庴怣Dialog偺攋婞
*/
void TMainWin::SendDlgExit(TSendDlg *sendDlg)
{
	if (sendDlg->IsSending() == FALSE)	// 憲怣拞偺応崌偼 HIDE 偱幚峴嵪傒
		ControlIME(sendDlg, FALSE);
	sendList.DelObj(sendDlg);
	delete sendDlg;
}

/*
	庴怣Dialog傪惗惉
*/
BOOL TMainWin::RecvDlgOpen(MsgBuf *msg)
{
	TRecvDlg *recvDlg;

	if ((recvDlg = new TRecvDlg(msgMng, msg, &hosts, cfg, logmng)) == NULL)
		return	FALSE;
	if (recvDlg->Status() == FALSE)		// 埫崋暥偺暅崋偵幐攕偟偨
	{
		delete recvDlg;
		return	FALSE;
	}

	recvList.AddObj(recvDlg);

	if (cfg->NoBeep == FALSE)
	{
		char	*soundFile = cfg->SoundFile;
#if 0
		Host	*host = hosts.GetHostByAddr(&msg->hostSub);

		if (host)
		{
			int priorityLevel = (host->priority - DEFAULT_PRIORITY) / PRIORITY_OFFSET;

			if (priorityLevel >= 0 && priorityLevel < cfg->PriorityMax)
			{
				if (cfg->PrioritySound[priorityLevel])
					soundFile = cfg->PrioritySound[priorityLevel];
			}
		}
#endif
		if (*soundFile == '\0' || PlaySound(soundFile, 0, SND_FILENAME|SND_ASYNC) != TRUE)
			if (MessageBeep(MB_OK) != TRUE)
				MessageBeep((UINT)~0);
	}

	if (cfg->NoPopupCheck || (cfg->AbsenceNonPopup && cfg->AbsenceCheck))
	{
		if (reverseTimerStatus == 0)
		{
			ReverseIcon(TRUE);
			if (::SetTimer(hWnd, IPMSG_REVERSEICON, IPMSG_TIMERINTERVAL, NULL))
				reverseTimerStatus = IPMSG_REVERSEICON;
		}
	}
	else {
		recvDlg->Create();
		recvDlg->Show();
		recvDlg->SetForceForegroundWindow();
	}

	return	TRUE;
}

/*
	庴怣Dialog傪攋婞
*/
void TMainWin::RecvDlgExit(TRecvDlg *recvDlg)
{
	recvList.DelObj(recvDlg);
	delete recvDlg;
}

/*
	妋擣Dialog傪攋婞
*/
void TMainWin::MsgDlgExit(TMsgDlg *msgDlg)
{
	msgList.DelObj(msgDlg);
	delete msgDlg;
}

/*
	Setup/About/Absence Dialog傪惗惉
*/
void TMainWin::MiscDlgOpen(TDlg *dlg)
{
	if (dlg->hWnd == NULL)
		dlg->Create(), dlg->Show();
	else
		ActiveDlg(dlg);
}

/*
	TaskTray偵巜掕icon傪搊榐
*/
BOOL TMainWin::TaskBar(int nimMode, HICON hSetIcon, LPCSTR tip)
{
	NOTIFYICONDATA	tn;

	memset(&tn, 0, sizeof(tn));
	tn.cbSize = sizeof(tn);
	tn.hWnd = hWnd;
	tn.uID = IPMSG_DEFAULT_PORT;		// test
	tn.uFlags = NIF_MESSAGE|(hSetIcon ? NIF_ICON : 0)|(tip ? NIF_TIP : 0);
	tn.uCallbackMessage = WM_IPMSG_NOTIFY;
	tn.hIcon = hSetIcon;
	if (tip)
		strcpy(tn.szTip, tip);

	return	::Shell_NotifyIcon(nimMode, &tn);
}

/*
	MainWindow or TaskTray Icon 傪 click偟偨帪偺 Popup Menu惗惉
*/
void TMainWin::Popup(UINT resId)
{
	HMENU	hMenu = ::LoadMenu(TApp::hI, (LPCSTR)resId);
	HMENU	hSubMenu = ::GetSubMenu(hMenu, 0);	//偐側傜偢丄嵟弶偺崁栚偵掕媊
	DWORD	val = ::GetMessagePos();
	POINTS	pos = MAKEPOINTS(val);

	if (hMenu == NULL || hSubMenu == NULL)
		return;

	ShareCntInfo	info;
	shareMng->GetShareCntInfo(&info);

	char	buf[MAX_LISTBUF] = DOWNLOAD_MSGSTR;
	if (info.packetCnt)
		wsprintf(buf + strlen(buf), "(%d/%d)", info.fileCnt, info.transferCnt);
	::InsertMenu(hSubMenu, 0, MF_BYPOSITION|MF_SEPARATOR, NULL, NULL);
	::InsertMenu(hSubMenu, 0, MF_BYPOSITION|MF_STRING, MENU_SHARE, buf);

	AddAbsenceMenu(hSubMenu, 2);

	SetForegroundWindow();		//偲偭偰傕戝帠両

	::TrackPopupMenu(hSubMenu, TPM_RIGHTBUTTON, pos.x, pos.y, 0, hWnd, NULL);

	::DestroyMenu(hMenu);
}

/*
	NonPopup忬懺偵側偭偰偄偨庴怣Dialog偑偁傟偽丄弌尰偝偣傞
*/
BOOL TMainWin::PopupCheck(void)
{
	BOOL		result = FALSE; 
	TRecvDlg	*recvDlg;

	for (recvDlg = (TRecvDlg *)recvList.TopObj(); recvDlg != NULL; recvDlg = (TRecvDlg *)recvList.NextObj(recvDlg))
	{
		if (recvDlg->hWnd == 0)
		{
			recvDlg->Create(), recvDlg->Show();
			result = TRUE;
		}
	}

	if (result)
	{
		::KillTimer(hWnd, IPMSG_REVERSEICON);
		reverseTimerStatus = 0;
		SetIcon(cfg->AbsenceCheck == FALSE ? hMainIcon : hRevIcon);
	}

	return	result;
}

/*
	慡Window傪慜柺偵傕偭偰偔傞丅hide == TRUE偺応崌丄慡Window傪 hide偵
*/
void TMainWin::ActiveChildWindow(BOOL active)
{
	ActiveDlg(aboutDlg, active);
	ActiveDlg(setupDlg, active);
	ActiveDlg(absenceDlg, active);
	ActiveDlg(shareStatDlg, active);
	ActiveListDlg(&recvList, active);
	ActiveListDlg(&sendList, active);
	ActiveListDlg(&msgList, active);

	if (active == FALSE)
		SetForegroundWindow();
}

/*
	HostData偺copy
*/
inline void TMainWin::SetHostData(Host *destHost, HostSub *hostSub, ULONG command, time_t update_time, char *nickName, char *groupName, int priority)
{
	destHost->hostStatus = GET_OPT(command);
	destHost->hostSub = *hostSub;
	destHost->updateTime = update_time;
	destHost->priority = priority;
	strncpyz(destHost->nickName, nickName, sizeof(destHost->nickName));
	strncpyz(destHost->groupName, groupName, sizeof(destHost->groupName));
}

/*
	Host捛壛張棟
*/
void TMainWin::AddHost(HostSub *hostSub, ULONG command, char *nickName, char *groupName)
{
	Host	*host, *tmp_host, *priorityHost;
	time_t	now_time = Time();
	int		priority = DEFAULT_PRIORITY;

	if (GET_MODE(command) == IPMSG_BR_ENTRY && (command & IPMSG_DIALUPOPT) && !IsSameHost(hostSub, msgMng->GetLocalHost()))
	{
		for (AddrObj *obj = (AddrObj *)cfg->DialUpList.TopObj(); obj != NULL; obj = (AddrObj *)cfg->DialUpList.NextObj(obj))
			if (obj->addr == hostSub->addr && obj->portNo == hostSub->portNo)
				break;

		if (obj == NULL)
		{
			obj = new AddrObj;
			obj->addr	= hostSub->addr;
			obj->portNo	= hostSub->portNo;
			cfg->DialUpList.AddObj(obj);
		}
	}

	if ((priorityHost = cfg->priorityHosts.GetHostByName(hostSub)) != NULL)
	{
		priority = priorityHost->priority;
//		command |= priorityHost->hostStatus & IPMSG_ENCRYPTOPT;
	}

	if ((host = hosts.GetHostByName(hostSub)) != NULL)
	{
		if (host->hostSub.addr != hostSub->addr || host->hostSub.portNo != hostSub->portNo)
		{
			if ((tmp_host = hosts.GetHostByAddr(hostSub)) != NULL)
			{
				for (TSendDlg *sendDlg = (TSendDlg *)sendList.TopObj(); sendDlg != NULL; sendDlg = (TSendDlg *)sendList.NextObj(sendDlg))
					sendDlg->DelHost(tmp_host);
				hosts.DelHost(tmp_host);
				if (tmp_host->RefCnt() == 0)
					delete tmp_host;
			}
			hosts.DelHost(host);
			host->hostSub.addr = hostSub->addr;
			host->hostSub.portNo = hostSub->portNo;
			hosts.AddHost(host);
		}
		if (((command ^ host->hostStatus) & (IPMSG_ABSENCEOPT|IPMSG_FILEATTACHOPT|IPMSG_ENCRYPTOPT)) || strcmp(host->nickName, nickName) || strcmp(host->groupName, groupName))
		{
			SetHostData(host, hostSub, command, now_time, nickName, groupName, priority);
			for (TSendDlg *sendDlg = (TSendDlg *)sendList.TopObj(); sendDlg != NULL; sendDlg = (TSendDlg *)sendList.NextObj(sendDlg))
				sendDlg->ModifyHost(host);
		}
		else {
			host->hostStatus = GET_OPT(command);
			host->updateTime = now_time;
		}
		return;
	}

	if ((host = hosts.GetHostByAddr(hostSub)) != NULL)
	{
		for (TSendDlg *sendDlg = (TSendDlg *)sendList.TopObj(); sendDlg != NULL; sendDlg = (TSendDlg *)sendList.NextObj(sendDlg))
			sendDlg->DelHost(host);
		hosts.DelHost(host);
		if (host->RefCnt() == 0)
			delete host;
	}

	if ((host = priorityHost) == NULL)
		host = new Host;

	SetHostData(host, hostSub, command, now_time, nickName, groupName, priority);
	hosts.AddHost(host);
//	if (priorityHost == NULL)
//		cfg->priorityHosts.AddHost(host);

	SetCaption();

	for (TSendDlg *sendDlg = (TSendDlg *)sendList.TopObj(); sendDlg != NULL; sendDlg = (TSendDlg *)sendList.NextObj(sendDlg))
		sendDlg->AddHost(host);
}

/*
	慡Host偺嶍彍張棟
*/
void TMainWin::DelAllHost(void)
{
	for (TSendDlg *sendDlg = (TSendDlg *)sendList.TopObj(); sendDlg != NULL; sendDlg = (TSendDlg *)sendList.NextObj(sendDlg))
		sendDlg->DelAllHost();

	while (hosts.HostCnt() > 0)
		DelHostSub(hosts.GetHost(0));
}

/*
	摿掕Host偺嶍彍張棟
*/
void TMainWin::DelHost(HostSub *hostSub)
{
	Host *host;

	if ((host = hosts.GetHostByAddr(hostSub)) != NULL)
		DelHostSub(host);
}

/*
	摿掕Host偺嶍彍張棟Sub
*/
void TMainWin::DelHostSub(Host *host)
{
	for (TSendDlg *sendDlg = (TSendDlg *)sendList.TopObj(); sendDlg != NULL; sendDlg = (TSendDlg *)sendList.NextObj(sendDlg))
		sendDlg->DelHost(host);

	for (AddrObj *obj = (AddrObj *)cfg->DialUpList.TopObj(); obj != NULL; obj = (AddrObj *)cfg->DialUpList.NextObj(obj))
	{
		if (obj->addr == host->hostSub.addr && obj->portNo == host->hostSub.portNo)
		{
			cfg->DialUpList.DelObj(obj);
			delete obj;
			break;
		}
	}
	hosts.DelHost(host);
	if (host->RefCnt() == 0)
		delete host;
	else if (host->pubKey.Key())
		host->pubKey.UnSet();
	SetCaption();
}

/*
	峏怴Button梡張棟丅強桳HostList偺嶍彍丄偍傛傃嵞Entry Packet憲弌丅
	側偍丄unRemoveFlg == TRUE偺応崌偼丄嶍彍張棟傪峴傢側偄
*/
void TMainWin::RefreshHost(BOOL unRemoveFlg)
{
	time_t	now_time = Time();

	if (cfg->ListGet && entryTimerStatus != 0 || refreshStartTime + IPMSG_ENTRYMINSEC >= now_time)
		return;

	if (unRemoveFlg != TRUE)
	{
		if (cfg->UpdateTime == 0 || refreshStartTime + cfg->UpdateTime < now_time) {
			DelAllHost();
		}
		else {
			for (int cnt=0; cnt < hosts.HostCnt(); )
			{
				if (hosts.GetHost(cnt)->updateTime + cfg->UpdateTime < now_time)
					DelHostSub(hosts.GetHost(cnt));
				else
					cnt++;
			}
		}
	}
	refreshStartTime = now_time;
	EntryHost();
}

/*
	Main Window or TaskTray梡 Caption偺愝掕
*/
void TMainWin::SetCaption(void)
{
	char	buf[MAX_LISTBUF];

	wsprintf(buf, "IPMsg(%d)", hosts.HostCnt());

	if (IsNewShell())
		TaskBar(NIM_MODIFY, NULL, buf);
	else
		::SetWindowText(hWnd, buf);
}

/*
	IPMSG_ENTRY/IPMSG_EXIT/IPMSG_ABSENCE僷働僢僩憲弌
*/
void TMainWin::BroadcastEntry(ULONG mode)
{
	for (TBroadcastObj *brobj=cfg->broadcastList.Top(); brobj; brobj=cfg->broadcastList.Next(brobj))
		BroadcastEntrySub(brobj->Addr(cfg->ResolveOpt & RS_REALTIME), htons(portNo), IPMSG_NOOPERATION);
	BroadcastEntrySub((ULONG)~0, htons(portNo), IPMSG_NOOPERATION);

	this->Sleep(cfg->DelayTime);

	UINT host_status = mode | HostStatus();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产不卡一区二区三区| 国产在线精品一区二区不卡了 | 精品欧美一区二区在线观看 | 三级不卡在线观看| 精品久久久久香蕉网| 日韩一区二区三区精品视频| 国产不卡在线一区| 亚洲午夜精品网| 国产精品色在线| 欧美不卡视频一区| 精品日韩一区二区| 国产精品五月天| 亚洲摸摸操操av| 久久综合给合久久狠狠狠97色69| 色丁香久综合在线久综合在线观看| 日本一不卡视频| 一区二区三区视频在线观看| 国产视频一区二区在线观看| 日韩色在线观看| 久久久久久久久伊人| 91精品国产免费| 欧美日韩一区二区在线视频| 91影视在线播放| 成人在线视频一区二区| 蜜桃视频一区二区| 亚洲一二三四久久| 国产色综合久久| 国产精品免费av| 亚洲愉拍自拍另类高清精品| 免费av网站大全久久| 日韩中文字幕91| 国产精品一区二区你懂的| 裸体歌舞表演一区二区| 全国精品久久少妇| 成人av手机在线观看| 国产成人综合亚洲网站| 国产精品综合av一区二区国产馆| 成人夜色视频网站在线观看| 777奇米四色成人影色区| 欧美日韩精品三区| 91精品国产一区二区三区蜜臀 | av在线不卡网| 激情亚洲综合在线| 精品中文字幕一区二区| 九九**精品视频免费播放| 99久久精品情趣| 成人免费高清在线| 91精品欧美福利在线观看 | 福利91精品一区二区三区| 色天使色偷偷av一区二区| 99久久伊人网影院| 欧美一区二区三区不卡| 一区二区在线看| 亚洲国产精品精华液网站| 国产黄色91视频| 日韩欧美国产成人一区二区| 2014亚洲片线观看视频免费| 五月婷婷欧美视频| 韩国一区二区三区| 欧美浪妇xxxx高跟鞋交| 欧美一级欧美一级在线播放| 国产一区二三区| 欧美一级专区免费大片| 亚洲国产色一区| 色婷婷精品久久二区二区蜜臀av | 久久精品国产一区二区| 欧美精品丝袜中出| 亚洲黄色尤物视频| 97se亚洲国产综合自在线| 国产午夜精品在线观看| 久久精品国产亚洲a| 9191久久久久久久久久久| 亚洲黄色免费网站| 欧美在线观看一区| 91精品国产综合久久久蜜臀粉嫩| 亚洲精品视频在线观看免费| 色一区在线观看| 亚洲国产欧美在线| 欧美视频一区二区三区在线观看| 欧美日韩国产小视频| 亚洲一二三专区| 欧美综合亚洲图片综合区| 精品少妇一区二区三区| 亚洲精品视频在线| 欧美性视频一区二区三区| 丝袜亚洲另类丝袜在线| 在线视频国内自拍亚洲视频| 一区二区三区美女视频| 欧美日韩国产一区二区三区地区| 亚洲一区二区在线视频| 717成人午夜免费福利电影| 蜜桃一区二区三区在线| 精品99一区二区| 国产乱子伦视频一区二区三区 | 4438x亚洲最大成人网| 精一区二区三区| 国产视频一区二区三区在线观看| 99在线热播精品免费| 亚洲韩国精品一区| 欧美一区二区三区的| 国产成人午夜视频| 亚洲精品日产精品乱码不卡| 4438x亚洲最大成人网| 国产精品18久久久久久vr| 亚洲人成人一区二区在线观看 | 国产女同性恋一区二区| 麻豆国产精品官网| 国产欧美精品一区二区三区四区| 97国产精品videossex| 日韩高清中文字幕一区| 国产女人18水真多18精品一级做| 91在线国产观看| 蜜桃视频一区二区三区在线观看| 国产精品女上位| 欧美一区二区三区在线看| av在线不卡免费看| 久久疯狂做爰流白浆xx| 亚洲精品第1页| 国产三级一区二区三区| 欧美日韩精品电影| www.av亚洲| 国产真实乱偷精品视频免| 一区二区三区国产| 国产亚洲福利社区一区| 在线播放日韩导航| 99综合影院在线| 国产在线不卡一区| 亚洲小少妇裸体bbw| 中文字幕一区二| 欧洲亚洲国产日韩| 懂色av一区二区三区蜜臀| 日本网站在线观看一区二区三区| 中文子幕无线码一区tr| 99久久久国产精品| 国内精品伊人久久久久av一坑| 亚洲电影中文字幕在线观看| 中文天堂在线一区| 久久蜜桃av一区二区天堂| 欧美一区二区三区四区高清| 欧美影片第一页| 91福利区一区二区三区| 91啪在线观看| 波多野结衣中文字幕一区二区三区| 久久精品国产在热久久| 日韩av电影天堂| 亚洲成人免费视频| 国产婷婷色一区二区三区在线| 日韩欧美一级二级| 91精品国产综合久久香蕉的特点| 欧美日韩亚洲丝袜制服| 在线免费视频一区二区| 91免费看视频| 色老汉一区二区三区| 日本韩国一区二区| 欧美色图天堂网| 欧美日韩一区二区三区在线| 欧美丝袜丝交足nylons| 欧美亚男人的天堂| 欧美午夜精品久久久久久超碰| 欧美吞精做爰啪啪高潮| 欧美日韩一区二区在线观看| 7777精品伊人久久久大香线蕉 | 欧美视频在线观看一区二区| 欧美三级午夜理伦三级中视频| 91精品办公室少妇高潮对白| 色综合久久久久久久久| 欧美三级电影网站| 91精品欧美一区二区三区综合在| 日韩精品一区二区三区视频在线观看 | 久久精品国产免费看久久精品| 日本网站在线观看一区二区三区| 久久国产精品99久久久久久老狼| 国产综合久久久久影院| heyzo一本久久综合| 色婷婷国产精品| 日韩一区二区三区在线视频| 久久亚洲捆绑美女| 亚洲欧美日韩小说| 蜜臂av日日欢夜夜爽一区| 国产精品白丝av| 色综合视频在线观看| 欧美一级二级三级蜜桃| 久久先锋资源网| 欧美日韩一卡二卡三卡| 在线播放中文字幕一区| 国产又黄又大久久| 国产成人午夜视频| 欧美日韩高清一区二区三区| 9191成人精品久久| 日韩你懂的在线播放| 精品裸体舞一区二区三区| 中文字幕电影一区| 91论坛在线播放| 一区二区三区欧美日| 五月天久久比比资源色| 奇米影视在线99精品| 欧美午夜电影一区| 久久国内精品自在自线400部| 日韩欧美一二三四区| 成人app在线|