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

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

?? mainfrm.cpp

?? 一個編輯網頁的程序
?? CPP
字號:
// MainFrm.cpp : implementation of the CMainFrame 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 "HTMLEdit.h"

#include "MainFrm.h"
#include "htmleddoc.h"
#include "htmlEdView.h"
#include "sourceview.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)
	ON_COMMAND_EX(CG_ID_VIEW_FONTDLGBAR, OnBarCheck)
	ON_UPDATE_COMMAND_UI(CG_ID_VIEW_FONTDLGBAR, OnUpdateControlBarMenu)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_CBN_SELCHANGE(ID_FMTBAR_FONTNAME, OnFontNameChange)
	ON_CBN_SELCHANGE(ID_FMTBAR_FONTSIZE, OnFontSizeChange)
	ON_COMMAND(ID_VIEW_EDITINGTOOLBAR, OnViewEditingtoolbar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_EDITINGTOOLBAR, OnUpdateViewEditingtoolbar)
	ON_COMMAND(ID_VIEW_SOURCE, OnViewSource)
	ON_COMMAND(ID_VIEW_WEB, OnViewWeb)
	ON_UPDATE_COMMAND_UI(ID_VIEW_WEB, OnUpdateViewWeb)
	ON_UPDATE_COMMAND_UI(ID_VIEW_SOURCE, OnUpdateViewSource)
	ON_UPDATE_COMMAND_UI(ID_FMTBAR_FONTSIZE, OnUpdateFontSize)
	ON_UPDATE_COMMAND_UI(ID_FMTBAR_FONTNAME, OnUpdateFontName)
	ON_UPDATE_COMMAND_UI (ID_INDICATOR_VIEW, OnUpdatePane)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CMainFrame::OnBlockFmtDropdown( NMHDR * /*pNotifyStruct*/, LRESULT * /*result*/ )
{

}
static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_VIEW,		// view indicator - Web/Source
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

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

CMainFrame::CMainFrame():
	m_pSrcView(NULL),
	m_pWebView(NULL),
	m_dwCurrentView(ID_VIEW_WEB)
{
	// TODO: add member initialization code here
	
}

CMainFrame::~CMainFrame()
{
}
BOOL CreateEditBar();
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	if (!CreateEditBar())
	{
		TRACE0("Failed to create edit toolbar\n");
		return -1;      // fail to create
	}

	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
	}

	// TODO: Delete these three lines if you don't want the toolbar to
	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	m_wndEditBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);
	DockControlBar(&m_wndEditBar);


	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
