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

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

?? mainwin.cpp

?? IPmessage局域網信息
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
}

/*
	晄嵼捠抦 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);	//偐側傜偢丄嵟弶偺崁栚偵掕媊

	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);

	DWORD	pos = ::GetMessagePos();

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

	::TrackPopupMenu(hSubMenu, TPM_RIGHTBUTTON, LOWORD(pos), HIWORD(pos), 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 == TRUE)
	{
		::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 == TRUE && 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();

	msgMng->Send((ULONG)~0, htons(portNo), host_status, GetNickNameEx(), cfg->GroupNameStr);	// local network broadcast

	for (brobj=cfg->broadcastList.Top(); brobj; brobj=cfg->broadcastList.Next(brobj))
		BroadcastEntrySub(brobj->Addr(), htons(portNo), host_status);

	for (AddrObj *obj = (AddrObj *)cfg->DialUpList.TopObj(); obj != NULL; obj = (AddrObj *)cfg->DialUpList.NextObj(obj))
		BroadcastEntrySub(obj->addr, obj->portNo, host_status);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91.xcao| 日韩久久久精品| 欧美日韩国产天堂| 久久久99精品久久| 亚洲综合丝袜美腿| 国产九色sp调教91| 555www色欧美视频| 自拍偷自拍亚洲精品播放| 麻豆成人91精品二区三区| 91视频免费播放| 久久久久久**毛片大全| 日韩精品三区四区| 一本大道综合伊人精品热热| 2024国产精品视频| 日韩成人av影视| 欧美天堂一区二区三区| 中文字幕一区二区三区乱码在线| 蜜臀久久99精品久久久久宅男 | 色婷婷av一区| 久久嫩草精品久久久久| 日韩在线观看一区二区| 在线免费观看日本一区| 国产精品美女久久久久久2018 | 偷拍自拍另类欧美| 色婷婷一区二区三区四区| 国产女人水真多18毛片18精品视频| 美女一区二区视频| 欧美一卡二卡在线| 日本最新不卡在线| 在线播放中文一区| 日韩精品欧美精品| 欧美一区二区三区小说| 亚洲与欧洲av电影| 欧美日韩另类一区| 亚洲国产欧美日韩另类综合| 91福利小视频| 亚洲成av人影院| 欧美性xxxxx极品少妇| 亚洲图片一区二区| 在线成人小视频| 日韩影院免费视频| 欧美一级理论片| 美女爽到高潮91| 亚洲在线一区二区三区| 在线观看国产91| 亚洲一区二区在线免费观看视频 | 欧美一级午夜免费电影| 欧美aⅴ一区二区三区视频| 在线播放一区二区三区| 久久精品国产色蜜蜜麻豆| 欧美不卡一区二区三区四区| 激情图区综合网| 国产日韩精品一区二区三区 | 日本不卡视频在线| 欧美精品一区二区三区蜜桃视频 | 日韩电影免费在线| 欧美刺激脚交jootjob| 国产精品一区2区| 亚洲欧洲制服丝袜| 欧美一区二区日韩一区二区| 国产精品一区二区在线播放| 国产精品久久久久久久第一福利 | 亚洲综合自拍偷拍| 欧美一级艳片视频免费观看| 国产精品99久久不卡二区| 亚洲免费观看高清完整版在线观看熊| 色成人在线视频| 另类小说欧美激情| 国产精品美女视频| 3atv一区二区三区| 91免费观看国产| 日韩电影在线免费看| 五月婷婷久久综合| 国产精品丝袜在线| 69久久99精品久久久久婷婷| 国产一区二区美女| 亚洲综合清纯丝袜自拍| 精品国产乱码久久久久久久久 | 欧美色综合网站| 国产99久久精品| 日本欧美一区二区| 中文字幕一区二区三区在线不卡| 欧美精选午夜久久久乱码6080| 国产激情视频一区二区三区欧美| 一区二区三区在线播| 国产欧美在线观看一区| 欧美精品免费视频| aaa亚洲精品| 国产一区二区三区精品欧美日韩一区二区三区| 不卡高清视频专区| 狠狠色狠狠色合久久伊人| 亚洲国产综合在线| 国产精品久久久99| 欧美精品一区男女天堂| 欧美日韩免费视频| 一本大道av伊人久久综合| 国产高清精品网站| 久久精品二区亚洲w码| 亚洲一区二区五区| 亚洲欧美日韩在线| 亚洲国产精品av| 久久久久免费观看| 日韩欧美一级二级三级| 欧美一区二区三级| 欧美精品在线视频| 欧美日韩国产一区二区三区地区| 91丝袜国产在线播放| av一二三不卡影片| 国产99一区视频免费| 国产91丝袜在线播放九色| 国产一区在线看| 国产主播一区二区三区| 欧美一区二区三区日韩| 欧美色涩在线第一页| 欧美伊人久久久久久久久影院 | 国产精品久久久久久户外露出 | 国产一区二区三区在线观看免费| 日韩精品欧美精品| 日本免费新一区视频 | 亚洲人成在线观看一区二区| 久久久久97国产精华液好用吗| 久久精品亚洲麻豆av一区二区| 欧美日韩国产成人在线免费| 欧美精品亚洲二区| 欧美精品黑人性xxxx| 日韩女优av电影| 久久免费精品国产久精品久久久久| 久久综合av免费| 久久久精品一品道一区| 国产精品网站在线播放| 亚洲人妖av一区二区| 一区二区在线看| 石原莉奈在线亚洲二区| 欧美aaa在线| 国产91丝袜在线观看| 99久久精品国产网站| 欧美天天综合网| 日韩欧美精品三级| 日本一区二区视频在线| 亚洲少妇屁股交4| 丝袜亚洲另类欧美| 国内精品写真在线观看| 国产宾馆实践打屁股91| 色综合久久九月婷婷色综合| 欧美日韩在线三区| 精品成人a区在线观看| 国产精品乱子久久久久| 一区二区三区在线视频观看 | 国产成人综合视频| 91在线精品一区二区三区| 欧美性猛交xxxx黑人交| 日韩欧美一级二级| 综合色中文字幕| 日韩高清在线不卡| 成人一区在线观看| 51精品国自产在线| 国产欧美日韩精品a在线观看| 一区二区三区四区在线播放| 免费成人av在线播放| 国产成人av一区二区三区在线| 欧美少妇一区二区| 国产欧美日韩不卡免费| 日韩高清中文字幕一区| 成人午夜碰碰视频| 日韩一区二区三区高清免费看看| 国产精品女同一区二区三区| 日韩精品免费视频人成| 丁香另类激情小说| 欧美一区二区三区在线| 一区二区三区日韩精品| 国产精品一区专区| 欧美福利视频一区| 亚洲女人的天堂| av在线这里只有精品| 色综合天天综合色综合av| 理论片日本一区| 美女尤物国产一区| 99视频一区二区三区| 精品久久久久久久久久久院品网| 一级精品视频在线观看宜春院 | 欧美色视频一区| 国产精品视频九色porn| 韩国理伦片一区二区三区在线播放| 欧美亚洲国产一区二区三区| 国产日韩欧美精品电影三级在线| 奇米在线7777在线精品| 欧美性一级生活| 亚洲摸摸操操av| 成人av在线资源网站| 欧美极品aⅴ影院| 久久99精品国产.久久久久 | 91久久国产综合久久| 国产精品白丝在线| 成人av综合一区| 中文字幕一区二区在线观看| 国产精品白丝jk白祙喷水网站| 精品动漫一区二区三区在线观看| 男女男精品视频网| 欧美xxxx老人做受| 精品亚洲成a人在线观看|