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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? privateframe.cpp

?? dc++(一個曾經(jīng)大量使用的p2p)的源代碼,dc++,開源的p2p源代碼
?? CPP
字號:
/* 
 * Copyright (C) 2001-2003 Jacek Sieka, j_s@telia.com
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 */

#include "stdafx.h"
#include "../client/DCPlusPlus.h"
#include "Resource.h"

#include "PrivateFrame.h"
#include "SearchFrm.h"

#include "../client/Client.h"
#include "../client/ClientManager.h"
#include "../client/Util.h"
#include "../client/LogManager.h"
#include "../client/UploadManager.h"
#include "../client/ShareManager.h"
#include "../client/HubManager.h"

CriticalSection PrivateFrame::cs;
PrivateFrame::FrameMap PrivateFrame::frames;

LRESULT PrivateFrame::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
{
	CreateSimpleStatusBar(ATL_IDS_IDLEMESSAGE, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | SBARS_SIZEGRIP);
	ctrlStatus.Attach(m_hWndStatusBar);
	
	ctrlClient.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 
		WS_VSCROLL | ES_AUTOVSCROLL | ES_MULTILINE | ES_NOHIDESEL | ES_READONLY, WS_EX_CLIENTEDGE);
	
	ctrlClient.FmtLines(TRUE);
	ctrlClient.LimitText(0);
	ctrlClient.SetFont(WinUtil::font);
	ctrlMessage.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 
		ES_AUTOHSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, WS_EX_CLIENTEDGE);
	
	ctrlMessageContainer.SubclassWindow(ctrlMessage.m_hWnd);
	
	ctrlMessage.SetFont(WinUtil::font);

	PostMessage(WM_SPEAKER, USER_UPDATED);
	created = true;

	ClientManager::getInstance()->addListener(this);

	bHandled = FALSE;
	return 1;
}

void PrivateFrame::gotMessage(const User::Ptr& aUser, const string& aMessage, HWND aParent, FlatTabCtrl* aTab) {
	PrivateFrame* p = NULL;
	Lock l(cs);
	FrameIter i = frames.find(aUser);
	if(i == frames.end()) {
		bool found = false;
		for(i = frames.begin(); i != frames.end(); ++i) {
			if( (!i->first->isOnline()) && 
				(i->first->getNick() == aUser->getNick()) &&
				(i->first->getLastHubIp() == aUser->getLastHubIp()) ) {
				
				found = true;
				p = i->second;
				frames.erase(i);
				frames[aUser] = p;
				p->setUser(aUser);
				p->addLine(aMessage);
				if(BOOLSETTING(PRIVATE_MESSAGE_BEEP)) {
					MessageBeep(MB_OK);
				}
				break;
			}
		}
		if(!found) {
			p = new PrivateFrame(aUser, aParent);
			frames[aUser] = p;
			p->setTab(aTab);
			p->addLine(aMessage);
			if(Util::getAway()) {
				// if no_awaymsg_to_bots is set, and aUser has an empty connection type (i.e. probably is a bot), then don't send
				if(!(BOOLSETTING(NO_AWAYMSG_TO_BOTS) && aUser->getConnection().empty()))
					p->sendMessage(Util::getAwayMessage());
			}

			if(BOOLSETTING(PRIVATE_MESSAGE_BEEP) || BOOLSETTING(PRIVATE_MESSAGE_BEEP_OPEN)) {
				MessageBeep(MB_OK);
			}
		}
	} else {
		if(BOOLSETTING(PRIVATE_MESSAGE_BEEP)) {
			MessageBeep(MB_OK);
		}
		i->second->addLine(aMessage);
	}
}

void PrivateFrame::openWindow(const User::Ptr& aUser, HWND aParent, FlatTabCtrl* aTab) {
	PrivateFrame* p = NULL;
	Lock l(cs);
	FrameIter i = frames.find(aUser);
	if(i == frames.end()) {
		p = new PrivateFrame(aUser, aParent);
		frames[aUser] = p;
		p->setTab(aTab);
		p->CreateEx(aParent);
	} else {
		i->second->MDIActivate(i->second->m_hWnd);
	}
}

