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

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

?? httpview.cpp

?? 一個網路服務器程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// HttpView.cpp : implementation of the CHttpSvrView class
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.

#include "stdafx.h"

#include "HttpSvr.h"
#include "Http.h"
#include "HttpDoc.h"
#include "HttpView.h"
#include "RootDlg.h"
#include "NoRoot.h"
#include "Request.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CHttpSvrView

IMPLEMENT_DYNCREATE(CHttpSvrView, CListView)

BEGIN_MESSAGE_MAP(CHttpSvrView, CListView)
	//{{AFX_MSG_MAP(CHttpSvrView)
	ON_COMMAND(IDM_VIEW_LARGE, OnViewLarge)
	ON_UPDATE_COMMAND_UI(IDM_VIEW_LARGE, OnUpdateViewLarge)
	ON_COMMAND(IDM_VIEW_LIST, OnViewList)
	ON_UPDATE_COMMAND_UI(IDM_VIEW_LIST, OnUpdateViewList)
	ON_COMMAND(IDM_VIEW_REPORT, OnViewReport)
	ON_UPDATE_COMMAND_UI(IDM_VIEW_REPORT, OnUpdateViewReport)
	ON_COMMAND(IDM_VIEW_SMALL, OnViewSmall)
	ON_UPDATE_COMMAND_UI(IDM_VIEW_SMALL, OnUpdateViewSmall)
	ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
	ON_NOTIFY_REFLECT(LVN_GETDISPINFO, OnGetDispInfo)
	ON_NOTIFY_REFLECT(LVN_DELETEITEM, OnDeleteItem)
	ON_COMMAND(IDM_VIEW_CLEAR, OnViewClear)
	//}}AFX_MSG_MAP
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
	ON_NOTIFY_REFLECT(NM_RCLICK, OnRclick)
	ON_COMMAND(IDM_POPUP_CLEAR, OnPopupClear)
	ON_COMMAND(IDM_POPUP_EDIT, OnPopupEdit)
	ON_COMMAND(IDM_POPUP_OPEN, OnPopupOpen)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHttpSvrView construction/destruction

CHttpSvrView::CHttpSvrView()
{
	m_phdPopup = NULL;
}

CHttpSvrView::~CHttpSvrView()
{
}

BOOL CHttpSvrView::PreCreateWindow(CREATESTRUCT& cs)
{
	cs.style = (cs.style & ~LVS_TYPEMASK) | LVS_REPORT;
	cs.style |= LVS_AUTOARRANGE;
	return CListView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CHttpSvrView drawing

void CHttpSvrView::OnDraw(CDC* /*pDC*/)
{
	CHttpSvrDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
}

void CHttpSvrView::OnInitialUpdate()
{
	CHttpSvrDoc* pDoc = GetDocument();
	CListView::OnInitialUpdate();
	// get the root directory....
	CString strRoot = pDoc->m_strRoot;
	// make sure it exists and it's a folder....
	BOOL bLoop = TRUE;
	while ( bLoop )
	{
		DWORD dwAttr = GetFileAttributes( strRoot );
		if ( dwAttr == INVALID_FILE_ATTRIBUTES )
		{
			CNoRootDlg dlg;
			dlg.m_strRoot = strRoot;
			UINT uButton = (UINT)dlg.DoModal();
			if ( uButton == IDOK )
			{
				strRoot = dlg.m_strRoot;
				dwAttr = GetFileAttributes( strRoot );
				if ( dwAttr == INVALID_FILE_ATTRIBUTES )
				{
					if ( !CreateDirectory( strRoot, NULL ) )
					{
						MessageBox( "Create Directory failed",
							strRoot, MB_ICONEXCLAMATION|MB_OK );
					}
				}
			}
			else // no....
            {
                MessageBox( "Running with non-existent root directory!",
							strRoot, MB_ICONEXCLAMATION|MB_OK );
				bLoop = FALSE; // use it anyway
            }
		}
		else if ( (dwAttr & FILE_ATTRIBUTE_DIRECTORY) == 0 )
		{
			CBadRootDlg dlg;
			dlg.m_strRoot = strRoot;
			if ( dlg.DoModal() == IDCANCEL )
            {
                MessageBox( "Running with invalid root directory!",
							strRoot, MB_ICONEXCLAMATION|MB_OK );
				bLoop = FALSE; // use it anyway
            }
		}
		else
		{
			// root is okay, save it....
			if ( strRoot.CompareNoCase(pDoc->m_strRoot) != 0 )
			{
				pDoc->m_strRoot = strRoot;
				pDoc->SetModifiedFlag( TRUE );
			}
			bLoop = FALSE;  // okay!
		}
	}
}

/////////////////////////////////////////////////////////////////////////////
// CHttpSvrView diagnostics

#ifdef _DEBUG
void CHttpSvrView::AssertValid() const
{
	CListView::AssertValid();
}

void CHttpSvrView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

CHttpSvrDoc* CHttpSvrView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CHttpSvrDoc)));
	return (CHttpSvrDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CHttpSvrView message handlers

BOOL CHttpSvrView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
	BOOL bCreated = CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
	if ( bCreated )
	{
		CListCtrl& listView = GetListCtrl();
		int aWidths[] = { 150, 200, 50, 140, 225, 200 };
		CString strHeading;

		for ( int iCol = 0; iCol < C_COLUMNS; iCol++) {
			BOOL bOk = strHeading.LoadString( IDS_COLUMN1 + iCol );
            ASSERT(bOk);
			listView.InsertColumn( iCol, strHeading, LVCFMT_LEFT,
				aWidths[iCol], iCol );
		}

		// Create the full-sized and small icon image lists.
		if ( m_ilLarge.Create( IDB_IMAGES, 32, 1, RGB(0,255,0) ) )
		{
			listView.SetImageList( &m_ilLarge, LVSIL_NORMAL );
		}
		if ( m_ilSmall.Create( IDB_SMALLIMAGES, 16, 1, RGB(0,255,0) ) )
		{
			listView.SetImageList( &m_ilSmall, LVSIL_SMALL);
		}
	}
	return bCreated;
}

