Windows Mobile下使用HTML控件 Mobile

Windows Mobile下使用HTML控件 Mobile, 控件, Windows, HTML 在某些特殊的应用场合,我们很想要一个类似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,不然控件本身会再处理一遍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值