LRESULT PrivateFrame::onChar(UINT uMsg, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled) {
	switch(wParam) {
	case VK_RETURN:
		if( (GetKeyState(VK_SHIFT) & 0x8000) || 
			(GetKeyState(VK_CONTROL) & 0x8000) || 
			(GetKeyState(VK_MENU) & 0x8000) ) {
			bHandled = FALSE;
		} else {
			if(uMsg == WM_KEYDOWN) {
				onEnter();
			}
		}
		break;
	default:
		bHandled = FALSE;
	}
	return 0;
}

void PrivateFrame::onEnter()
{
	char* message;
	bool resetText = true;

	if(ctrlMessage.GetWindowTextLength() > 0) {
		message = new char[ctrlMessage.GetWindowTextLength()+1];
		ctrlMessage.GetWindowText(message, ctrlMessage.GetWindowTextLength()+1);
		string s(message, ctrlMessage.GetWindowTextLength());
		delete message;

		// Process special commands
		if(s[0] == '/') {
			string param;
			string message;
			string status;
			if(WinUtil::checkCommand(m_hWndMDIClient, s, param, message, status)) {
				if(!message.empty()) {
					sendMessage(message);
				}
				if(!status.empty()) {
					addClientLine(status);
				}
			} else if(Util::stricmp(s.c_str(), "clear") == 0) {
				ctrlClient.SetWindowText("");
			} else if(Util::stricmp(s.c_str(), "grant") == 0) {
				UploadManager::getInstance()->reserveSlot(getUser());
				addClientLine(STRING(SLOT_GRANTED));
			} else if(Util::stricmp(s.c_str(), "close") == 0) {
				PostMessage(WM_CLOSE);
			} else if((Util::stricmp(s.c_str(), "favorite") == 0) || (Util::stricmp(s.c_str(), "fav") == 0)) {
				HubManager::getInstance()->addFavoriteUser(getUser());
				addLine(STRING(FAVORITE_USER_ADDED));
			} else if(Util::stricmp(s.c_str(), "help") == 0) {
				addLine("*** " + WinUtil::commands + ", /clear, /grant, /close, /favorite");
			}
		} else {
			if(user->isOnline()) {
				sendMessage(s);
			} else {
				ctrlStatus.SetText(0, CSTRING(USER_WENT_OFFLINE));
				resetText = false;
			}
		}
		if(resetText)
			ctrlMessage.SetWindowText("");
	} 
}

LRESULT PrivateFrame::onClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) {
	if(!closed) {
		ClientManager::getInstance()->removeListener(this);

		closed = true;
		PostMessage(WM_CLOSE);
		return 0;
	} else {
		Lock l(cs);
		frames.erase(user);

		MDIDestroy(m_hWnd);
		return 0;
	}
}

void PrivateFrame::addLine(const string& aLine) {
	if(!created) {
		CreateEx(parent);
	}

	if(BOOLSETTING(LOG_PRIVATE_CHAT)) {
		StringMap params;
		params["message"] = aLine;
		LOG(user->getNick(), Util::formatParams(SETTING(LOG_FORMAT_PRIVATE_CHAT), params));
	}

	if(BOOLSETTING(TIME_STAMPS)) {
		ctrlClient.AppendText(("\r\n[" + Util::getShortTimeString() + "] " + aLine).c_str());
		
	} else {
		ctrlClient.AppendText(("\r\n" + aLine).c_str());
	}
	addClientLine("Last change: " + Util::getTimeString());
	setDirty();
}