void CHttpSvrView::SetListView( DWORD dwView )
{
	CListCtrl& list = GetListCtrl();
	DWORD dwStyle = GetWindowLong( list.m_hWnd, GWL_STYLE );
	if ( (dwStyle & LVS_TYPEMASK) != dwView )
		SetWindowLong( list.m_hWnd, GWL_STYLE,
			(dwStyle & ~LVS_TYPEMASK) | dwView );
}

void CHttpSvrView::OnViewLarge()
{
	SetListView( LVS_ICON );
}

void CHttpSvrView::OnUpdateViewLarge(CCmdUI* pCmdUI)
{
    if (!pCmdUI) return;
	CListCtrl& list = GetListCtrl();
	DWORD dwStyle = GetWindowLong( list.m_hWnd, GWL_STYLE ) & LVS_TYPEMASK;
	pCmdUI->SetCheck( dwStyle == LVS_ICON );
}

void CHttpSvrView::OnViewList()
{
	SetListView( LVS_LIST );
}

void CHttpSvrView::OnUpdateViewList(CCmdUI* pCmdUI)
{
    if (!pCmdUI) return;
	CListCtrl& list = GetListCtrl();
	DWORD dwStyle = GetWindowLong( list.m_hWnd, GWL_STYLE ) & LVS_TYPEMASK;
	pCmdUI->SetCheck( dwStyle == LVS_LIST );
}

void CHttpSvrView::OnViewReport()
{
	SetListView( LVS_REPORT );
}

void CHttpSvrView::OnUpdateViewReport(CCmdUI* pCmdUI)
{
    if (!pCmdUI) return;
	CListCtrl& list = GetListCtrl();
	DWORD dwStyle = GetWindowLong( list.m_hWnd, GWL_STYLE ) & LVS_TYPEMASK;
	pCmdUI->SetCheck( dwStyle == LVS_REPORT );
}

void CHttpSvrView::OnViewSmall()
{
	SetListView( LVS_SMALLICON );
}

void CHttpSvrView::OnUpdateViewSmall(CCmdUI* pCmdUI)
{
    if (!pCmdUI) return;
	CListCtrl& list = GetListCtrl();
	DWORD dwStyle = GetWindowLong( list.m_hWnd, GWL_STYLE ) & LVS_TYPEMASK;
	pCmdUI->SetCheck( dwStyle == LVS_SMALLICON );
}

