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

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

?? searchfrm.h

?? dc++(一個曾經大量使用的p2p)的源代碼,dc++,開源的p2p源代碼
?? H
字號:
/* 
 * 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.
 */

#if !defined(AFX_SEARCHFRM_H__A7078724_FD85_4F39_8463_5A08A5F45E33__INCLUDED_)
#define AFX_SEARCHFRM_H__A7078724_FD85_4F39_8463_5A08A5F45E33__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include "FlatTabCtrl.h"
#include "ExListViewCtrl.h"
#include "WinUtil.h"

#include "../client/SearchManager.h"
#include "../client/CriticalSection.h"

#define SEARCH_MESSAGE_MAP 6		// This could be any number, really...
#define SHOWUI_MESSAGE_MAP 7

class SearchFrame : public MDITabChildWindowImpl<SearchFrame, RGB(127, 127, 255)>, private SearchManagerListener
{
public:

	DECLARE_FRAME_WND_CLASS_EX("SearchFrame", IDR_SEARCH, 0, COLOR_3DFACE)

	typedef MDITabChildWindowImpl<SearchFrame, RGB(127, 127, 255)> baseClass;
	BEGIN_MSG_MAP(SearchFrame)
		MESSAGE_HANDLER(WM_CREATE, onCreate)
		MESSAGE_HANDLER(WM_SETFOCUS, onFocus)
		MESSAGE_HANDLER(WM_CONTEXTMENU, onContextMenu)
		MESSAGE_HANDLER(WM_SPEAKER, onSpeaker)
		MESSAGE_HANDLER(WM_CTLCOLOREDIT, onCtlColor)
		MESSAGE_HANDLER(WM_CTLCOLORSTATIC, onCtlColor)
		MESSAGE_HANDLER(WM_CTLCOLORLISTBOX, onCtlColor)
		MESSAGE_HANDLER(WM_CLOSE, onClose)
		NOTIFY_HANDLER(IDC_RESULTS, NM_DBLCLK, onDoubleClickResults)
		NOTIFY_HANDLER(IDC_RESULTS, LVN_COLUMNCLICK, onColumnClickResults)
		NOTIFY_HANDLER(IDC_RESULTS, LVN_KEYDOWN, onKeyDown)
		COMMAND_ID_HANDLER(IDC_DOWNLOAD, onDownload)
		COMMAND_ID_HANDLER(IDC_DOWNLOADTO, onDownloadTo)
		COMMAND_ID_HANDLER(IDC_DOWNLOADDIR, onDownloadWhole)
		COMMAND_ID_HANDLER(IDC_DOWNLOADDIRTO, onDownloadWholeTo)
		COMMAND_ID_HANDLER(IDC_GETLIST, onGetList)
		COMMAND_ID_HANDLER(IDC_KICK, onKick)
		COMMAND_ID_HANDLER(IDC_PRIVATEMESSAGE, onPrivateMessage)
		COMMAND_ID_HANDLER(IDC_ADD_TO_FAVORITES, onAddToFavorites)
		COMMAND_ID_HANDLER(IDC_REDIRECT, onRedirect)
		COMMAND_ID_HANDLER(IDC_REMOVE, onRemove)
		COMMAND_ID_HANDLER(IDC_SEARCH, onSearch)
		COMMAND_ID_HANDLER(IDC_FREESLOTS, onFreeSlots)
		COMMAND_RANGE_HANDLER(IDC_DOWNLOAD_TARGET, IDC_DOWNLOAD_TARGET + targets.size() + WinUtil::lastDirs.size(), onDownloadTarget)
		COMMAND_RANGE_HANDLER(IDC_DOWNLOAD_WHOLE_TARGET, IDC_DOWNLOAD_WHOLE_TARGET + WinUtil::lastDirs.size(), onDownloadWholeTarget)
		COMMAND_RANGE_HANDLER(IDC_USER_COMMAND, IDC_USER_COMMAND + commands, onUserCommand)
		CHAIN_MSG_MAP(baseClass)
	ALT_MSG_MAP(SEARCH_MESSAGE_MAP)
		MESSAGE_HANDLER(WM_CHAR, onChar)
		MESSAGE_HANDLER(WM_KEYDOWN, onChar)
		MESSAGE_HANDLER(WM_KEYUP, onChar)
	ALT_MSG_MAP(SHOWUI_MESSAGE_MAP)
		MESSAGE_HANDLER(BM_SETCHECK, onShowUI)
	END_MSG_MAP()

