Introduction
It seems to be a good idea to use a HTML based dialog in Pocket PC applications. Much of the work you have to do will be done by HTML engine. Pocket PC provides htmlview.dll that contains the HtmlView control. But a lot of developers find it difficult to use. The STHtmlDialog library provides an easy way to use a wrapper that encapsulates most of work done with the HtmlView control.
Using HTML in dialogs your can display a text using different fonts, colors and styles, use different HTML controls, display images, use links and many other features provided by HTML.
Keep also in mind that HTML provided by HtmlView control does not support some of the features you might expect as JavaScript, frames, etc.
What You Need
Background
To create a HtmlView control without the STHtmlDialog library you should:
- Add htmlview.lib library to your project. Call Project Settings dialog (Alt+F7), then go to the Link tab page and add htmlview.lib string to Object/library modules field.
- Include Htmlctrl.h files. Add
#include <Htmlctrl.h>
line to your StdAfx.h file.
- Load the HTML Viewer DLL by calling the
LoadLibrary
function. Specify Htmlview.dll in the lpLibFileName parameter.
- Register the HTML Viewer control class by calling the InitHTMLControl function.
- Create a window for the HTML Viewer control by calling the
CreateWindow
function. Specify DISPLAYNAME
in the lpClassName parameter
- Rewrite WindowProc function and handle
WM_NOTIFY
messages. Here you should give images and handle links (NM_HOTSPOT
and NM_INLINE_IMAGE
codes).
Using STHtmlDialog library
To create an HTML dialog using the STHtmlDialog library you should:
- Insert the STHtmlDialog.h and STHtmlDialog.cpp files into your project (use Project\Add To Project\Files menu item).
- Add the htmlview.lib library to your project. Call Project Settings dialog (Alt+F7), then go to the Link tab page and add htmlview.lib string to Object/library modules field.
- Change the super class of your dialog form
CDialog
to CSTHtmlDialog
.
- In the
OnInitDialog
method of your dialog you should add a call to the SetHtml
function that sets the HTML text.
Handling HTML events
Links
When a user clicks a link in HTML, the OnLink
virtual function of your dialog is called. To handle links you should override this function. The strHref parameter contains the href
attribute of the link that was clicked.
Images
To use images in HTML first register them. Call the RegisterHtmlImage
function during initialization for each image you are going to use in HTML. When you register an image you should specify a string that can be used in the HTML src
attribute of img
tag.
Conclusion
It's easy to create an HTML based dialog using STHtmlDialog
library. CSTHtmlDialog
wraps functionality of HtmlView control including images and links.