int CALLBACK
CompareHitDocs( CHitDoc* doc1, CHitDoc* doc2, LPARAM lCol )
{
	int nCmp = 0;
	switch( lCol )
	{
	case COLUMN_PATH:
		nCmp = doc1->m_strFolder.CompareNoCase( doc2->m_strFolder );
		break;
	case COLUMN_HITS:
		if ( doc1->m_nHits > doc2->m_nHits )
			nCmp = -1;
		else if ( doc1->m_nHits < doc2->m_nHits )
			nCmp = 1;
		break;
	case COLUMN_LAST:
		if ( doc1->m_timeLastHit > doc2->m_timeLastHit )
			nCmp = -1;
		else if ( doc1->m_timeLastHit < doc2->m_timeLastHit )
			nCmp = 1;
		break;
	case COLUMN_CMD:
		nCmp = doc1->m_strCommand.CompareNoCase( doc2->m_strCommand );
		break;
	case COLUMN_URL:
		nCmp = doc1->m_strURL.CompareNoCase( doc2->m_strURL );
		break;
	default:
		// put folders ahead of everything....
		if ( doc1->m_bFolder && !doc2->m_bFolder )
			nCmp = -1;
		else if ( !doc1->m_bFolder && doc2->m_bFolder )
			nCmp = 1;
		// sort successfully hit docs....
		else if ( doc1->m_nStatus == 200 && doc2->m_nStatus == 200 )
		{
			nCmp = doc1->m_strFile.CompareNoCase( doc2->m_strFile );
			if ( nCmp == 0 )
				nCmp = doc1->m_strFolder.CompareNoCase( doc2->m_strFolder );
		}
		// put hit docs ahead of status items....
		else if ( doc1->m_nStatus == 200 )
			nCmp = -1;
		else if ( doc2->m_nStatus == 200 )
			nCmp = 1;
		// sort status items by status value....
		else if ( doc1->m_nStatus < doc2->m_nStatus )
			nCmp = -1;
		else if ( doc1->m_nStatus > doc2->m_nStatus )
			nCmp = 1;
		break;
	}
	return nCmp;
}

void CHttpSvrView::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult)
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	CListCtrl& list = GetListCtrl();
	list.SortItems( (PFNLVCOMPARE)CompareHitDocs, pNMListView->iSubItem );
	*pResult = 0;
}