	SearchFrame() : 
	searchBoxContainer("COMBOBOX", this, SEARCH_MESSAGE_MAP),
		searchContainer("edit", this, SEARCH_MESSAGE_MAP), 
		sizeContainer("edit", this, SEARCH_MESSAGE_MAP), 
		modeContainer("COMBOBOX", this, SEARCH_MESSAGE_MAP),
		sizeModeContainer("COMBOBOX", this, SEARCH_MESSAGE_MAP),
		fileTypeContainer("COMBOBOX", this, SEARCH_MESSAGE_MAP),
		showUIContainer("BUTTON", this, SHOWUI_MESSAGE_MAP),
		slotsContainer("BUTTON", this, SEARCH_MESSAGE_MAP),
		doSearchContainer("BUTTON", this, SEARCH_MESSAGE_MAP),
		resultsContainer(WC_LISTVIEW, this, SEARCH_MESSAGE_MAP),
		lastSearch(0), initialSize(0), initialMode(SearchManager::SIZE_ATLEAST), initialType(SearchManager::TYPE_ANY),
		showUI(true), onlyFree(false), closed(false), commands(0)
	{	
		SearchManager::getInstance()->addListener(this);
	}

	virtual ~SearchFrame() {
	}
	virtual void OnFinalMessage(HWND /*hWnd*/) { delete this; }

