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

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

?? chtmleditor.h

?? 用visual c++寫的一個超文本編輯器
?? H
?? 第 1 頁 / 共 2 頁
字號:

// ************************************************************************
// Internet Explorer HTML Access class written by Elm黃oft for Code Project
//                          www.elmue.de.vu
//                          kickme.to/elmue
// ************************************************************************

#if !defined(HTML_EDITOR_H__AF3E29B6_2B28_46D0_9D37_74D6C9E41B4A__INCLUDED_)
#define HTML_EDITOR_H__AF3E29B6_2B28_46D0_9D37_74D6C9E41B4A__INCLUDED_

#pragma once

#include <atlbase.h>          // CComPtr
#include <afxhtml.h>          // CHtmlView
#include "VS7/mshtml_VS7.h"   // IHTMLDomNode etc..
#include "VS7/MsHtmcid_VS7.h" // IDM_JUSTIFYLEFT etc..

#define WM_IDLEUPDATECMDUI  0x0363

#define _HKLM  HKEY_LOCAL_MACHINE
#define _HKCU  HKEY_CURRENT_USER
#define _HKCR  HKEY_CLASSES_ROOT

#if _MSC_VER > 1200 // > Visual Studio 6.0
#error "This code is written for Visual Studio 6. Download the version for Visual Studio 7 instead from CodeProject.com!"
#endif

#define HTMLEDIT_INIT_DONE   5000
#define HTMLEDIT_UPDATE_UI   5001
#define HTMLEDIT_KILLFOCUS   5002
#define HTMLEDIT_SETDEFAULT  5003
#define HTMLEDIT_NAVIGATED   5004
#define IDM_FONTSIZE_STYLE   5005
#define ID_TIMER_WAIT_BUSY   5006

class CHtmlEditor : public CHtmlView
{
public:

	// Forward declarations of embedded classes
	class cHtmlStyle;
	class cHtmlStyleSheet;
	class cHtmlDomNode;
	class cHtmlElement;
	class cHtmlTableCell;
	class cHtmlTableRow;
	class cHtmlTable;
	class cHtmlHR;
	class cHtmlImg;
	class cHtmlDocument;

	class CUniRichEdit;
	class cMisc;
	class CMsieWnd;
	class cStreamReader;

	// ####################################################

	class cMisc
	{
	public:
		static CString DecodeMime(CString s_Text);
		static CString EncodeHtml(BSTR bs_Html);
		static void    EncodeHtml(const WCHAR *u16_In, UINT *pu32_WcharToCopy, char *s8_Out, UINT *pu32_OutSize);
		static CString VarToStr(CComVariant &v_Variant);
		static CString RemoveTag(CString s_Html, CString s_Tag);
		static CString CutString(CString s_In, CString s_Cut, BOOL b_End);
		static void    RegWriteString(HKEY h_Class, CString s_Path, CString s_Key, CString s_Value);
		static void    RegWriteDword (HKEY h_Class, CString s_Path, CString s_Key, DWORD u32_Value);
	};

	// ####################################################

