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

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

?? mainfrm.cpp

?? vc++網絡編程教程的源碼??赡軐κ褂胿c網絡編程的有用。
?? CPP
字號:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "MyBrowser.h"
#include "MyBrowserView.h"
#include "MainFrm.h"

#include <wininet.h>
#include <UrlHist.h>
#include "shlwapi.h"
#include "shlobj.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	ON_CBN_SELENDOK(AFX_IDW_TOOLBAR + 1,OnNewAddress)
	ON_COMMAND(IDOK, OnNewAddressEnter)	
	ON_COMMAND_RANGE(0xe00, 0xfff, OnFavorite)	
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	
	CImageList img;
	CString str;

	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

	if (!m_wndReBar.Create(this))
	{
		AfxMessageBox("Error in create toolbar");
		return -1;      // fail to create
	}
	if (!m_wndToolBar.CreateEx(this))
	{
		AfxMessageBox("Error in create toolbar");
		return -1;      // fail to create
	}

	//設置工具欄屬性
	m_wndToolBar.GetToolBarCtrl().SetButtonWidth(20, 100);
	m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);

	img.Create(IDB_BITMAP1, 22, 0, RGB(255, 0, 255));
	m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
	img.Detach();

	img.Create(IDB_BITMAP2, 22, 0, RGB(255, 0, 255));
	m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
	img.Detach();

	m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT);
	m_wndToolBar.SetButtons(NULL, 6);

	//設置每個工具欄按鈕
	m_wndToolBar.SetButtonInfo(0, ID_GO_BACK, TBSTYLE_BUTTON, 0);
	str.LoadString(IDS_GO_BACK);
	m_wndToolBar.SetButtonText(0, str);

	m_wndToolBar.SetButtonInfo(1, ID_GO_FORWARD, TBSTYLE_BUTTON, 1);
	str.LoadString(IDS_GO_FORWARD);
	m_wndToolBar.SetButtonText(1, str);

	m_wndToolBar.SetButtonInfo(2, ID_GO_STOP, TBSTYLE_BUTTON, 2);
	str.LoadString(IDS_GO_STOP);
	m_wndToolBar.SetButtonText(2, str);

	m_wndToolBar.SetButtonInfo(3, ID_GO_REFRESH, TBSTYLE_BUTTON, 3);
	str.LoadString(IDS_REFRESH);
	m_wndToolBar.SetButtonText(3, str);

	m_wndToolBar.SetButtonInfo(4, ID_START_PAGE, TBSTYLE_BUTTON, 4);
	str.LoadString(IDS_STARTPAGE);
	m_wndToolBar.SetButtonText(4, str);

	m_wndToolBar.SetButtonInfo(5, ID_GO_SERACH, TBSTYLE_BUTTON, 5);
	str.LoadString(IDS_SEARCH);
	m_wndToolBar.SetButtonText(5, str);
	
	//設置工具欄的尺寸
	CRect rectToolBar;
	m_wndToolBar.GetItemRect(0, &rectToolBar);
	m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(30,20));

	// 創建一個組合框作為地址條
	if (!m_wndAddress.Create(CBS_DROPDOWN | WS_CHILD, CRect(0, 0, 200, 120), this, AFX_IDW_TOOLBAR + 1))
	{
		TRACE0("Failed to create combobox\n");
		return -1;      // fail to create
	}

	//添加工具條,地址條到rebar中
	m_wndReBar.AddBar(&m_wndToolBar);
	str.LoadString(IDS_ADDRESS);
	m_wndReBar.AddBar(&m_wndAddress, str, NULL, RBBS_FIXEDBMP | RBBS_BREAK);

	// 設定Rebar中的每個尺寸
	REBARBANDINFO rbbi;
	rbbi.cbSize = sizeof(rbbi);
	rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE;
	rbbi.cxMinChild = rectToolBar.Width();
	rbbi.cyMinChild = rectToolBar.Height();
	rbbi.cx = rbbi.cxIdeal = rectToolBar.Width() * 9;
	m_wndReBar.GetReBarCtrl().SetBandInfo(0, &rbbi);
	rbbi.cxMinChild = 0;

	CRect rectAddress;
	rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE;
	m_wndAddress.GetEditCtrl()->GetWindowRect(&rectAddress);
	rbbi.cyMinChild = rectAddress.Height() + 10;
	rbbi.cxIdeal = 200;
	m_wndReBar.GetReBarCtrl().SetBandInfo(2, &rbbi);

	m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);

	//建立狀態條
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	//生成“我的收藏夾”子菜單
	char            path[MAX_PATH];
	CMenu*          pMenu;

	// 開始消去存在的菜單
	pMenu=GetMenu()->GetSubMenu(4);
	TRACE("%d",pMenu->GetMenuItemCount());
	while(pMenu->DeleteMenu(0, MF_BYPOSITION));

	SHGetSpecialFolderPath(NULL, path, CSIDL_FAVORITES, FALSE);
    //添加我的收藏菜單項
	BuildFavoritesMenu(path, 0, pMenu);
	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers

void CMainFrame::OnNewAddress()
{
	// 當組合框選中一個時,相應最新的選擇
	CString str;
	m_wndAddress.GetLBText(m_wndAddress.GetCurSel(), str);
	((CMyBrowserView*)GetActiveView())->Navigate2(str, 0, NULL);
}

void CMainFrame::OnNewAddressEnter()
{
	// 當組合框輸入一個地址時,相應輸入;同時記錄下輸入的地址添加到組合框鏈表中
	CString str;
	m_wndAddress.GetEditCtrl()->GetWindowText(str);
	((CMyBrowserView*)GetActiveView())->Navigate2(str, 0, NULL);
	COMBOBOXEXITEM item;
	item.mask = CBEIF_TEXT;
	item.iItem = -1;
	item.pszText = (LPTSTR)(LPCTSTR)str;
	m_wndAddress.InsertItem(&item);
}

int CMainFrame::BuildFavoritesMenu(LPCTSTR pszPath, int nStartPos, CMenu *pMenu)
{
	CString         strPath(pszPath);
	CString         strPath2;
	CString         str;
	WIN32_FIND_DATA wfd;
	HANDLE          h;
	int             nPos;
	int             nEndPos;
	int             nNewEndPos;
	int             nLastDir;
	TCHAR           buf[400];
	CStringArray    astrFavorites;
	CStringArray    astrDirs;
	CMenu*          pSubMenu;

	// 確定有'\\'字符
	if(strPath[strPath.GetLength() - 1] != _T('\\'))
		strPath += _T('\\');
	strPath2 = strPath;
	strPath += "*.*";

	// 首先掃描 .URL 然后掃描子目錄
	h = FindFirstFile(strPath, &wfd);
	if(h != INVALID_HANDLE_VALUE)
	{
		nEndPos = nStartPos;
		do
		{
			//非目錄文件,非隱藏屬性,非系統屬性
			if((wfd.dwFileAttributes & (FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM))==0)
			{
				str = wfd.cFileName;
				if(str.Right(4) == _T(".url"))
				{
					// an .URL file is formatted just like an .INI file, so we can
					// use GetPrivateProfileString() to get the information we want
					::GetPrivateProfileString(_T("InternetShortcut"), _T("URL"),
											  _T(""), buf, 400,
											  strPath2 + str);
					str = str.Left(str.GetLength() - 4);

					// scan through the array and perform an insertion sort
					// to make sure the menu ends up in alphabetic order
					for(nPos = nStartPos ; nPos < nEndPos ; ++nPos)
					{
						if(str.CompareNoCase(astrFavorites[nPos]) < 0)
							break;
					}
					astrFavorites.InsertAt(nPos, str);
					m_astrFavoriteURLs.InsertAt(nPos, buf);
					++nEndPos;
				}
			}
		} while(FindNextFile(h, &wfd));
		FindClose(h);
		// Now add these items to the menu
		for(nPos = nStartPos ; nPos < nEndPos ; ++nPos)
		{
			pMenu->AppendMenu(MF_STRING | MF_ENABLED, 0xe00 + nPos, astrFavorites[nPos]);
		}


		// now that we've got all the .URL files, check the subdirectories for more
		nLastDir = 0;
		h = FindFirstFile(strPath, &wfd);
		ASSERT(h != INVALID_HANDLE_VALUE);
		do
		{
			if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
			{
				// ignore the current and parent directory entries
				if(lstrcmp(wfd.cFileName, _T(".")) == 0 || lstrcmp(wfd.cFileName, _T("..")) == 0)
					continue;

				for(nPos = 0 ; nPos < nLastDir ; ++nPos)
				{
					if(astrDirs[nPos].CompareNoCase(wfd.cFileName) > 0)
						break;
				}
				pSubMenu = new CMenu;
				pSubMenu->CreatePopupMenu();

				// call this function recursively.
				nNewEndPos = BuildFavoritesMenu(strPath2 + wfd.cFileName, nEndPos, pSubMenu);
				if(nNewEndPos != nEndPos)
				{
					// only intert a submenu if there are in fact .URL files in the subdirectory
					nEndPos = nNewEndPos;
					pMenu->InsertMenu(nPos, MF_BYPOSITION | MF_POPUP | MF_STRING, (UINT)pSubMenu->m_hMenu, wfd.cFileName);
					pSubMenu->Detach();
					astrDirs.InsertAt(nPos, wfd.cFileName);
					++nLastDir;
				}
				delete pSubMenu;
			}
		} while(FindNextFile(h, &wfd));
		FindClose(h);
	}
	return nEndPos;
}