INT CALLBACK NEnumFontNameProc(LOGFONT *plf, TEXTMETRIC* /*ptm*/, INT /*nFontType*/, LPARAM lParam)
{
	CComboBox* comboBox = (CComboBox*) lParam;

	comboBox->AddString(plf->lfFaceName);

	return TRUE;
}
BOOL CMainFrame::CreateEditBar()
{

	CRect rect;
	const int nDropHeight = 200;

static int nFontSizes[] = 
	{1, 2, 3, 4, 5, 6, 7};


	if (!m_wndEditBar.Create(this) ||
		!m_wndEditBar.LoadToolBar(ID_TOOLBAR_EDITING))
	{
		TRACE0("Failed to create stylebar\n");
		return FALSE;       // fail to create
	}

	CToolBarCtrl& tbCtrl = m_wndEditBar.GetToolBarCtrl();
	tbCtrl.ModifyStyle(0, TBSTYLE_FLAT);

	m_wndEditBar.SetBarStyle(m_wndEditBar.GetBarStyle() |
		CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

	// Create the font name combo box
	m_wndEditBar.SetButtonInfo(0, ID_FMTBAR_FONTNAME, TBBS_SEPARATOR, 150);

	// Design guide advises 12 pixel gap between combos and buttons
	m_wndEditBar.GetItemRect(0, &rect);
	rect.top = 3;
	rect.bottom = rect.top + nDropHeight;
	if (!m_wndEditBar.m_fontNameCombo.Create(
			CBS_DROPDOWN|WS_VSCROLL|CBS_SORT |WS_VISIBLE|WS_TABSTOP,
			rect, &m_wndEditBar, ID_FMTBAR_FONTNAME))
	{
		TRACE0("Failed to create combo-box\n");
		return FALSE;
	}

	//  Fill the combo box
	::EnumFontFamilies(GetDC()->m_hDC, (LPTSTR) NULL, (FONTENUMPROC)NEnumFontNameProc, (LPARAM)&(m_wndEditBar.m_fontNameCombo));

	// Create the fontsize combo box
	m_wndEditBar.SetButtonInfo(1, ID_FMTBAR_FONTSIZE, TBBS_SEPARATOR, 50);

	m_wndEditBar.GetItemRect(1, &rect);
	rect.top = 3;
	rect.bottom = rect.top + nDropHeight;
	rect.left += 5;
	if (!m_wndEditBar.m_fontSizeCombo.Create(
			CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP,
			rect, &m_wndEditBar, ID_FMTBAR_FONTSIZE))
	{
		TRACE0("Failed to create combo-box\n");
		return FALSE;
	}

	CString str;
	for (int i = 0; i < sizeof(nFontSizes)/sizeof(int); i++)
	{
		str.Format(_T("%d"), nFontSizes[i]);
		m_wndEditBar.m_fontSizeCombo.AddString(str);
	}

	// set dropdown style on tag format button and font color button
	m_wndEditBar.SetButtonStyle(3, TBSTYLE_DROPDOWN);
	m_wndEditBar.SetButtonStyle(8, TBSTYLE_DROPDOWN);

	m_wndEditBar.m_font.Attach(GetStockObject(DEFAULT_GUI_FONT));
	m_wndEditBar.m_fontNameCombo.SetFont(&m_wndEditBar.m_font);
	m_wndEditBar.m_fontSizeCombo.SetFont(&m_wndEditBar.m_font);

	m_wndEditBar.m_fontNameCombo.SetCurSel(-1);
	m_wndEditBar.m_fontSizeCombo.SetCurSel(-1);

	return TRUE;

}
CComboBox* CMainFrame::GetFontNameCombo() 
{
	return &m_wndEditBar.m_fontNameCombo;
}
CComboBox* CMainFrame::GetFontSizeCombo() 
{
	return &m_wndEditBar.m_fontSizeCombo;
}
void CMainFrame::OnFontNameChange() 
{
	CString szText;
	m_wndEditBar.m_fontNameCombo.GetLBText(
		m_wndEditBar.m_fontNameCombo.GetCurSel(),szText);

	CHTMLEdView *pView = (CHTMLEdView*)GetActiveView();
	ASSERT_VALID(pView);
	pView->SetFontFace(szText);

}

void CMainFrame::OnFontSizeChange() 
{
	CString szText;
	m_wndEditBar.m_fontSizeCombo.GetLBText(
		m_wndEditBar.m_fontSizeCombo.GetCurSel(),szText);

	CHTMLEdView *pView = (CHTMLEdView*)GetActiveView();
	ASSERT_VALID(pView);

	pView->SetFontSize((short)_ttoi(szText));
}

void CMainFrame::OnViewEditingtoolbar() 
{
	CControlBar *pBar = DYNAMIC_DOWNCAST(CControlBar,&m_wndEditBar);
	if(pBar)
	{
		ShowControlBar(pBar, (pBar->GetStyle() & WS_VISIBLE) == 0, FALSE);
	}

}

void CMainFrame::OnUpdateViewEditingtoolbar(CCmdUI* pCmdUI) 
{
	CControlBar *pBar = DYNAMIC_DOWNCAST(CControlBar,&m_wndEditBar);
	if (pBar != NULL)
	{
		pCmdUI->SetCheck((pBar->GetStyle() & WS_VISIBLE) != 0);
		return;
	}
	
}

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{	
	CDocument *pDoc=NULL;
	POSITION pos;
	BOOL bRet = FALSE;
	//create the source view for this document at this time
	CRuntimeClass *prc = RUNTIME_CLASS(CSourceView);
	ASSERT(prc);
	m_pSrcView = (CSourceView*)prc->CreateObject();
	if(m_pSrcView)
		VERIFY(m_pSrcView->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
		CRect(0,0,0,0), this, AFX_IDW_PANE_LAST, NULL));


	//create the doc-template view and save off a pointer to it
	bRet = CFrameWnd::OnCreateClient(lpcs, pContext);
	pDoc = pContext->m_pCurrentDoc;
	if(bRet && pDoc)
	{
		pos = pDoc->GetFirstViewPosition();
		pDoc->AddView(m_pSrcView);
	}
	else
		return FALSE;

	CView *pView = pDoc->GetNextView(pos);
	ASSERT(pView->IsKindOf(RUNTIME_CLASS(CHTMLEdView)));
	if(pView)
	{
		m_pWebView = (CHTMLEdView*) pView;
	}
	else
		return FALSE;

	return bRet;
}

