了解 Windows Phone 7 网页浏览器控件 – Part 1
Windows Phone 7的地理位置服务(Location Service)

以上内容参考了Jake Lin的视频。 (版权所有,转载请标明出处)
Windows Phone 7的地理位置服务(Location Service)
Windows Phone 7的地理位置服务(Location Service)
iiiii 使用Location Service 能够帮助开发者为Windows Phone 开发具备位置感知功能的应用程序。Location Service能够从GPS,Wi-Fi和移动网络基站等多种数据源获得位置信息。根据应用程序的需要,Location Service从 一个或多个数据源计算出位置信息。有效的平衡电池的消耗和位置信息的准确性(例如当电池的电量较低时,GPS定 位的准确度将降低)。为应用程序提供基于事件的统一接口。当用户的地理位置发生改变时,将触发唯一的事件,并 重新定位,获得新的定位信息。
二、使用地理位置服务
需要使用引用
Syபைடு நூலகம்tem.Device
和
System.Observable
这两个命名空间 模拟器不提供GPS服务,.Wi-Fi服务和基站服务,且模拟器不提供回调。所以无法直接在模拟器上实现定位,模拟器 只能实现状态更新而没有数据返回。 地理位置服务示例代码:
GeoCoordinateWatcher watcher; private void StartButton_Click(object sender, RoutedEventArgs e) { if (watcher == null) { //GeoPositionAccuracy.High定义定位的精度水平,Hight表示高 watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); //表示定位更新频率,即设定门限值,频率高则耗电高,因为它随时需要定位新的方位 watcher.MovementThreshold = 20; //状态改变事件,如数据改变,服务停止等
Windows Phone7-Passolo 解析规则应用

Passolo解析规则应用Passolo之所以强大,主要一个原因是它的解析器,可以自定义解析规则用来解析各种特殊格式的对象。
本例示例的n文件是软件Cleanse Uninstaller Pro的语言文件,其内容格式大致如下:frmmain-Refresh Listfrmmain-Large Iconsfrmmain-Detailsfrmmain-Show info panelfrmmain-Filterfrmmain-List Viewfrmmain-Delete Entryfrmmain-Exit....其中的-号后的单词(红色标记)是我们要提取翻译的对象,如:Exit等,用Passolo默认的解析器无法正确解析,故此时需要自定义解析规则来提取目标文字。
一、操作流程1.启动Passolo主程序,依次从菜单“工具”-“插件”-“解析器”-文本文件解析器-“设置”,弹出“文本解析器规则定义”对话框,如下图所示:2.选择“自定义规则”-“添加新规则”,规则名称输入Cleanse Uninstaller_LangFile(*.lan) 后“确定”返回原对话框,在“用于这些文件类型”上输入自定义规则应用的文件类型(扩展名),本例即lan。
3.创建自定义规则,由于本例中的内容为字串,“添加字串标签”,设置字串开始为- ,结尾为行尾(行尾符号为<EOL>),“确定”。
对于更加复杂的内容,可以使用正则表达式:4.验证自定义规则是否正确,可点击“预览”按钮,在展开的窗体中加载示例语言文件(n)预览,选中的字串会以黄色突出显示,是否正解解析一目了然。
5.保存自定义解析规则,关闭“插件”对话框,后面参考Passolo汉化三步曲汉化翻译,此处略过不再赘述,特别注意的是Passolo会自动优先解析自定义规则,如果无法正确选择自定义规则,请手动按如下顺序操作:“源文件”-“属性”-“选项”-“来源选项”-“使用规则”手动选择自定义的解析规则。
7ASPNETWeb服务器控件

7ASPNETW由艮务器控件第7章 Web 服务器控件7.1 ................72 ................. 服务器控件简介 ...... .基本Web 服务器控件 7.2.1...... .............................. .Label 控件 7.2.2...... ............................. Button 控件723...... ..................... .LinkButton 控件7.2.4......................... I mageButton 控件 725...... ........................... TextBox 控件7.2.6...................... DropDownList 控件 727 .................................... ListBox 控件7.2.8CheckBox 控件 和 CheckBoxList 控件7.3 731 .......................... .数据验证机制介绍 7.3.2 ........ RequiredFieldValidator 捽件7.3.3 ................ C ompareValidator 捽件7.3.4 .................... RangeValidator 捽件7.3.5 RegularExpressionValidator 捽件7 3 6 ..................C ustcm'/alidatcr 捽件RadioButtonList 控件7.2.10 ................................ .Panel 控件 ...................................................... ..改宿验证专治7.3.7 ............. V alidationSummary 控件第7章 Web服务器控件7.1 服务器控件简介创建Web窗体页时,可以使用以下控件类HTML服务器控件HTML服务器控件以HTML标记为基础而衍生出来的服务器控件,HTML服务器控件比HTML标记多了两个属性,一个是“ runat="server” ”,一个是“ id="控件名称"”。
7ASPNETWeb服务器控件

7ASPNETWeb服务器控件7.1 服务器控件简介7.2 差不多Web服务器控件7.2.1 Label控件7.2.2 Button控件7.2.3 LinkButton控件7.2.4 ImageButton控件7.2.5 TextBox控件7.2.6 DropDownList控件7.2.7 ListBox控件7.2.8 CheckBox控件和CheckBoxList控件7.2.9 RadioButton控件和RadioButtonList控件7.2.10 Panel 控件7.3 数据验证控件7.3.1 数据验证机制介绍7.3.2 RequiredFieldValidator控件7.3.3 CompareValidator控件7.3.4 RangeValidator 控件7.3.5 RegularExpressionValidator控件7.3.6 CustomValidator 控件7.3.7 ValidationSummary控件 Web服务器控件服务器控件简介创建Web 窗体页时,能够使用以下控件类型:HTML 服务器控件HTML 服务器控件以HTML标记为基础而衍生出来的服务器控件,H TML 服务器控件比HTML标记多了两个属性,一个是“runat="server" ”,一个是“id="控件名称" ”。
这两个属性的作用是控件能够在服务器端作为一个对象使用。
默认情形下,服务器无法使用Web 窗体页上的HTML 元素,然而,通过将HTML 元素转换为HTML 服务器控件,可将其公布为可在服务器上编程的元素。
如果要将ASP网页改写为网页,能够通过在原先的HTML 标记中增加这两个属性,从而专门容易的完成转换工作。
Web 服务器控件HTML 服务器控件只是使编程更简便,在功能上并没有超越HTML标记。
而Web 服务器控件则是为了超越HTML标记而产生的,Web 服务器控件比HTML 服务器控件具有更多内置功能。
Web控件

1 服务器控件 2 HTML控件 3 Web服务器控件 4 Web服务器验证控件 5 服务器控件绑定
3 Web服务器控件
命名空间: System.Web.UI.WebControls
前缀<ASP:> Runat=“server”
ControlToValidate="要验证的控件ID" errorMessage="错误信息“ Display="Static|Dymatic|None">
MinimumValue = "最小值" MaximumValue = "最大值" Type = "String|Integer|Double|DateTime|Currency “
<asp:TextBox id="txtName" runat="server“ Text=“Hello“/>
Web服务器控件的层次
基本Web服务器控件
1. Literal控件
<asp:Literal id="Literal1" Text=" " runat="server"/>
2. Label控件
</ASP:CompareValidator>
CompareValidator举例
<ASP:CompareValidator id="CompareValidator1 " runat="Server “ ErrorMessage="必须大于TextBox1的值" ControlToValidate="TextBox2" ControlToCompare="TextBox1" Operator="GreaterThan" Type="Integer"> </ASP:CompareValidator>
Windows Phone 7 广告服务应用 - AdMob 篇

前言在我们的网站上(或是blog) 通常我们会加入一些由广告服务商提供的广告来源,进而增加一些网站的收益,那么在Windows Phone 7 上,我们是不是也可以用类似的方式来增加收益呢?答案是可以的,接下在本篇会介绍该如何在您的应用程序中加入这样的功能。
在开始之前,如果您还没有下载过Windows Phone 7 开发工具,那么您可以立刻前往下载,Windows Phone 7 是一个崭新的平台,而且开发工具是完全免费的,任何人都可以开发Windows Phone 7 的应用程序。
下载的地址在下面这边/downloads/en/details.aspx?FamilyID=04704acf-a63a-4f97-952c-8b51b34b00ce&displaylang=en那么应该要怎么帮应用程序的加入这样的功能呢?步骤大致如下1申请发布商ID (账号)2下载应用程序使用的组件(或是自行开发)3将功能加入你的应用程序中接下来,正式开始介绍如何在您的应用程序中加入admob 的功能。
申请发布商ID (账号)首先我们必须要先申请一个发布商的账号,先进到admob 的网站,位置是/在第一次使用时,必须要建立一个新的账号,点击立即注册的按钮进行注册(如果您看到的网站是英文接口,您可以在网站页面的最下方找到语言调整的选项)接下来会进到注册页面,如下图的样子,输入您个人的相关数据,要注意粗体字的字段都是必填的;而由于注册之后,系统会寄发一封验证的Email 给您,请务必要确认Email 地址的正确性。
接下来,您会收到由admob 寄发的一封通知email,其中会有验证的连结,如下图点击验证的连结之后,会自动的连到admob 网站,并且启动您的账号,这时候会看到如下的验证成功画面在这个画面中,请选择”新增您的第一个网站” (如下图所示的位置)接下来会进到选取应用程序类型的画面;在这个画面中是选取平台的项目,由于Windows Phone 7 是新的平台,在这边还看不到这个项目,不过没关系,我们可以用”移动电话网络”这个项目来做,像是下图*注:由于实际使用时,程序代码中是利用WebClient对服务端发出要求提取响应之后由程序代码来做相关的显示,所以可以利用”移动电话网络”的方式来做点选之后,在下方会出现细节的数据要您填写,这边做个简单的范例如下图名称的地方输入您网站的名称,而网站URL 的地方笔者是输入blog 的网址来替代,类别是选择”社群”;而网站说明的地方,可以填入您网站的简介或是流量等信息,让要刊登广告的客户能比较了解您网站的性质以及流量,提高客户将广告放置在您这边的兴趣。
Windows Phone7
1引夸 随着移动 设备 的普 及 , 3 G 甚至4 G网络设施 的兴 建 , 以及微 博 , F AC E B O OK
化 等 工作 。
数 据库 的主 要实 体如 下 : 用 户实体 { 用 户I D, 用 户名 , 邮箱 。 密码, 身份 I D} 文 章实 体 { 文章I D, 文章作 者 , 用 户I D, 文章 内容 , 文章 标题 , 文 章类 型 , } 为 了更 清楚 的明 白各实 体 之间 的关 系可 以使 用E — R图表示 。 E — R图是用 来描述 某一 组 织( 单位) 的概 念模 型 , 提供 了表 示实体 、 属 性和 联系 的方 法 。 构成 E — R图的基 本 要素是 实体 、 属 性和 关系 。 实 体是 指客观 存在 并可 相互 区分 的事 特; 属性指指实体所具有的每一个特性。 图中包 含的 实体有 用户 和文章 。 图 中也 标 出了用户 和 文章 , 文章 之 间有联 系, 以及 用户 和文 章实 体他 们各 自拥有 的属 性 。 用户 实体和 文章 实体 的联 系类 别为 发表 , 图中也 标出 了实体 与实 体之 间的对 应 关系多 对多 或一对 多 的关系 。 可 以看到 , 他 们 是一 对多 的 关系 。 3 . 2 数 据库 物理 结构设 计 数 据库 物理设 计 是后半 段 。 将一 个给 定逻辑 结构 实施 到具体 的环境 中时 , 逻辑 数据模 型要选 取一个 具体的 工作环 境 , 这 个工 作环境提 供了数据 存储 结构 与存 取方 法 , 这 个过程 就 是数据 库 的物 理设 计 。 ( I ) 文件组 织方 式 : 索 引顺序 存取 方法 。 由于 本系 统结构 简单 , 数据量 少 , 因 此 采用最 简 单的 索引 方式 组织 数据 , 可 以加 快 编程速 度 。 ( 2 ) 存 取路 径 : 直 接放在 项 目所 在硬盘 的专 门文件夹 里。 由于本系 统结 构简 单, 数 据量 少 , 基 本不 存在容 灾 问题 , 因此 , 就放在项 目所 在硬盘 的位置 , 便 于查 找。 ( 3 ) 数据分布 : 数据库数据文件备份、 日志文件备份等由于只在故障恢复时 才使 用 , 而且数据 量很 大 。 因此放 在磁带上 。 应用数 据 , 索 引和 日志使 用频繁 , 要 求 响应 时间 短 , 因 此放在 磁 盘上 。 3 . 3 数 据库 逻辑 结构 设计 系统必 须要有 相应 的数据 库 , 本系统 的后 台数据 库是My s Q L , 就需 要将数
Windows Phone 7
Note Always returns TRUE. Windows Phone 7 does not support removable storage.* For more details on storage support in Windows Phone 7, see the “Windows Phone 7 security and management” article in this series. Always returns TRUE. Windows Phone 7 does not include infrared transmissions capabilities. Always returns TRUE. Windows Phone 7 does not support email synchronization via the desktop with Windows Mobile Device Center or ActiveSync. This policy was not intended to block synchronization of media files (such as music, pictures, or video files) via Microsoft Zune® software on a PC or iMac, and does not block the media synchronization capability on Windows Phone 7. Always returns TRUE. Windows Phone 7 does not include Remote desktop functionality. Always returns TRUE. Windows Phone 7 does not support network sharing from a device. ** Always returns TRUE. This is an optional EAS policy. Always returns FALSE. Windows Phone 7 does not support device encryption or removable storage. For more details on storage support in Windows 7, see the “Windows Phone 7 security and management” article in this series. Always returns FALSE. Windows Phone 7 does not support device encryption.
Windows常用控件介绍
控件是Windows应用程序的图形界面的重 要组成部分,用户可以通过控件完成与应 用程序的交互。控件其实在MFC中是对数 据和方法的封装,当然控件就有自己的属 性和方法。在MFC中,所有的控件都是由 CWnd类派生来的,所以控件可以作为对 话框的子窗口而创建。本章以对话框程序 为基础介绍一些基本和常用的控件,学习 掌握Windows控件一般的使用方法和步骤。
2、列表框控件常用方法
为列表框关联一个控件类型的变量,可以
利用这个变量来调用列表框控件类CList
Box里面的方法。
列表框类 CListBox方法
描述
AddString()eteString() 从列表框中删除一个字符串
GetCurse()
返回选中字符串的索引
GetText()
5.1 Button按钮
• Button按钮是在Windows应用程序中最 常见的控件之一。如确定、取消、QQ 登录,Button按钮无处不在。这一节中 主要介绍Button按钮的添加,利用其控 件变量和消息响应函数来完成应用程 序的操作。
5.1.1 创建一个“打开”按钮
• 利用第4章所述方法,创建一个项目名 为Test1的对话框应用程序。为对话框 拖一个ID为IDC_BUTTON_OPEN, Caption为“打开”的Button按钮。同时删 除对话框中间的静态文本“TODO: 在这 里设置对话框控制”。
最后的程序要实现,初始状态“打开”按钮可用,“关闭”按钮 不可用。单击“打开”按钮弹出对话框提示“以打开”,之后 “打开”按钮不可用。单击“关闭”按钮,弹出对话框提示“已 关闭”,恢复初始状态。
1、定义一个BOOL型标记变量 因为程序要实现关闭打开轮流操作,所以需要一个变量标 记当前状态是打开还是关闭。我们选择BOOL变量来表示, TRUE为“打开”可用,FALSE为“关闭”可用。下面在对话框类 声明中定义一个名为m_bOpen的BOOL型变量,并在构造 函数中初始化为TRUE。代码如下:
调用ocxActiveX控件详解(做一个简单的ocx控件)
调⽤ocxActiveX控件详解(做⼀个简单的ocx控件)最近做的项⽬都和插件有关,就是在页⾯中调⽤插件的⽅法,然后进⾏操作。
插件就是ocx ActiveX控件,具体的说明可以⾃⼰去了解⼀下,在这⾥就不做赘述。
具体调⽤⽅式很简单:1、在页⾯中写⼀个object标签,标签中定义⼀个classid属性,这个属性是获取到插件的关键<object id="ocx" classid="clsid:c998ae90-5ffc-4a58-97d2-490a414bd6e5"></object>2、直接在js中获取到这个dom,然后就可以调⽤插件中的⽅法let ocx = document.getElementById("ocx");let sum = ocx.Add(1,2);在使⽤过程中遇到了很多问题,于是⾃⼰去摸索了⼀下如何制作⼀个ocx插件,也能够帮助⾃⼰加深⼀些使⽤⽅⾯的了解。
这⾥使⽤Visual Studio Community 2019,先下载必须的组件和依赖包。
使⽤C++的桌⾯开发和Visual Studio扩展开发这两项必须要勾选。
然后桌⾯开发中还需要勾选与MFC相关的库,如果不勾选的话⽆法新建MFC项⽬勾选完成后就开始下载相关的包,这个过程需要等待⼀会。
下载完成后就可以开始新建⼀个项⽬,在这⾥选择MFC ActiveX控件,命名为MyMFCActiveXControl然后就会⽣成⼀系列控件名,头⽂件等等的⽂件名,这⾥基本上不⽤做什么操作,直接完成就好。
唯⼀需要注意的是⼀个控件类型ID,这个ID我们后⾯会⽤到。
点击完成后,就会⽣成⼀系列与插件相关的⽂件,这些⽂件⾥⾯包含了插件的类,头⽂件,描述等信息。
因为不是专门学习C++的,不对⾥⾯的原理和结构进⾏探究,就取我需要的内容就⾏。
来找⼀找那个神奇的classid。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
The Web Browser (Ph) Application 前些日子,有关注我 Blog 的朋友应该都已经注意到,我发表了 Web Browser (Ph) Application 上架 Marketplace 的相关信息,也分享了退件及通过审核的一些过程。现在让我将开发这个应用程序的经验与大家分享。
除了个人懒惰没看清认证的一些规则导致退件的经验之外,Web Browser(Ph) 于开发中有两个问题是最重要的,第一个当然是中文输入法,此问题的解法其实很简单,就是必须要拥有相关的字及注音码,接着就只要做接口就好了,如果对此有兴趣及需要 ,我建议读者们参考 David 老师与光岩信息提供的控件(因为我的字库其实并不完整)。
第二个问题就是,Web Browser (Ph) 是如何知道,使用者点选到了某个输入框?又是如何将输入的中文字放到输入框里? Web Browser 控件其实用法分为简易与深入两种,简易的将其拿来做为显示某个网页用,深度的用法则是在显示网页后,尝试将整个网页的控制权拿在手里,Web Browser (Ph) 即是深度的用法。
OK,那么 Web Browser(Ph) 如何知道使用者点选到了某个输入框?很简单,Web Browser(Ph) 有个函式:InvokeScript,可以让开发者在 Web Browser 读入网页后,呼叫网页中的某个 JavaScript,原意是想让开发者在使用 NavigateToString、Navigate 浏览本机网页时能有个沟通的管道。
Web Browser(Ph) 将此技术发挥到极致,经测试得知,InvokeScript 其实不仅只能在浏览本机网页,浏览一般网页时也可正常运作,这意味着 Web Browser(Ph) 可以在使用者浏览网页后,以 InvokeScript 来呼叫特定的 JavaScript 函式,那这有什么用呢?
细想一下,有哪个 JavaScript 函式可以让你列举出网页上所有的 input type=text 控件? document.getElementsByTagName !!
但此路不通,因为 InvokeScript 仅能呼叫函式,像 getElementsByTagName 这种挂在某个对象下的函式是无法透过 InvokeScript 呼叫的。
所以我们得找另一条路,有哪个函式可以让 InvokeScript 正常呼叫,又能达到与 getElementsByTagName一样的效果?答案很明白,就是 eval 函式,这个函式可以让我们执行大多数的 JavaScript 程序代码,这便是 Web Browser (Ph) 所仰赖的关键技术。
关于 Tel/Sms Tag Web Browser 控件很强,但是其有一点与内建的 IE 不同,那就是在内建的 IE 下是可以解析 Tag 的,透过这个机制,使用者可以在浏览到使用此 Tag 的网页时,点选该链接来拨出电话,但 Web Browser 控制项目前并不支持这个机制,这是已知的限制。
这些 tel tag 最常出现在搜索引擎的网页,例如 Google Maps。 图1 于内建的 IE 上点选电话部份的链接,会启动拨号动作。 图2 但 Web Browser 控件并不支持这种应用,也就是其不认识 ,要解决这个问题,我们得自己来处理,前面所提到的 InvokeScript+Eval 的技巧,正巧可用上。
首先,我们得想办法在 Web Browser 加载网页后,执行一段 JavaScript,搜索页中所有的 元素,紧接着解析其 href attribute,只要发现是以 tel: 开头,即将其改为 #,并挂上 onclick 事件来处理使用者按下连结的后续动作。
MainPage.xaml x:Class="DetectTelTag.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" shell:SystemTray.IsVisible="True">
VerticalAlignment="Top" Height="537" Width="456" Margin="0,64,0,0" LoadCompleted="webBrowser1_LoadCompleted" /> VerticalAlignment="Top" Width="160" Click="button1_Click" />
MainPage.xaml.cs using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes; using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using System.Windows.Threading;
namespace DetectTelTag
{
public partial class MainPage : PhoneApplicationPage
{
DispatcherTimer _timer = new DispatcherTimer();
// Constructor
public MainPage()
{
InitializeComponent();
_timer.Tick += (s, args) =>
{
try
{
//呼叫 DetectActiveTel 來偵測使用者是否有按下某個 tel 連結
string para = (string)webBrowser1.InvokeScript("DetectActiveTel");
if (!string.IsNullOrEmpty(para))
{
//使用者按下了 tel 連結,啟動撥號
string[] parameters = para.Split(';');
PhoneCallTask task = new PhoneCallTask();
task.PhoneNumber = parameters[0];
task.DisplayName = parameters[1];
task.Show();
}
}
catch (Exception)
{
}
};
_timer.Interval = TimeSpan.FromSeconds(1);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
//必須在 Navigate 前,設定 IsScriptEntabled 為 true 才能使用 InvokeScript
webBrowser1.IsScriptEnabled = true;
webBrowser1.Navigate(
new Uri("http://maps.google.com.tw/?q=Taipei%20101", UriKind.Absolute));
}