void CMainFrame::OnFavorite(UINT nID)
{
	((CMyBrowserView*)GetActiveView())->Navigate2(m_astrFavoriteURLs[nID-0xe00], 0, NULL);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级电影全部在线观看高清| 精品亚洲成a人| 日韩电影在线观看一区| 国产a级毛片一区| 精品欧美黑人一区二区三区| 亚洲精品高清在线| www.久久久久久久久| 精品日韩一区二区三区免费视频| 亚洲欧美自拍偷拍| 国产盗摄女厕一区二区三区| 7777精品久久久大香线蕉| 亚洲免费观看在线视频| 成人v精品蜜桃久久一区| 欧美电视剧在线看免费| 91视频在线看| 亚洲女性喷水在线观看一区| 久久99精品久久久久久久久久久久| 91免费观看视频在线| 久久久精品黄色| 国产精品亚洲人在线观看| 精品日韩欧美在线| 久久99最新地址| 日韩一区二区三区视频| 视频一区二区欧美| 欧美高清性hdvideosex| 偷拍日韩校园综合在线| 欧美日韩国产一级片| 亚洲国产精品麻豆| 欧美午夜一区二区三区| 一区二区三区高清在线| 色菇凉天天综合网| 一区二区三区日韩精品视频| 在线观看91视频| 亚洲国产日韩精品| 欧美精品视频www在线观看| 亚洲国产精品久久人人爱| 欧美无乱码久久久免费午夜一区| 亚洲成人免费观看| 欧美一区二区三区在| 日本欧美加勒比视频| 日韩免费电影网站| 国产精品77777竹菊影视小说| 欧美激情一区二区三区蜜桃视频| 成人一区二区三区中文字幕| 亚洲日本电影在线| 欧美日韩三级在线| 另类小说一区二区三区| 91精品国产综合久久婷婷香蕉| 99久免费精品视频在线观看| 亚洲国产激情av| 成人伦理片在线| 亚洲欧美一区二区久久| 欧美午夜一区二区三区| 久久国产精品72免费观看| 国产色一区二区| 色94色欧美sute亚洲线路一ni| 亚瑟在线精品视频| 精品少妇一区二区三区在线视频| 国产成人精品网址| 亚洲一区二区在线免费看| 日韩美一区二区三区| 99精品黄色片免费大全| 婷婷综合另类小说色区| 国产清纯美女被跳蛋高潮一区二区久久w | 国产欧美一区视频| 精品一区二区影视| 在线精品视频一区二区三四| 亚洲18色成人| 久久综合成人精品亚洲另类欧美| 91一区二区在线| 麻豆免费精品视频| 亚洲免费成人av| 久久久久久久国产精品影院| 欧美日韩国产综合一区二区 | 国产在线不卡一区| 一区二区三区日韩欧美| 2023国产精品自拍| 欧美日韩在线播放一区| 国产福利91精品| 日韩电影在线观看网站| 亚洲三级免费电影| 国产婷婷色一区二区三区在线| 欧美日韩在线综合| 成人av免费在线| 国产在线视频一区二区三区| 欧美成人一区二区三区| 欧美视频中文字幕| 国产成人在线看| 全部av―极品视觉盛宴亚洲| 国产精品成人午夜| 久久精品一区蜜桃臀影院| 欧美天天综合网| eeuss影院一区二区三区| 久久66热re国产| 天天av天天翘天天综合网| 亚洲视频精选在线| 中文字幕欧美激情一区| 日韩视频一区二区| 欧美日韩一区久久| 色诱视频网站一区| av成人老司机| 91亚洲大成网污www| 成人国产视频在线观看| 国产一区91精品张津瑜| 免费看欧美美女黄的网站| 日韩精品一二三四| 亚洲高清久久久| 亚洲成人黄色影院| 亚洲综合色自拍一区| 99久久久精品| 国产精品自拍av| 国内欧美视频一区二区| 黄色日韩网站视频| 极品美女销魂一区二区三区| 精品在线观看视频| 国产综合色产在线精品| 国产精品99久久久久久久vr | 日韩欧美一级在线播放| 7777精品久久久大香线蕉| 欧美精品在线一区二区| 欧美一区二区三区电影| 制服丝袜亚洲色图| 日韩欧美国产一区二区三区| 欧美不卡在线视频| 久久先锋影音av| 久久精品无码一区二区三区| 国产午夜亚洲精品不卡| 国产精品激情偷乱一区二区∴| 亚洲欧洲日产国码二区| 一区二区三区在线免费播放| 亚洲国产日韩精品| 毛片av一区二区三区| 国产成人av电影在线播放| av资源网一区| 欧美日韩亚洲国产综合| 精品国产一区久久| 国产精品天干天干在观线| 亚洲欧美色图小说| 日韩国产一二三区| 国产精品自拍三区| 在线中文字幕一区二区| 欧美精品tushy高清| 久久综合九色综合欧美就去吻| 国产精品网站在线观看| 亚洲第一精品在线| 经典一区二区三区| 色综合天天综合网天天狠天天 | 在线观看欧美黄色| 日韩免费高清电影| 亚洲欧美日韩国产综合| 日韩精品亚洲专区| av爱爱亚洲一区| 精品国产一区二区三区不卡| 日韩午夜激情av| 国产精品美女久久久久久久久| 亚洲综合色在线| 国精产品一区一区三区mba桃花 | 亚洲欧美电影一区二区| 国产高清久久久| 精品久久久久久无| 麻豆免费精品视频| 日韩欧美一级片| 久久se精品一区精品二区| 欧美一级日韩一级| 麻豆精品国产91久久久久久| 欧美一区二区三区人| 天天操天天干天天综合网| 7777精品伊人久久久大香线蕉经典版下载 | 国产黄色91视频| 国产欧美精品一区二区色综合 | 国产99精品国产| 岛国一区二区在线观看| 欧美大片一区二区| 日av在线不卡| 2020国产精品自拍| 国产一区二区三区美女| 国产精品五月天| 色综合咪咪久久| 一区二区三区中文字幕| 欧美日韩一区二区三区视频| 午夜精品影院在线观看| 91精品在线观看入口| 国产美女精品人人做人人爽| 欧美激情资源网| www.日韩在线| 亚洲电影在线播放| 日韩一级二级三级| 国产很黄免费观看久久| 亚洲色图制服丝袜| 91麻豆精品国产91久久久使用方法| 日本亚洲一区二区| 久久综合色综合88| 99九九99九九九视频精品| 亚洲一区二区高清| 日韩女优av电影在线观看| 成人网男人的天堂| 肉丝袜脚交视频一区二区| 欧美精品一区二| caoporen国产精品视频| 亚洲私人黄色宅男|