	// These definitions must have the same order as enum eProp !
	// C2059: syntax error : 'string' is caused by a
	// Compiler bug: Don't put a space behind "\" here !!!!!!!!!!
	#define __StyleNames { _T("background-color:"), \
	                       _T("color:"),            \
	                       _T("border:"),           \
	                       _T("border-width:"),     \
	                       _T("border-style:"),     \
	                       _T("font-size:"),        \
	                       _T("font-family:"),      \
	                       _T("width:"),            \
	                       _T("height:"),           \
	                       _T("text-decoration:") }

	class cHtmlStyle : public cMisc
	{
	public:
		enum eProp
		{
			E_BackgColor = 0,
			E_ForeColor,   // text color
			E_Border,
			E_BorderWidth,
			E_BorderStyle,
			E_FontSize,
			E_FontFamily,
			E_Width,
			E_Height,
			E_Decoration,
			// to be expanded here.. (update also __StyleNames !!)
		};

		cHtmlStyle(CComPtr<IHTMLStyle>     i_Style);
		cHtmlStyle(CComPtr<IHTMLRuleStyle> i_RuleStyle);

		virtual BOOL Valid();
		CString GetProperty(eProp e_Prop);
		BOOL SetProperty(eProp e_Prop, CString s_Value);

	protected:
		CComPtr<IHTMLStyle>     mi_Style;
		CComPtr<IHTMLRuleStyle> mi_RuleStyle;
	};


	// ####################################################

	class cHtmlStyleSheet : public cMisc
	{
	public:
		cHtmlStyleSheet(CComPtr<IHTMLStyleSheet> i_Sheet);

		virtual BOOL Valid();
		cHtmlStyle GetRule(CString s_Selector);
		BOOL SetProperty(CString s_Selector, cHtmlStyle::eProp e_Prop, CString s_Value);

	protected:
		BOOL AddRule(CString s_Selector, cHtmlStyle::eProp e_Prop, CString s_Value);

		CComPtr<IHTMLStyleSheet>                mi_Sheet;
		CComPtr<IHTMLStyleSheetRulesCollection> mi_Collect;
	};


	// ####################################################

	class cHtmlDomNode : public cMisc
	{
	public:
		cHtmlDomNode(CComPtr<IHTMLDOMNode> i_Dom);

		virtual BOOL Valid();
		cHtmlElement NextSibling();
		cHtmlElement PreviousSibling();
		BOOL Remove();
		BOOL Strip();
		cHtmlElement AppendChild(cHtmlElement i_NewChild);

	protected:
		CComQIPtr<IHTMLDOMNode, &IID_IHTMLDOMNode> mi_Dom;
	};


	// ####################################################

	class cHtmlElement : public cHtmlDomNode
	{
	public:
		cHtmlElement(CComPtr<IHTMLElement> i_Elem);
		const cHtmlElement& operator=(const cHtmlElement& El);
		operator CComPtr<IHTMLElement>();

		virtual BOOL Valid();
		CString GetTagName();
		CString GetClassName();
		cHtmlElement GetParent();
		UINT GetChildCollection(CComQIPtr<IHTMLElementCollection> &i_Collect);
		cHtmlElement FindParent(CString s_Tag);
		cHtmlElement SkipParents(CString s_Tags);
		CString GetAttribute(CString s_AttrName);
		BOOL SetAttribute(CString s_AttrName, CString s_Value);
		BOOL RemoveAttribute(CString s_AttrName);
		CString GetInnerText();
		BOOL SetInnerHtml(CString s_Html);
		BOOL IsEmpty();
		CString GetInnerHtml();
		CString GetOuterHtml();
		BOOL InsertHtml(CString s_Html, BOOL b_AtBegin, BOOL b_Inside);
		cHtmlStyle GetStyle();
		cHtmlElement AppendNewChild(CString s_Tag);

		static cHtmlElement GetElementFromCollection(UINT u32_Index, CComQIPtr<IHTMLElementCollection> &i_Collect);

	protected:
		CComQIPtr<IHTMLElement, &IID_IHTMLElement> mi_Elem;
	};

	// ####################################################

	class cHtmlTableCell : public cHtmlElement
	{
	public:
		cHtmlTableCell(CComPtr<IHTMLElement> i_Elem);

		virtual BOOL Valid();
		cHtmlTableRow GetParentRow();
		cHtmlTable    GetParentTable();
		BOOL SetColSpan(UINT Span);
		UINT GetCellIndex();
		UINT GetColIndex();
		UINT GetRowIndex();
		UINT GetColSpan();
		UINT GetRowSpan();
		BOOL Combine();
		void Split();
		BOOL SetInnerHtml(CString s_Html);
		void    SetBgColor(CString s_Color);
		CString GetBgColor();

	protected:
		CComQIPtr<IHTMLTableCell, &IID_IHTMLTableCell> mi_Cell;
	};

	// ####################################################

	class cHtmlTableRow : public cHtmlElement
	{
	public:
		cHtmlTableRow(CComPtr<IHTMLElement> i_Elem);

		virtual BOOL Valid();
		UINT GetCellCount();
		UINT GetRowIndex();
		BOOL DeleteCell(UINT Index);
		BOOL DeleteColumn(UINT Index);
		cHtmlTableCell InsertColumn(UINT Index);
		cHtmlTableCell GetCell     (UINT Index);
		cHtmlTableCell GetColumn   (UINT Index, BOOL b_ReturnPrevious =FALSE);
		cHtmlTableCell InsertCell  (UINT Index);
		cHtmlTable GetParentTable();

	protected:
		CComQIPtr<IHTMLTableRow, &IID_IHTMLTableRow> mi_Row;
	};

	// ####################################################

	class cHtmlTable : public cHtmlElement
	{
	public:
		enum eRules // Table border
		{
			E_RulesAll  = 0,  // Horizontal lines, vertical lines and box
			E_RulesHor  = 1,  // Horizontal lines and box
			E_RulesVert = 2,  // Vertikal   lines and box
			E_RulesBox  = 3   // Only Box (border around)
		};
		cHtmlTable(CComPtr<IHTMLElement> i_Elem);

		virtual BOOL Valid();
		CString GetBgColor();
		void SetBgColor(CString s_Color);
		BOOL DeleteRow(UINT Index);
		BOOL DeleteColumn(UINT Index);
		cHtmlTableRow GetRow   (UINT Index);
		cHtmlTableRow InsertRow(UINT Index, int CellCount);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜桃香蕉精品一区二区三区| 欧美日本免费一区二区三区| 美女免费视频一区二区| 亚洲成av人在线观看| 夜夜操天天操亚洲| 午夜伦理一区二区| 日本三级韩国三级欧美三级| 久热成人在线视频| 国产一区二区三区观看| 成人综合日日夜夜| 99国产精品一区| 色婷婷香蕉在线一区二区| 日本韩国欧美国产| 欧美一级片在线| 久久综合色天天久久综合图片| 国产亚洲综合av| 亚洲欧美在线视频观看| 亚洲国产中文字幕在线视频综合| 亚洲成人你懂的| www.日韩精品| a4yy欧美一区二区三区| 91亚洲国产成人精品一区二区三| 在线亚洲高清视频| 日韩你懂的在线观看| 国产精品伦理一区二区| 亚洲在线视频网站| 精品亚洲国内自在自线福利| 国产成人精品1024| 日本电影欧美片| 欧美videos大乳护士334| 国产精品毛片久久久久久| 亚洲精品欧美专区| 国产又黄又大久久| 91传媒视频在线播放| 2020日本不卡一区二区视频| 亚洲欧美日韩久久精品| 麻豆精品蜜桃视频网站| 色综合久久中文字幕综合网| 欧美一级夜夜爽| 亚洲精品中文在线影院| 国产一区二区主播在线| 欧美亚洲日本国产| 国产精品丝袜黑色高跟| 麻豆国产一区二区| 日本道在线观看一区二区| 精品国产伦一区二区三区免费| 亚洲色图欧美激情| 国产精品一区二区在线观看网站| 欧美视频第二页| 国产精品看片你懂得| 激情图区综合网| 欧美精品在线观看一区二区| 亚洲天堂成人在线观看| 国产精品一品二品| 欧美sm极限捆绑bd| 婷婷久久综合九色综合伊人色| av电影一区二区| 国产亚洲欧美激情| 韩国理伦片一区二区三区在线播放| 欧美色手机在线观看| 亚洲天堂成人在线观看| 99久久夜色精品国产网站| 久久久久国产精品麻豆| 国内精品伊人久久久久影院对白| 欧美老年两性高潮| 午夜视频一区在线观看| 欧美系列日韩一区| 午夜视频一区二区三区| 欧美日韩电影在线| 午夜电影一区二区三区| 欧美日韩综合在线免费观看| 伊人色综合久久天天人手人婷| av不卡一区二区三区| 国产精品动漫网站| 91香蕉国产在线观看软件| 国产喂奶挤奶一区二区三区| 紧缚捆绑精品一区二区| 久久综合九色综合欧美98| 国产精品1区二区.| 国产精品色婷婷| 97久久超碰国产精品| 亚洲视频网在线直播| 91久久精品网| 日韩精品1区2区3区| 亚洲综合视频在线观看| 欧美影视一区二区三区| 亚洲午夜精品一区二区三区他趣| 欧美性大战久久| 麻豆91在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品一区不卡| 日韩美女视频19| 欧美精品色综合| 精品亚洲成a人| 中文字幕一区二区三区四区| 91九色最新地址| 精品一区二区三区免费| 中文字幕中文乱码欧美一区二区| 色婷婷综合久色| 奇米四色…亚洲| 国产午夜精品一区二区三区视频 | 麻豆国产精品一区二区三区 | 国产v日产∨综合v精品视频| 自拍视频在线观看一区二区| 91精品1区2区| 极品少妇一区二区| 亚洲乱码国产乱码精品精可以看| 4438x亚洲最大成人网| 成人精品亚洲人成在线| 婷婷丁香激情综合| 国产精品污污网站在线观看| 欧美性猛交一区二区三区精品| 激情成人综合网| 一区二区三区四区不卡在线| xfplay精品久久| 欧美伊人精品成人久久综合97 | 日韩美女啊v在线免费观看| 日韩一区二区精品葵司在线| 99热这里都是精品| 日本成人在线一区| 亚洲综合丝袜美腿| 中文字幕日韩一区| 2019国产精品| 欧美日韩国产另类一区| 成人免费毛片嘿嘿连载视频| 日韩不卡一区二区| 亚洲精品成人少妇| 中文一区一区三区高中清不卡| 欧美一区二区在线不卡| 色噜噜久久综合| 高清不卡一二三区| 国产呦萝稀缺另类资源| 日韩制服丝袜av| 一区二区三区日韩精品视频| 国产欧美一区二区精品秋霞影院| 欧美一区二区三区在| 欧美在线播放高清精品| 91亚洲国产成人精品一区二三| 国产91丝袜在线播放九色| 蜜臀av一区二区在线观看| 香蕉av福利精品导航| 亚洲最大成人综合| 亚洲与欧洲av电影| 亚洲乱码国产乱码精品精98午夜| 国产精品成人在线观看 | 91老司机福利 在线| 成人免费毛片a| 懂色av一区二区夜夜嗨| 国产精品亚洲а∨天堂免在线| 久久99精品国产91久久来源| 蜜桃久久久久久久| 日韩黄色在线观看| 麻豆国产精品一区二区三区| 激情亚洲综合在线| 国产精品一区二区久激情瑜伽| 国产成人免费xxxxxxxx| 成人深夜视频在线观看| 99国产一区二区三精品乱码| 91偷拍与自偷拍精品| 色综合久久综合中文综合网| 欧美在线你懂得| 日韩一区国产二区欧美三区| 7777精品伊人久久久大香线蕉超级流畅 | 国产一区二区免费看| 国产精品一区二区在线播放 | 欧美xxxxxxxxx| 26uuu国产日韩综合| 久久精子c满五个校花| 欧美激情在线看| 亚洲色图制服诱惑| 亚洲成人免费电影| 精品一区二区三区免费视频| 国产一区久久久| 91美女视频网站| 欧美美女一区二区三区| 精品国产一二三| 国产精品国产三级国产a| 亚洲已满18点击进入久久| 久久精品免费看| 国产69精品久久99不卡| 欧美日韩在线综合| 久久这里只有精品6| 亚洲乱码国产乱码精品精98午夜| 亚洲不卡在线观看| 国产成人在线观看免费网站| 色综合咪咪久久| 久久日一线二线三线suv| 伊人夜夜躁av伊人久久| 国精产品一区一区三区mba桃花| 成人一道本在线| 日韩欧美亚洲国产精品字幕久久久 | 国产精品一区专区| 欧美体内she精视频| 国产欧美精品一区| 日本女人一区二区三区| 99精品热视频| 久久久久久久久99精品| 性久久久久久久| 91精品福利在线| 国产精品乱人伦一区二区|