void CHttpSvrView::OnGetDispInfo(NMHDR* pNMHDR, LRESULT* pResult)
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男人的j进女人的j一区| 亚洲精品成人在线| 在线成人免费视频| 欧美精品乱人伦久久久久久| 91黄视频在线| 欧美天堂一区二区三区| 欧美美女一区二区| 日韩一级黄色片| 日韩一级黄色片| 久久美女艺术照精彩视频福利播放| 日韩欧美国产电影| 精品理论电影在线| 久久色.com| 国产三区在线成人av| 国产人成亚洲第一网站在线播放| 国产女主播在线一区二区| 亚洲日本免费电影| 午夜免费久久看| 久久99日本精品| 成人免费的视频| 91日韩在线专区| 欧美老肥妇做.爰bbww| 久久丝袜美腿综合| 中文字幕在线一区二区三区| 亚洲色图视频免费播放| 日精品一区二区| 福利一区福利二区| 日本精品视频一区二区| 欧美一级理论片| 国产精品国产三级国产a| 亚洲国产成人精品视频| 高清视频一区二区| 欧美日韩一区二区在线观看视频| 精品动漫一区二区三区在线观看| 国产精品萝li| 奇米888四色在线精品| 成人免费看片app下载| 欧美一级欧美一级在线播放| 国产免费久久精品| 蜜桃视频一区二区三区在线观看| 成人美女在线视频| 日韩欧美美女一区二区三区| 亚洲久本草在线中文字幕| 韩国欧美国产1区| 欧美色精品在线视频| 国产精品久久久99| 久久精品久久99精品久久| 一本一道久久a久久精品 | 91成人在线精品| 欧美精品一区二区三区蜜桃视频| 一区二区成人在线| 成人午夜视频免费看| 日韩一区二区免费在线观看| 成人免费一区二区三区在线观看| 老司机午夜精品99久久| 欧亚洲嫩模精品一区三区| 欧美国产一区视频在线观看| 久久9热精品视频| 91麻豆精品国产91久久久久久久久 | 亚洲国产精品麻豆| 成人福利电影精品一区二区在线观看| 日韩一区二区电影在线| 亚洲最快最全在线视频| 91视频观看视频| 亚洲人xxxx| 99久久综合精品| 中文字幕一区二区三区色视频| 国产真实乱子伦精品视频| 日韩亚洲欧美成人一区| 日韩主播视频在线| 91麻豆精品国产91久久久使用方法| 亚洲自拍与偷拍| 欧美中文字幕一区二区三区| 亚洲另类一区二区| 欧美视频一二三区| 午夜电影网亚洲视频| 777色狠狠一区二区三区| 日韩成人午夜精品| 91精品国产综合久久婷婷香蕉| 夜夜嗨av一区二区三区中文字幕| 色婷婷精品大在线视频| 一区二区三区在线观看视频| 日本精品一区二区三区四区的功能| 日韩毛片在线免费观看| 欧美三级日韩在线| 日产精品久久久久久久性色| 日韩午夜激情电影| 国产福利一区二区三区视频| 国产精品全国免费观看高清 | 欧美日韩一本到| 天堂蜜桃一区二区三区| 日韩欧美黄色影院| 国产福利一区二区三区视频| 亚洲私人影院在线观看| 欧美三级在线视频| 蜜乳av一区二区| 国产三级三级三级精品8ⅰ区| 成人免费视频国产在线观看| 亚洲欧美国产三级| 666欧美在线视频| 国产精品2024| 夜夜夜精品看看| 精品国精品自拍自在线| av电影在线观看不卡| 亚洲超碰精品一区二区| 久久久精品日韩欧美| 91久久精品网| 国产美女精品人人做人人爽 | 欧美日韩精品欧美日韩精品一综合| 蜜臀久久久99精品久久久久久| 久久久亚洲精品一区二区三区| www.性欧美| 天天综合日日夜夜精品| 亚洲国产精品国自产拍av| 欧美日韩视频在线第一区 | 国产高清不卡一区| 亚洲成av人片在线| 国产日韩v精品一区二区| 制服丝袜av成人在线看| 国产一区二区三区综合| 亚洲午夜羞羞片| 国产精品卡一卡二| 欧美α欧美αv大片| 欧美三级蜜桃2在线观看| 国产91精品精华液一区二区三区| 婷婷久久综合九色综合伊人色| 国产精品免费免费| 日韩一区二区三区电影在线观看 | 精品久久久久久久久久久久久久久久久 | 久久精品人人做人人爽人人| 欧美日韩激情一区| www.欧美色图| 国产黄色精品网站| 精品一区二区国语对白| 亚洲制服丝袜av| 亚洲视频小说图片| 亚洲国产成人在线| 久久色视频免费观看| 欧美成人vps| 日韩欧美亚洲另类制服综合在线| 欧美亚日韩国产aⅴ精品中极品| av激情成人网| aaa欧美大片| 91亚洲精品久久久蜜桃| 成人国产精品免费观看视频| 国产夫妻精品视频| 国产精品一品视频| 粉嫩绯色av一区二区在线观看| 国内精品写真在线观看| 久久精品久久综合| 国产乱一区二区| 国产一区中文字幕| 国产精品一区二区久久精品爱涩| 久久精品av麻豆的观看方式| 日本亚洲电影天堂| 久久不见久久见中文字幕免费| 日韩一区精品字幕| 久久国产尿小便嘘嘘| 国产一区二区毛片| 高清成人在线观看| 国产超碰在线一区| 成人avav影音| 欧美在线免费观看亚洲| 欧美日韩高清在线播放| 日韩欧美美女一区二区三区| 久久毛片高清国产| 亚洲欧美在线aaa| 亚洲国产精品一区二区尤物区| 日韩高清在线一区| 韩国女主播一区二区三区| 成人毛片在线观看| 在线观看免费亚洲| 欧美一级艳片视频免费观看| 久久青草国产手机看片福利盒子| 国产免费成人在线视频| 亚洲另类春色国产| 卡一卡二国产精品| 不卡的电影网站| 欧美久久久久久久久| 久久综合网色—综合色88| 综合久久国产九一剧情麻豆| 亚洲成人在线观看视频| 国产乱色国产精品免费视频| 色哟哟国产精品免费观看| 日韩午夜在线影院| 成人免费在线视频观看| 偷拍亚洲欧洲综合| 成人午夜电影小说| 欧美另类videos死尸| 中文字幕欧美激情| 日日夜夜精品免费视频| 成人性生交大片免费看中文网站| 欧美无砖砖区免费| 欧美激情中文字幕| 免费视频最近日韩| 色嗨嗨av一区二区三区| 精品乱人伦一区二区三区| 香蕉av福利精品导航 | 亚洲小少妇裸体bbw| 懂色中文一区二区在线播放|