Wednesday, December 08, 2004

 

HTML Editor

1.
Introduction to MSHTML Editing
http://msdn.microsoft.com/workshop/browser/editing/mshtmleditor.asp

2.
经常被提到的具有诸多衍生产品的 The HTMLEditor http://itwriting.co.uk/htmleditor/ 确实能让人学到不少东西。

首先是using mshtml; 这个引用域名。

然后是ComSupport.cs,令人恐怖的声明,将IE的COM引入到项目中。作者真的是花了很大的力气来干这件事情,佩服。主要的interface有
//
public interface IPropertyNotifySink
public interface IOleClientSite
public interface IOleContainer
public interface IDocHostUIHandler
public interface IOleInPlaceUIWindow
public interface IOleInPlaceFrame
public interface IOleInPlaceSite
public interface IOleInPlaceSiteEx
public interface IOleDocumentSite
public interface IOleDocumentView
public interface IOleInPlaceObject
public interface IOleInPlaceActiveObject
public interface IOleObject
public interface IPersistMoniker
public interface IPersistStreamInit
public interface IOleCommandTarget
public interface IServiceProvider
//
public interface IHTMLEditHost
public interface IHTMLEditServices
public interface IHTMLEditDesigner
public interface IDocHostShowUI

HtmlSite.cs Implements the site on which mshtml is hosted
直接使用上面声明的各种interface,IE的Host还是很麻烦的。不知作者在那里找的文档。

整个项目的精华都在HtmlEditor.cs 中,代码组织得很好,看起来比较好懂。

剩下的都是些辅助功能

ComStream.cs This class implements UCOMIStream for an easier way to read back the output from IPersistStreamInit. Thanks to microsoft.public.dotnet.general

ComposeSettings.cs 储存用户设定

utils.cs HTML文档的Load,或者URL的Load。相当麻烦,而且不知道有没有相关文档。

EventHandlers.cs文件中是HtmlEditor.cs 中Event的声明,目前这个版本的Event似乎不全(记得不准),而且可以看到不断增加Event的痕迹。估计以后还会不断增加吧。

CSnap.cs implement IHtmlEditHost,这一部分显然离完成还差很远。它和HtmlEditor.cs中的timer一起工作,及时刷新编辑效果。

DownloadOnlySite.cs 处理由于脚本等不能在线编辑的情况。

3.
Using IHTMLEditDesigner
By Rob Manderson
From http://www.codeproject.com/internet/disabledrag.asp

Implementing snap-to-grid in an MSHTML based application
By Rob Manderson
http://www.codeproject.com/internet/snaptogrid.asp

4.
HTML Editor for VC++ 6.0
by irekz
http://www.codeguru.com/Cpp/I-N/ieprogram/displayinginformation/article.php/c7273/
和The HTMLEditor的实现方法大致一样,也很不错

5.
WYSIWYG Web Builder
By Pablo Vandermeer
From http://www.pablovandermeer.nl/web_builder.html

This project started as a replacement for ‘good-old’ Frontpage Express that used to be part of Windows. Just a simple, easy-to-use utility to generate web pages. Web Builder has almost all the features Frontpage Express had, but gives you much more freedom of where you put your web objects (such as images, text, tables etc). This means that the finished page will display in your browser exactly the way it was designed.
The program generates HTML (HyperText Markup Language) tags while you point and click on desired functions; you can create a web page without learning HTML. Just drag and drop objects to the page position them 'anywhere' you want and when you're finished publish it to your web server (using the build in Publish tool).


Features:
- No HTML knowlegde needed!
- Drag and drop of the HTML objects: Text, Lines, Images, Marquees and Tables.
- Form layout object to create forms, including actions, hidden fields etc.
- Supports Form fields: Editbox, TextArea, Checkbox, Radiobutton, Combobox and Button.
- Rich text support: text object can contain different fonts, colors, links and sizes.
- Option to add custom HTML for each object (Before Tag, Inside Tag, After Tag).
- Custom HTML object.
- Scripting object (VbScript and Javascript).
- ActiveX, JAVA, Flash, Windows Media player, Quicktime and other Plug-In support.
- Publish to local drive or a FTP server.
- Images can be drag'n dropped from explorer on the document to speed up development.
- Easy Photo Gallery creation.
- Banners.
- Rollover images.
- Bookmarks.
- Customize scrollbar colors for Microsoft Internet Explorer.
- Meta tags.
- Printing/Print preview.
- Clipboard Copy/Cut/Paste.
- Aligning functions.
- Undo/Redo.
- and much more!

Try it and let me know what you think of it.
Who knows maybe one day it will be a standard part of Windows...

This one is super cool. However, it is not free now!



<< Home

This page is powered by Blogger. Isn't yours?