建站学习网,专业提供各类建站教程,网页素材,SEO资讯等建站资源!

网站模板_网站源码_网站素材_建站教程_建站学习网

当前位置:建站学习网 > 网页设计 > 脚本HTML教程 >

Windows Mobile下使用HTML控件

更新时间:2017-04-19整理编辑:建站学习网阅读:0

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

本文网址:https://www.dedexuexi.com/wysj/html/2996.html

本站部分文章搜集与网络,如有侵权请联系本站,转载请说明出处。

收藏此文 赞一下!() 打赏本站

如本文对您有帮助,就请建站学习网抽根烟吧!

支付宝打赏
微信打赏
网页中的内部、外部与脚本链接
« 上一篇2017年04月19日
用ASP.NET AJAX框架扩展HTML Map控件
2017年04月19日下一篇 »
  • 实现导航栏固定在顶部(吸顶效果),滚动页面万能方式
    0阅读
    1)滚动条不动时,是静态相对定位状态relative2)当页面滚动超出设置距离时,js改变样式属性切换定位状态变成fixed,同时再给top设置一个值css部分// 滚动条不动时.box{position: relative;height: 80px;width: 100%;z-index: 999...
  • HTML锚点用class样式教程
    0阅读
    JS部分:$(function() { $(window).scroll(function() { //为页面添加页面滚动监听事件 var wst = $(window).scrollTop() //滚动条距离顶端值 for (i = 1; i < 6...
  • python标准算法实现数组全排列的方法
    0阅读
    这篇文章主要介绍了python标准算法实现数组全排列的方法,实例分析了全排列的原理与Python实现技巧,需要的朋友可以参考下 本文实例讲述了python标准算法实现数组全排列的方法,代码来自国外网
  • python将ip地址转换成整数的方法
    0阅读
    这篇文章主要介绍了python将ip地址转换成整数的方法,涉及Python针对IP地址的转换技巧,需要的朋友可以参考下 本文实例讲述了python将ip地址转换成整数的方法。分享给大家供大家参考。具体分析如
  • 一个生成html的新方法
    0阅读
    使用范例: set fso=CreateObject(Scripting.FileSystemObject) set f=fso.CreateTextFile( server.mappath( ), true ) f.WriteLine( asp2html(youpage.asp) ) f.clos...
 
QQ在线咨询