手机
当前位置:查字典教程网 >网页设计 >脚本HTML教程 >Windows Mobile下使用HTML控件
Windows Mobile下使用HTML控件
摘要:在某些特殊的应用场合,我们很想要一个类似IE功能的模块,定制自己的功能。HTML控件现在向我们张开了怀抱。稍稍奇怪的是,它并不完全支持WAP...

 在某些特殊的应用场合,我们很想要一个类似IE功能的模块,定制自己的功能。

HTML控件现在向我们张开了怀抱。稍稍奇怪的是,它并不完全支持WAP协议。看来,IE还是做了自己的解析。

首先,我们要注册一下控件。把Htmlctrl.h包含进来,调用InitHTMLControl()函数,里面的参数为应用程序句柄。以下代码在MFC中使用:

VERIFY(InitHTMLControl(AfxGetInstanceHandle()));

DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS;

RECT rect;

GetClientRect(&rect);

m_hHtmlWnd = ::CreateWindow (DISPLAYCLASS,

NULL,

dwStyle,

rect.left,

rect.top,

rect.right,

rect.bottom,

m_hWnd,

0,

::AfxGetInstanceHandle(),

NULL);

::SetWindowLong(m_hHtmlWnd, GWL_ID, 12321);

::SetFocus(m_hHtmlWnd);

::SendMessage(m_hHtmlWnd, WM_SETTEXT, 0, (LPARAM)(LPCTSTR)_T(""));

在这里,m_hHtmlWnd是某个Dialog的HWND型成员变量。

然后,在Dialog的WindowProc函数中,使用如下方法:

switch(message)

{

case WM_NOTIFY:

{

WCHAR wszURL[1000] = {0};

NM_HTMLVIEW* pnmHTMLView = (NM_HTMLVIEW*)lParam;

switch (pnmHTMLView->hdr.code)

{

case NM_HOTSPOT://点击Url

break;

case NM_DOCUMENTCOMPLETE://文档显示结束

break;

case NM_INLINE_IMAGE://显示图片

return TRUE;

}

}

break;

default:

break;

}

在上面的几个关键点,NM_HOTSPOT是用户点击了网页链接,通过访问pnmHTMLView->szTarget可以得到网页内容。SendMessage可以将得到的内容赋给控件,控件会自己解析网页元素。如果有图片链接,将会触发NM_INLINE_IMAGE动作。此时亦需要通过访问pnmHTMLView->szTarget来得到图片。如果得到了图片的内容,可以使用下面的代码来显示:

INLINEIMAGEINFO imageInfo;

imageInfo.dwCookie = pnmHTMLView->dwCookie;

imageInfo.bOwnBitmap = FALSE;

imageInfo.hbm = hBitmap;

BITMAP mInfo;

GetObject(hBitmap, sizeof(BITMAP), (LPBYTE)&mInfo);

imageInfo.iOrigWidth= mInfo.bmWidth;

imageInfo.iOrigHeight = mInfo.bmHeight;

::SendMessage(pnmHTMLView->hdr.hwndFrom, DTM_SETIMAGE, 0, (LPARAM)(INLINEIMAGEINFO*)&imageInfo);

上面代码中hBitmap为图片位图句柄。

我在处理图片的时候,遇到的问题是。使用SHLoadImageFile函数后,需使用DeleteObject函数释放句柄内存。否则将有内存泄露。MSDN没有提及这一现象。

如果未得到图片内容,想在网页相应的位置显示一个叉,DTM_SETIMAGE参数应改为DTM_IMAGEFAIL。

值得注意的是,如果我们处理了NM_HOTSPOT或NM_INLINE_IMAGE消息,需要返回TURE或FALSE,不然控件本身会再处理一遍。

【Windows Mobile下使用HTML控件】相关文章:

表单元素属性readonly和disabled使用对比

HTML 和 XHTML的区别

html表单属性readonly和disabled的使用方法

vb获得一页的html代码

HTML网页设计中关于字体设计

html 中 #include file 的用法示例介绍

HTML 几种特别分割线特效

在C++Builder中使用Compress Html Help

CSS布局时使用HTML标签

Visual Basic中如何处理HTML文档和剪贴板

精品推荐
分类导航