void CMainFrame::SwapView(int nCmdID)
{
	CDocument *pDoc;

	pDoc = GetActiveDocument();
	if(nCmdID == ID_VIEW_SOURCE)
	{
		//swap the view IDs
		m_pWebView->SetDlgCtrlID(AFX_IDW_PANE_LAST);
		m_pSrcView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);

		// show/hide the right view
		m_pWebView->ShowWindow(SW_HIDE);
		m_pSrcView->ShowWindow(SW_SHOW);

		//update the document
		//pDoc->AddView(m_pSrcView);
		//pDoc->RemoveView(m_pWebView);

		//re-layout everything
		SetActiveView(m_pSrcView);
		RecalcLayout();

		m_dwCurrentView = ID_VIEW_SOURCE;

		m_wndStatusBar.SetPaneText(1, _T("SRC VIEW"), TRUE);

		return;
	}
	else if(nCmdID == ID_VIEW_WEB)
	{
		//swap the view IDs
		m_pWebView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
		m_pSrcView->SetDlgCtrlID(AFX_IDW_PANE_LAST);

		// show/hide the right view
		m_pWebView->ShowWindow(SW_SHOW);
		m_pSrcView->ShowWindow(SW_HIDE);

		//update the document
		//pDoc->AddView(m_pWebView);
		//pDoc->RemoveView(m_pSrcView);

		//re-layout everything
		SetActiveView(m_pWebView);
		RecalcLayout();

		m_dwCurrentView = ID_VIEW_WEB;
		m_wndStatusBar.SetPaneText(1, _T("WEB VIEW"), TRUE);
		return;
	}

}
void CMainFrame::SwapView()
{
	//if we are already showing the right view, bail, nothing to do.
	DWORD nCmdID = LOWORD(GetCurrentMessage()->wParam);   
	if((nCmdID == ID_VIEW_SOURCE) && (m_dwCurrentView == ID_VIEW_SOURCE))
		return;
	if((nCmdID == ID_VIEW_WEB) && (m_dwCurrentView == ID_VIEW_WEB))
		return;

	SwapView(nCmdID);
}


void CMainFrame::OnViewSource() 
{
	SwapView();	
}

void CMainFrame::OnViewWeb() 
{
	SwapView();
}

void CMainFrame::OnUpdateViewWeb(CCmdUI* pCmdUI) 
{
	pCmdUI->SetRadio(m_dwCurrentView==ID_VIEW_WEB);
	
}

void CMainFrame::OnUpdateViewSource(CCmdUI* pCmdUI) 
{
	pCmdUI->SetRadio(m_dwCurrentView==ID_VIEW_SOURCE);
	
}

CView* CMainFrame::GetWebView()
{
	return DYNAMIC_DOWNCAST(CView,m_pWebView);
}

CView* CMainFrame::GetSourceView()
{
	return DYNAMIC_DOWNCAST(CView,m_pSrcView);
}

DWORD CMainFrame::GetCurrentView()
{
	return m_dwCurrentView;
}