	LRESULT onChar(UINT uMsg, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled);
	LRESULT onClose(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
	LRESULT onColumnClickResults(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/);
	LRESULT onContextMenu(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& bHandled);
	LRESULT onCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled);
	LRESULT onCtlColor(UINT uMsg, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/);
	LRESULT onDoubleClickResults(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
	LRESULT onDownloadTarget(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
	LRESULT onDownloadTo(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
	LRESULT onDownloadWholeTarget(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
	LRESULT onDownloadWholeTo(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
	LRESULT onGetList(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
	LRESULT onKick(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
	LRESULT onPrivateMessage(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
	LRESULT onAddToFavorites(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
	LRESULT onRedirect(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
	LRESULT onSpeaker(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
	LRESULT onUserCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
	
	void UpdateLayout(BOOL bResizeBars = TRUE);

	static int sortSize(LPARAM a, LPARAM b) {
		SearchResult* c = (SearchResult*)a;
		SearchResult* d = (SearchResult*)b;
		return compare(c->getSize(), d->getSize());
	}
	static int sortSlots(LPARAM a, LPARAM b) {
		SearchResult* c = (SearchResult*)a;
		SearchResult* d = (SearchResult*)b;
		if(c->getFreeSlots() == d->getFreeSlots())
			return compare(c->getSlots(), d->getSlots());
		else
			return compare(c->getFreeSlots(), d->getFreeSlots());
	}

	void removeSelected() {
		int i = -1;
		while( (i = ctrlResults.GetNextItem(-1, LVNI_SELECTED)) != -1) {
			delete (SearchResult*)ctrlResults.GetItemData(i);
			ctrlResults.DeleteItem(i);
		}
	}
	
	LRESULT onDownload(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
		downloadSelected(SETTING(DOWNLOAD_DIRECTORY));
		return 0;
	}

	LRESULT onDownloadWhole(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
		downloadWholeSelected(SETTING(DOWNLOAD_DIRECTORY));
		return 0;
	}
	
	LRESULT onRemove(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
		removeSelected();
		return 0;
	}

	LRESULT onFreeSlots(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
		onlyFree = (ctrlSlots.GetCheck() == 1);
		return 0;
	}

	LRESULT onSearch(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) {
		onEnter();
		return 0;
	}

	LRESULT onKeyDown(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/) {
		NMLVKEYDOWN* kd = (NMLVKEYDOWN*) pnmh;
		
		if(kd->wVKey == VK_DELETE) {
			removeSelected();
		} 
		return 0;
	}

	LRESULT onFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) {
		if(::IsWindow(ctrlSearch))
			ctrlSearch.SetFocus();
		return 0;
	}

	LRESULT onShowUI(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled) {
		bHandled = FALSE;
		showUI = (wParam == BST_CHECKED);
		UpdateLayout(FALSE);
		return 0;
	}

	void SearchFrame::setInitial(const string& str, LONGLONG size, SearchManager::SizeModes mode, SearchManager::TypeModes type) {
		initialString = str; initialSize = size; initialMode = mode; initialType = type;
	}
	
private:
	enum {
		COLUMN_FIRST,
		COLUMN_NICK = COLUMN_FIRST,
		COLUMN_FILENAME,
		COLUMN_TYPE,
		COLUMN_SIZE,
		COLUMN_PATH,
		COLUMN_SLOTS,
		COLUMN_CONNECTION,
		COLUMN_HUB,
		COLUMN_EXACT_SIZE,
		COLUMN_LAST
	};

	enum Images {
		IMAGE_UNKOWN,
		IMAGE_SLOW,
		IMAGE_NORMAL,
		IMAGE_FAST
	};

	enum {
		IDC_DOWNLOAD_TARGET = 5000,
		IDC_DOWNLOAD_WHOLE_TARGET = 5500,
		IDC_USER_COMMAND = 6000
	};

	string initialString;
	int64_t initialSize;
	SearchManager::SizeModes initialMode;
	SearchManager::TypeModes initialType;

	CStatusBarCtrl ctrlStatus;
	CEdit ctrlSearch;
	CComboBox ctrlSearchBox;
	CEdit ctrlSize;
	CComboBox ctrlMode;
	CComboBox ctrlSizeMode;
	CComboBox ctrlFiletype;
	CButton ctrlDoSearch;
	
	CContainedWindow searchContainer;
	CContainedWindow searchBoxContainer;
	CContainedWindow sizeContainer;
	CContainedWindow modeContainer;
	CContainedWindow sizeModeContainer;
	CContainedWindow fileTypeContainer;
	CContainedWindow slotsContainer;
	CContainedWindow showUIContainer;
	CContainedWindow doSearchContainer;
	CContainedWindow resultsContainer;
	
	CStatic searchLabel, sizeLabel, optionLabel, typeLabel;
	CButton ctrlSlots, ctrlShowUI;
	bool showUI;

	ExListViewCtrl ctrlResults;
	CMenu resultsMenu;
	CMenu opMenu;
	CMenu targetMenu;
	CMenu targetDirMenu;
	
	StringList search;
	StringList targets;
	StringList wholeTargets;

	/** Parameter map for user commands */
	StringMap ucParams;
	size_t commands;

	bool onlyFree;

	static StringList lastSearches;

	DWORD lastSearch;
	bool closed;

	static int columnIndexes[];
	static int columnSizes[];

	CriticalSection cs;

	void downloadSelected(const string& aDir); 
	void downloadWholeSelected(const string& aDir);
	void onEnter();
	void onTab(bool shift);
	
	// SearchManagerListener
	virtual void onAction(SearchManagerListener::Types type, SearchResult* sr) throw() {
		switch(type) {
		case SearchManagerListener::SEARCH_RESULT:
			onSearchResult(sr); break;
		}
	}
	
	void onSearchResult(SearchResult* aResult);
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CHILDFRM_H__A7078724_FD85_4F39_8463_5A08A5F45E33__INCLUDED_)

/**
 * @file
 * $Id: SearchFrm.h,v 1.19 2003/07/15 14:53:12 arnetheduck Exp $
 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品综合一区二区| 美国毛片一区二区| 久久精品人人做| 精品国产sm最大网站| 日韩午夜精品电影| 日韩欧美一二三区| 欧美精品一区二区三区在线| 日韩视频免费直播| 久久综合久久综合久久| 亚洲精品在线观看网站| 久久女同精品一区二区| 国产偷国产偷亚洲高清人白洁| 久久久久高清精品| 自拍偷在线精品自拍偷无码专区| 亚洲欧洲性图库| 肉肉av福利一精品导航| 麻豆精品视频在线观看视频| 国产一区二区看久久| 国产**成人网毛片九色 | 东方aⅴ免费观看久久av| 成人黄色在线看| 在线一区二区观看| 日韩欧美成人午夜| 国产视频在线观看一区二区三区| 国产精品家庭影院| 婷婷六月综合网| 懂色av一区二区在线播放| 在线免费av一区| 2019国产精品| 一区二区三区小说| 久久99精品久久久| www.66久久| 欧美一区二区二区| 中文字幕一区二区三区精华液 | 欧美日本国产视频| 久久久一区二区三区捆绑**| 一区二区三区国产豹纹内裤在线| 欧美a级一区二区| 91理论电影在线观看| 精品国产欧美一区二区| 亚洲桃色在线一区| 激情五月婷婷综合网| 色婷婷国产精品| 国产欧美日韩综合| 午夜视频在线观看一区二区| 成人午夜激情视频| 精品国产欧美一区二区| 天天色天天操综合| 91免费观看视频在线| 2020国产精品| 日韩av午夜在线观看| 91在线观看成人| 久久精品夜色噜噜亚洲aⅴ| 天堂精品中文字幕在线| 色婷婷综合久色| 欧美激情在线一区二区| 美美哒免费高清在线观看视频一区二区| 99久久精品情趣| 欧美精品一区二区三区四区| 美女性感视频久久| 欧美性受xxxx黑人xyx| 亚洲欧美日韩小说| k8久久久一区二区三区| 国产精品色呦呦| 国产一区二区调教| 欧美精品一区二区三区一线天视频| 天涯成人国产亚洲精品一区av| 色狠狠桃花综合| 亚洲乱码国产乱码精品精98午夜 | 天天色天天爱天天射综合| 不卡av免费在线观看| 国产丝袜在线精品| 国产成人自拍网| 欧美国产综合色视频| 国产精品综合二区| 欧美激情综合在线| av不卡一区二区三区| 中文字幕亚洲在| 色先锋aa成人| 婷婷国产v国产偷v亚洲高清| 欧美日韩亚洲不卡| 日韩激情av在线| 91麻豆精品91久久久久久清纯| 偷拍与自拍一区| 日韩欧美国产一区二区在线播放| 免费看黄色91| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩一本二本av| 久久国内精品视频| 欧美激情中文不卡| 色哟哟亚洲精品| 舔着乳尖日韩一区| 久久久久九九视频| 99久精品国产| 亚洲大片免费看| 欧美xxx久久| 97久久精品人人做人人爽50路 | 欧美午夜精品免费| 青青草一区二区三区| 久久久久久久综合色一本| 成人av在线播放网址| 亚洲精品国产a| 欧美一区三区二区| 成人性色生活片免费看爆迷你毛片| 综合激情网...| 日韩女优电影在线观看| 99麻豆久久久国产精品免费 | 91高清视频免费看| 九色综合国产一区二区三区| 国产精品乱人伦中文| 69堂成人精品免费视频| 丰满亚洲少妇av| 亚洲a一区二区| 中文字幕av免费专区久久| 日本伦理一区二区| 国内精品视频666| 亚洲丰满少妇videoshd| 欧美高清在线视频| 91精品国产美女浴室洗澡无遮挡| 高清久久久久久| 另类小说图片综合网| 亚洲激情自拍偷拍| 日本一区二区免费在线| 日韩情涩欧美日韩视频| 色94色欧美sute亚洲线路二| 精品制服美女久久| 亚洲一区二区偷拍精品| 中日韩av电影| 国产日韩欧美麻豆| 精品日韩一区二区| 欧美体内she精视频| 99视频精品在线| 成人午夜在线视频| 激情偷乱视频一区二区三区| 亚洲午夜精品网| 亚洲欧美精品午睡沙发| 久久精品亚洲精品国产欧美| 日韩欧美电影一二三| 欧美乱妇一区二区三区不卡视频| 一本大道av一区二区在线播放| 风间由美一区二区三区在线观看| 精品一区二区在线免费观看| 日韩有码一区二区三区| 亚洲成人三级小说| 亚洲综合久久久久| 亚洲精品成人悠悠色影视| 成人欧美一区二区三区小说| 亚洲国产精品高清| 中文字幕精品三区| 日本一区二区久久| 日本一区二区高清| 国产精品成人免费在线| 中文字幕欧美国产| 中文字幕亚洲区| 亚洲欧美在线观看| 亚洲精品成人天堂一二三| 亚洲精品乱码久久久久久久久| 亚洲欧美日本在线| 亚洲在线观看免费视频| 亚洲一区二区不卡免费| 亚洲va韩国va欧美va| 午夜精品久久久久久久久久久| 午夜视频在线观看一区二区| 日本欧美久久久久免费播放网| 麻豆专区一区二区三区四区五区| 久久99精品国产麻豆婷婷| 国产一区二区三区香蕉| 成人国产电影网| 91麻豆文化传媒在线观看| 欧美伊人久久大香线蕉综合69| 欧美久久婷婷综合色| 欧美videossexotv100| 国产欧美一区二区精品性色超碰| 亚洲欧美综合在线精品| 午夜久久久久久电影| 精品一区二区影视| 成人免费福利片| 欧美日韩精品久久久| 久久先锋资源网| 一区二区在线电影| 蜜臀精品一区二区三区在线观看| 狠狠色丁香久久婷婷综合丁香| 成人99免费视频| 91精品久久久久久久99蜜桃| 久久久www成人免费无遮挡大片| 国产精品毛片大码女人| 日韩激情在线观看| 成人av网站免费| 日韩欧美一区中文| 亚洲日本一区二区| 精品一区二区久久| 色婷婷综合五月| 精品99一区二区三区| 亚洲私人黄色宅男| 国内精品在线播放| 精品视频在线免费看| 国产精品丝袜久久久久久app| 婷婷综合五月天| eeuss鲁一区二区三区| 欧美成人乱码一区二区三区|