void PrivateFrame::UpdateLayout(BOOL bResizeBars /* = TRUE */) {
	RECT rect;
	GetClientRect(&rect);
	// position bars and offset their dimensions
	UpdateBarsPosition(rect, bResizeBars);
	
	if(ctrlStatus.IsWindow()) {
		CRect sr;
		int w[1];
		ctrlStatus.GetClientRect(sr);
		
		w[0] = sr.right - 16;

		ctrlStatus.SetParts(1, w);
	}
	
	int h = WinUtil::fontHeight + 4;

	CRect rc = rect;
	rc.bottom -= h + 10;
	ctrlClient.MoveWindow(rc);
	
	rc = rect;
	rc.bottom -= 2;
	rc.top = rc.bottom - h - 5;
	rc.left +=2;
	rc.right -=2;
	ctrlMessage.MoveWindow(rc);
	
}

// ClientManagerListener
void PrivateFrame::onAction(ClientManagerListener::Types type, const User::Ptr& aUser) throw() {
	if(type == ClientManagerListener::USER_UPDATED && aUser == user) {
		PostMessage(WM_SPEAKER, USER_UPDATED);
	}
}

/**
 * @file
 * $Id: PrivateFrame.cpp,v 1.14 2003/07/15 14:53:12 arnetheduck Exp $
 */


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91黄视频在线观看| 国产综合色在线视频区| 91女人视频在线观看| 久久久久久**毛片大全| 国产精品一区二区黑丝| 久久精品亚洲精品国产欧美kt∨| 国产一区亚洲一区| 中文字幕欧美日韩一区| 99久久精品国产一区二区三区| 国产精品久久久久影视| 91国偷自产一区二区开放时间 | 亚洲精品欧美专区| 色婷婷久久综合| 水蜜桃久久夜色精品一区的特点| 3atv一区二区三区| 极品尤物av久久免费看| 中文字幕在线一区| 欧美日韩三级一区| 捆绑变态av一区二区三区| 久久久精品日韩欧美| 色哟哟国产精品| 男男成人高潮片免费网站| 国产拍揄自揄精品视频麻豆| 色爱区综合激月婷婷| 热久久国产精品| 日本一区二区三区四区| 欧美三级午夜理伦三级中视频| 久久精品国产第一区二区三区| 国产精品全国免费观看高清| 欧洲人成人精品| 国产一区二区三区黄视频| 中文字幕一区二区三区色视频| 欧美在线视频不卡| 国产乱人伦偷精品视频免下载 | 亚洲h在线观看| 精品国产区一区| 日本精品裸体写真集在线观看 | 一区二区不卡在线播放| 26uuu欧美| 欧美日韩亚州综合| 成人免费视频国产在线观看| 五月婷婷久久综合| 亚洲人123区| 久久综合九色综合久久久精品综合 | 欧美色视频在线观看| 国产成人精品亚洲日本在线桃色| 亚洲国产成人91porn| 国产欧美精品一区aⅴ影院| 欧美日韩一区视频| 成人亚洲一区二区一| 久久99精品久久久| 亚洲成人精品一区二区| 国产精品久久久久久户外露出 | 欧美va亚洲va国产综合| 在线视频国内一区二区| 国产a久久麻豆| 蜜臀av性久久久久蜜臀av麻豆| 一区二区三区中文在线观看| 国产亚洲欧美一级| 日韩午夜激情av| 欧美日韩不卡在线| 日本韩国精品在线| 99在线精品视频| 高清在线成人网| 国内精品第一页| 久久精品99国产国产精| 日本中文字幕一区二区有限公司| 亚洲欧美激情在线| 亚洲视频在线观看一区| 中文字幕在线不卡一区| 国产欧美视频一区二区| 欧美激情中文字幕| 国产欧美一区二区三区在线老狼 | 国产伦精品一区二区三区视频青涩 | 精品福利av导航| 日韩一级免费观看| 日韩欧美高清一区| 日韩欧美一级片| 日韩一区二区在线播放| 日韩三级视频在线看| 日韩欧美国产系列| 久久夜色精品国产欧美乱极品| 精品久久免费看| 久久伊99综合婷婷久久伊| 久久久久久久网| 国产精品久久久久久久裸模| 国产精品久久看| 亚洲欧美偷拍三级| 亚洲国产精品一区二区www在线| 亚洲成人tv网| 免费在线欧美视频| 国产一区二区在线电影| 国产成人免费9x9x人网站视频| 成人精品高清在线| 色偷偷88欧美精品久久久| 欧美在线观看一区| 91精品久久久久久蜜臀| 久久精品夜夜夜夜久久| 国产精品家庭影院| 五月综合激情网| 国产一区二区福利视频| 99久久久久久| 9191久久久久久久久久久| 337p粉嫩大胆噜噜噜噜噜91av | 欧美电视剧免费全集观看| 久久综合中文字幕| 亚洲天堂福利av| 婷婷丁香久久五月婷婷| 精品一区二区三区视频在线观看| 不卡一区二区中文字幕| 欧美疯狂做受xxxx富婆| 久久综合给合久久狠狠狠97色69| 亚洲视频小说图片| 亚洲第一福利一区| 国产成都精品91一区二区三| 欧美在线综合视频| 久久这里只有精品6| 亚洲一区欧美一区| 国产乱码字幕精品高清av| 欧美性生交片4| 国产夜色精品一区二区av| 亚洲一区自拍偷拍| 国产伦精品一区二区三区在线观看 | 亚洲欧美经典视频| 九色综合狠狠综合久久| 91成人免费网站| 欧美激情一区二区三区在线| 日本特黄久久久高潮| 99国产精品久久久| 国产亚洲综合av| 日韩高清不卡一区| 91蝌蚪porny| 久久色在线视频| 日本成人在线看| 在线观看亚洲a| 中文字幕av在线一区二区三区| 日本中文字幕一区二区有限公司| 色先锋久久av资源部| 国产三级久久久| 久久国产精品一区二区| 欧美视频你懂的| 国产精品天天看| 国产综合久久久久久鬼色| 欧美男人的天堂一二区| 综合av第一页| 国产福利一区在线观看| 欧美videos大乳护士334| 亚洲午夜在线电影| 91视频.com| 中文字幕在线不卡一区二区三区| 国产伦精品一区二区三区视频青涩| 91精品国产一区二区三区蜜臀| 亚洲一区二区三区在线| 色一情一伦一子一伦一区| 中文字幕一区二区三区蜜月| 风流少妇一区二区| 亚洲精品一区二区三区福利| 久久精品久久精品| 日韩三级视频在线看| 免费成人av在线播放| 337p亚洲精品色噜噜噜| 日韩综合一区二区| 欧美一区日韩一区| 日本中文一区二区三区| 日韩一区二区三区高清免费看看 | 欧美成人bangbros| 麻豆精品在线播放| 久久综合久久鬼色| 国产成人aaa| 国产精品电影院| 91免费版在线看| 亚洲伦在线观看| 欧美最新大片在线看 | 欧美一区二区三区喷汁尤物| 日本va欧美va精品| 欧美xingq一区二区| 国产在线国偷精品免费看| 中文字幕精品一区二区精品绿巨人| 成人h精品动漫一区二区三区| 中文字幕亚洲在| 欧美中文字幕一区二区三区 | 亚洲精品在线免费观看视频| 久久99精品久久久久久动态图| 精品日产卡一卡二卡麻豆| 国产一区二区视频在线| 欧美激情一区二区三区在线| 99re8在线精品视频免费播放| 亚洲精品自拍动漫在线| 欧美日韩综合在线免费观看| 琪琪久久久久日韩精品| 精品国产凹凸成av人导航| 国产成人无遮挡在线视频| 中文字幕亚洲一区二区av在线| 欧美制服丝袜第一页| 久久精品国产免费| 国产精品久久久久久久久久免费看| 在线精品视频一区二区三四| 日本系列欧美系列| 中文字幕av一区二区三区免费看 | 国产美女久久久久|