void CMainFrame::OnUpdateFontSize(CCmdUI* /*pCmdUI*/)
{
	CComboBox *pCombo = (CComboBox*)GetFontSizeCombo();
	ASSERT_VALID(pCombo);

	//If Source View, don't display the font size combobox
	if(m_dwCurrentView == ID_VIEW_SOURCE)
	{
		pCombo->EnableWindow(FALSE);
		return;
	}
	else
	{
		if(m_pWebView->QueryStatus(IDM_BLOCKFMT) & OLECMDF_ENABLED)
			pCombo->EnableWindow();
		else
			pCombo->EnableWindow(FALSE);
	}
}

void CMainFrame::OnUpdateFontName(CCmdUI* /*pCmdUI*/)
{
	CComboBox *pCombo = (CComboBox*)GetFontNameCombo();
	ASSERT_VALID(pCombo);

	//If Source View, don't display the font name combobox
	if(m_dwCurrentView == ID_VIEW_SOURCE)
	{
		pCombo->EnableWindow(FALSE);
		return;
	}
	else
	{
		if(m_pWebView->QueryStatus(IDM_BLOCKFMT) & OLECMDF_ENABLED)
			pCombo->EnableWindow();
		else
			pCombo->EnableWindow(FALSE);
	}
}

void CMainFrame::OnUpdatePane(CCmdUI *pCmdUI)
{
	pCmdUI->Enable ();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品自拍偷拍| 日本亚洲欧美天堂免费| 国产日韩精品一区二区浪潮av| 久久伊人中文字幕| 中文字幕亚洲视频| 五月婷婷综合网| 国产成人在线视频播放| 91福利视频在线| 欧美电影免费提供在线观看| 亚洲欧洲精品一区二区三区| 午夜在线成人av| 国产成人夜色高潮福利影视| 欧美日韩国产区一| 中文字幕在线不卡| 亚洲欧美一区二区三区久本道91| 另类调教123区| 日本韩国一区二区三区| 国产日韩影视精品| 奇米色777欧美一区二区| 色天使色偷偷av一区二区| 精品国产髙清在线看国产毛片| 一区二区三区高清在线| 国产专区综合网| 91麻豆精品国产91久久久久| 亚洲女人小视频在线观看| 国产成人综合网站| 日韩视频国产视频| 三级不卡在线观看| 欧美这里有精品| 亚洲黄色录像片| 一本久久精品一区二区| 中文字幕乱码亚洲精品一区| 精品一区二区三区在线视频| 555www色欧美视频| 综合精品久久久| 色哟哟亚洲精品| 亚洲欧美一区二区三区极速播放| 色婷婷综合久色| 亚洲欧美国产高清| 91麻豆产精品久久久久久| 欧美极品aⅴ影院| 激情深爱一区二区| 91精品国产高清一区二区三区 | 欧美中文字幕不卡| 国产精品视频一区二区三区不卡| 蜜桃在线一区二区三区| 67194成人在线观看| 午夜av一区二区三区| 欧美日韩精品高清| 日韩福利电影在线观看| 在线播放中文字幕一区| 日韩和的一区二区| 91精品国产91热久久久做人人| 日产欧产美韩系列久久99| 欧美不卡123| 国产98色在线|日韩| 国产精品久久久久aaaa| eeuss国产一区二区三区| 亚洲人成伊人成综合网小说| 91久久国产综合久久| 亚洲高清不卡在线| 日韩欧美国产一区二区三区| 国产原创一区二区| 中文字幕av一区 二区| 91麻豆国产精品久久| 亚洲国产你懂的| 日韩视频在线观看一区二区| 国产成人在线网站| 亚洲天堂网中文字| 欧美乱熟臀69xxxxxx| 韩国av一区二区三区| 国产精品女主播av| 国产成人自拍高清视频在线免费播放| 中文字幕精品—区二区四季| 国产不卡在线视频| 国产午夜亚洲精品羞羞网站| 成人精品高清在线| 亚洲乱码国产乱码精品精98午夜| 欧美日韩dvd在线观看| 精品一区中文字幕| 亚洲欧美色图小说| 欧美一区二区不卡视频| 成人久久视频在线观看| 亚洲va欧美va人人爽午夜| 欧美精品一区二区三区视频| 色八戒一区二区三区| 蜜臀av一区二区在线观看| 日本一区二区在线不卡| 欧美视频完全免费看| 99精品一区二区三区| 久久99精品久久久久婷婷| 亚洲视频免费观看| 欧美r级电影在线观看| 色婷婷综合久久久中文一区二区 | 欧美一区欧美二区| www.欧美色图| 开心九九激情九九欧美日韩精美视频电影| 国产精品网站导航| 日韩精品一区二区三区四区| 91网站在线播放| 国产福利一区在线| 日韩影视精彩在线| 亚洲国产成人一区二区三区| 在线免费不卡电影| 成人免费黄色大片| 久久精品国产精品亚洲综合| 亚洲精品精品亚洲| 国产亚洲短视频| 精品日韩成人av| 日韩亚洲电影在线| 欧美三级电影一区| 成人高清视频免费观看| 成人网男人的天堂| 国产福利电影一区二区三区| 久久精品久久精品| 蜜桃久久久久久| 国产综合成人久久大片91| 青青草国产成人99久久| 午夜精品视频一区| 亚洲sss视频在线视频| 久久这里只有精品6| 欧美成人在线直播| 欧美一级在线免费| 欧美久久久久久久久中文字幕| 日本丶国产丶欧美色综合| 99re热这里只有精品视频| 韩国av一区二区三区在线观看| 麻豆一区二区三| 免费精品视频在线| 亚洲永久免费视频| 悠悠色在线精品| 国产精品少妇自拍| 欧美激情综合在线| 国产精品二三区| 亚洲男人的天堂av| 一区二区三区在线高清| 亚洲福利视频导航| 日本不卡一区二区| 国产99精品在线观看| 91原创在线视频| 欧美性猛交xxxxxxxx| 欧美久久久一区| 精品国产髙清在线看国产毛片| 精品sm在线观看| 欧美tickle裸体挠脚心vk| 久久影院午夜片一区| 国产精品超碰97尤物18| 亚洲欧美色图小说| 天堂va蜜桃一区二区三区| 久久国产精品免费| 粉嫩aⅴ一区二区三区四区五区| 99久久婷婷国产| 欧美日韩视频不卡| 精品91自产拍在线观看一区| 日本一区二区免费在线观看视频| 亚洲欧美区自拍先锋| 午夜精品免费在线观看| 精品一区二区在线视频| eeuss影院一区二区三区| 欧美三级日韩三级国产三级| 欧美大片在线观看一区二区| 国产精品电影院| 午夜欧美在线一二页| 国产成人午夜精品影院观看视频| 99精品国产热久久91蜜凸| 91小视频免费看| 欧美顶级少妇做爰| 国产精品沙发午睡系列990531| 亚洲综合久久久| 日韩高清中文字幕一区| 国产高清精品在线| 色婷婷一区二区| 久久奇米777| 亚洲一区二区综合| 国产精品1024久久| 91精品国产一区二区人妖| 国产精品久久久久一区二区三区共| 亚洲国产中文字幕| 国产一区二区h| 欧美亚一区二区| 国产亚洲精品资源在线26u| 亚洲一区二区黄色| 国产**成人网毛片九色| 欧美精品自拍偷拍| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美日韩在线免费视频| 国产欧美一区二区精品秋霞影院 | 亚洲一区av在线| 一本久久a久久精品亚洲| 中文字幕成人网| 国产成人综合在线| 久久久久久久久免费| 国产精品影视网| 国产亚洲午夜高清国产拍精品| 精品亚洲成a人| 精品国产乱码久久久久久影片| 久久精品国产秦先生| 精品少妇一区二区三区视频免付费 | 国产成人在线视频播放| 久久久久一区二区三区四区|