`
mmdev
  • 浏览: 13234758 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Windows Mobile下使用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,不然控件本身会再处理一遍。

分享到:
评论

相关推荐

    mobileSelect移动端手机下拉控件

    2. **初始化控件**:在HTML或者对应的视图模板中创建mobileSelect元素,并通过JavaScript或C#代码对其进行初始化配置。 3. **设置数据源**:根据需求将数据绑定到控件,可以是静态数据或动态获取的数据。 4. **...

    Windows Mobile 2nd 开发黄金周(2):ASP NET 2.0移动Web应用控件介绍

    对于Web开发,Windows Mobile支持使用标准的Web技术,如HTML、CSS和JavaScript,但更高级的功能可以通过ASP.NET 2.0来实现。 ASP.NET 2.0是.NET Framework的一部分,它为Web应用开发提供了强大的工具集。在移动环境...

    C# windows mobile google map 地图

    由于Windows Mobile不支持原生的WebBrowser控件加载外部JavaScript库,我们可能需要使用第三方控件或者自定义控件来实现。例如,可以使用.NET Compact Framework中的WebBrowser控件,或者寻找专门为Windows Mobile...

    Visual Studio 2008 和 Windows Mobile 6.pdf

    Windows Mobile 6基于Windows Mobile 5.0开发,版本号为5.2,其内核依然使用Windows CE 5.0,并未采用最新的Windows CE 6.0。相较于前代产品,Windows Mobile 6主要引入了以下重要更新: - **支持HTML格式的邮件**...

    WindowsMobile服务器端程序开发精讲

    尽管移动Web 具有一定的优势(如无需安装即可使用),但在Windows Mobile 设备上开发移动Web 应用面临着许多挑战: 1. **屏幕尺寸**:移动设备屏幕较小,需要特别设计用户界面。 2. **网络连接**:移动设备的网络...

    Windows_Mobile实例开发

    根据给定文件的信息,我们可以提炼出一系列关于Windows Mobile实例开发的知识点,重点在于Windows Mobile下的Win32 API应用。以下是对这些知识点的详细介绍: ### 一、开发环境搭建 **概述**: - Windows Mobile...

    Windows Mobile 2nd 开发黄金周(3):使用ASP NET 2.0控制移动Web应用程序用户界面和外观设计

    **Windows Mobile 2nd 开发黄金周(3): 使用ASP.NET 2.0控制移动Web应用程序用户界面和外观设计** 在移动设备上开发应用程序时,优化用户体验和视觉设计至关重要。Windows Mobile平台为开发者提供了丰富的工具和技术...

    Windows/WindowsMobile网络编程(使用Win32API)教程,实现浏览器的例子

    在本文中,我们将深入探讨如何使用Win32 API进行Windows/Windows Mobile平台上的网络编程,以构建一个简单的网络浏览器作为示例。这个教程主要关注如何利用Microsoft的Win32 Internet函数来实现这一目标,这些函数...

    ASP.NET Mobile Controls开发Mobile Web应用

    - **Windows Mobile Web**:Windows Mobile操作系统曾是移动市场的重要玩家之一。开发针对该平台的应用程序时,需特别关注其特性和限制。 - **MISC平台**:随着移动通信市场的快速发展,运营商和服务提供商不断...

    jQuery移动端触屏滑动日期控件(mobiscroll时间控件)Demo

    **jQuery 移动端触屏滑动...在项目中使用Mobiscroll时间控件,首先需要引入相关的CSS和JS文件。通常,你可以通过CDN链接或者下载压缩包到本地来引入。在HTML文件中,你需要在`<head>`标签内添加如下代码: ```html ...

    20060324am--Windows Mobile 2nd 开发黄金周(3):使用ASP NET 2.0定制移动Web应用程序

    通过使用System.Web.UI.MobileControls命名空间下的控件,如MobilePage和MobileControl,开发者可以轻松地创建自适应布局,这些布局会根据设备的特性和浏览器能力动态调整。例如,`<mobile:Form>` 和 `<mobile:Label...

    Windows移动开发系列课程 使用ASP.NET 2.0中的移动Web控件创建跨浏览器Web应用

    ASP.NET 2.0中的移动Web控件集成了对多种手机和PDA设备的支持,包括基本的HTML控件以及针对特定设备的优化控件。 移动Web应用程序开发的关键在于适应性。ASP.NET 2.0通过Mobile Device Capabilities(设备特性)类...

    jquery Mobile

    在**C#**中封装**jQuery Mobile Controls**是为了更好地适应服务器端编程的需求,使.NET开发者能够更方便地在ASP.NET或Windows Phone等平台上使用jQuery Mobile的功能。C#封装通常涉及到创建自定义控件,这些控件在...

    Windows Mobile开发实例

    这是windows mobile 手机编程实例一书 目录: MAPI.................................................................................................................................23 线程事件同步..........

    基于Jquery Mobile的IOS主题

    3. **可触摸的控件(Touchable Elements)**:jQuery Mobile提供了一系列触摸友好的控件,如滑块(slider)、开关(toggle switch)、下拉菜单(select menu)等,它们都经过优化,能够响应触摸事件。 4. **网格...

    Windows Mobile 2nd 开发黄金周(1):使用ASP NET 2.0轻松创建移动Web应用程序

    - **Microsoft® ASP.NET移动控件**:这些控件专为移动设备设计,它们能够自动调整页面元素的大小、布局和外观,以适应不同的屏幕尺寸和分辨率。 - **ASP.NET 2.0移动特色**:包括了对多种设备和浏览器组合的支持,...

    VS2088控件简介

    本章节将主要介绍如何在VS2008平台上使用控件,特别是ASP.NET应用中的控件使用方法。 ##### 2.2 控件选择与使用 控件是构成用户界面的基本元素,它们可以实现数据展示、用户输入收集等功能。在VS2008中,控件的...

Global site tag (gtag.js) - Google Analytics