命令输入错误,应该是:control userpasswords2另外也可用命令:rundll32 netplwiz.dll,UsersRunDll (注意字母大小写)或是直接编辑注册表也行。
命令输入错误,应该是:control userpasswords2另外也可用命令:rundll32 netplwiz.dll,UsersRunDll (注意字母大小写)或是直接编辑注册表也行。
做项目开发的时候,经常会碰到插入与修改很多数据到服务器,如何做到批量修改,减少往返提交数据,是每个程序员需要考虑的问题.下面的例子就是以NORTHWIND表中EMPLOYEES表中的数据在GRIDVIEW进行一次性编辑 前台代码....我只写控件部分 <asp:GridView ID="GridView1" runat="server" Font-Size="12px" CellPadding="3" AutoGenerateColumns="False"DataKeyNames="employeeid" ><HeaderStyle BackColor="#EDEDED" /><Columns><asp:TemplateField HeaderText="编号"><ItemTemplate><asp:TextBox ID="employeeid" runat="server" Text='<%#Eval("employeeid") %>' ></asp:TextBox></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="姓"><ItemTemplate><asp:TextBox ID="lastname" runat="server" Text='<%#Eval("lastname") %>'></asp:TextBox></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="名"><ItemTemplate><asp:TextBox ID="firstname" runat="server" Text='<%#Eval("firstname") %>'></asp:TextBox></ItemTemplate></asp:TemplateField></Columns></asp:GridView> <asp:Button ID="Button1" runat="server" Text="保存所有修改" OnClick="Button1_Click" /> 后台代码: using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient; public partial class main : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){ //绑定GRIDVIEW打开页面显示数据GridViewbind();}}private void GridViewbind(){//连接字符串WEB.CONFIG里面的 string conn = System.Configuration.ConfigurationManager.AppSettings["ConnectionString1"].ToString();SqlConnection con = new SqlConnection(conn);SqlCommand cmd = con.CreateCommand();cmd.CommandType = CommandType.Text;cmd.CommandText = "select * from employees";SqlDataAdapter da = new SqlDataAdapter(cmd);DataSet ds = new DataSet();da.Fill(ds, "employee");this.GridView1.DataSource = ds.Tables["employee"];GridView1.DataBind();} protected void Button1_Click(object sender, EventArgs e){foreach (GridViewRow gvr in GridView1.Rows){string con = System.Configuration.ConfigurationManager.AppSettings["ConnectionString1"].ToString();SqlConnection conn = new SqlConnection(con);SqlCommand cmd = conn.CreateCommand();cmd.CommandType = CommandType.Text;cmd.CommandText = "update employees set lastname=@lastname,firstname=@firstname where employeeid=@employeeid";cmd.Parameters.Add("@lastname",SqlDbType.NVarChar,20);cmd.Parameters.Add("@firstname",SqlDbType.NVarChar,10);cmd.Parameters.Add("@employeeid",SqlDbType.Int);cmd.Parameters["@lastname"].Value=((TextBox)gvr.FindControl("lastname")).Text;cmd.Parameters["@firstname"].Value = ((TextBox)gvr.FindControl("firstname")).Text;cmd.Parameters["@employeeid"].Value = ((TextBox)gvr.FindControl("employeeid")).Text;try{conn.Open();cmd.ExecuteNonQuery();conn.Close();}finally{if (conn != null)conn.Dispose();} }}} WEB.CONFIG里<appSettings></appSettings>中间添加 <appSettings><add key="ConnectionString1" value="server=.;database=northwind;uid=sa;pwd=;"/></appSettings>
如果文本框内已经有用户输入的内容了,那么就不应该进行清除文本款内容这个动作了。 blueprince给出了如下代码:<script type="text/javascript">function OnEnter( field ) { if( field.value == field.defaultValue ) { field.value = ""; } }function OnExit( field ) { if( field.value == "" ) { field.value = field.defaultValue; } }</script><input type=text value="预设文字" onmouseover="this.focus(); OnEnter(this)" onmouseout="this.blur(); OnExit(this)"> 不过上面的代码有一个非常奇怪的行为,就是当鼠标移出文本框后,文本框就会失去焦点,从而造成用户输入无效,应该是由OnExit函数造成的。而浏览器的默认行为应该是:只要用户不点击页面其它部分或者是按tab键,已经获得焦点的表单就不应该失去焦点。我们稍微修改一下代码就可以让文本框的行为回归正常,效果和代码如下:<script type="text/javascript">function OnEnter(field){ field.focus(); if(field.value == field.defaultValue){ field.value = ""; } }function OnExit(field){ if(field.value == ""){ field.value = field.defaultValue; } field.focus();}</script>
▲ 相信自己是一只雄鹰 ▲ 一个人在高山之巅的鹰巢里,抓到了一只幼鹰,他把幼鹰带回家,养在鸡笼里。这只幼鹰和鸡一起啄食、嬉闹和休息。它以为自己是一只鸡。 这只鹰渐渐长大,羽翼丰满了,主人想把它训练成猎鹰,可是由于终日和鸡混在一起,它已经变得和鸡完全一样,根本没有飞的愿望了。 主人试了各种办法,都毫无效果,最后把它带到山顶上,一把将它扔了出去。这只鹰像块石头似的,直掉下去,慌乱之中它拼命地扑打翅膀,就这样,它终于飞了起来! 秘诀1:磨练召唤成功的力量。 ▲ 五枚金币 ▲ 有个叫阿巴格的人生活在内蒙古草原上。有一次,年少的阿巴格和他爸爸在草原上迷了路,阿巴格又累又怕,到最后快走不动了。爸爸就从兜里掏出5枚硬币,把一枚硬币埋在草地里,把其余4枚放在阿巴格的手上,说:“人生有5枚金币,童年、少年、青年、中年、老年各有一枚,你现在才用了一枚,就是埋在草地里的那一枚,你不能把5枚都扔在草原里,你要一点点地用,每一次都用出不同来,这样才不枉人生一世。今天我们一定要走出草原,你将来也一定要走出草原。世界很大,人活着,就要多走些地方,多看看,不要让你的金币没有用就扔掉。”在父亲的鼓励下,那天阿巴格走出了草原。长大后,阿巴格离开了家乡,成了一名优秀的船长。 秘诀2:珍惜生命,就能走出挫折的沼泽地。 ▲ 扫阳光 ▲ 有兄弟二人,年龄不过四、五岁,由于卧室的窗户整天都是密闭着,他们认为屋内太阴暗,看见外面灿烂的阳光,觉得十分羡慕。兄弟俩就商量说:“我们可以一起把外面的阳光扫一点进来。”于是,兄弟两人拿着扫帚和畚箕,到阳台上去扫阳光。 等到他们把畚箕搬到房间里的时候,里面的阳光就没有了。这样一而再再而三地扫了许多次,屋内还是一点阳光都没有。正在厨房忙碌的妈妈看见他们奇怪的举动,问道:“你们在做什么?”他们回答说:“房间太暗了,我们要扫点阳光进来。”妈妈笑道:“只要把窗户打开,阳光自然会进来,何必去扫呢?” 秘诀3:把封闭的心门敞开,成功的阳光就能驱散失败的阴暗。 ▲ 一只蜘蛛和三个人 ▲ 雨后,一只蜘蛛艰难地向墙上已经支离破碎的网爬去,由于墙壁潮湿,它爬到一定的高度,就会掉下来,它一次次地向上爬,一次次地又掉下来…… 第一个人看到了,他叹了一口气,自言自语:“我的一生不正如这只蜘蛛吗?忙忙碌碌而无所得。”于是,他日渐消沉。 第二个人看到了,他说:这只蜘蛛真愚蠢,为什么不从旁边干燥的地方绕一下爬上去?我以后可不能像它那样愚蠢。于是,他变得聪明起来。 第三个人看到了,他立刻被蜘蛛屡败屡战的精神感动了。于是,他变得坚强起来。 秘诀4:有成功心态者处处都能发觉成功的力量。 ▲ 自己救自己 ▲ 某人在屋檐下躲雨,看见观音正撑伞走过。这人说:“观音菩萨,普度一下众生吧,带我一段如何?” 观音说:“我在雨里,你在檐下,而檐下无雨,你不需要我度。”这人立刻跳出檐下,站在雨中:“现在我也在雨中了,该度我了吧?”观音说:“你在雨中,我也在雨中,我不被淋,因为有伞;你被雨淋,因为无伞。所以不是我度自己,而是伞度我。你要想度,不必找我,请自找伞去!”说完便走了。 第二天,这人遇到了难事,便去寺庙里求观音。走进庙里,才发现观音的像前也有一个人在拜,那个人长得和观音一模一样,丝毫不差。 这人问:“你是观音吗?” 那人答道:“我正是观音。” 这人又问:“那你为何还拜自己?” 观音笑道:“我也遇到了难事,但我知道,求人不如求己。” 秘诀5:成功者自救。 ▲ 让失去变得可爱 ▲ 一个老人在高速行驶的火车上,不小心把刚买的新鞋从窗口掉了一只,周围的人倍感惋惜,不料老人立即把第二只鞋也从窗口扔了下去。这举动更让人大吃一惊。老人解释说:“这一只鞋无论多么昂贵,对我而言已经没有用了,如果有谁能捡到一双鞋子,说不定他还能穿呢!” 秘诀6:成功者善于放弃,善于从损失中看到价值。 ▲ 请不要开错窗 ▲ 一个小女孩趴在窗台上,看窗外的人正埋葬她心爱的小狗,不禁泪流满面,悲恸不已。她的外祖父见状,连忙引她到另一个窗口,让她欣赏他的玫瑰花园。果然小女孩的心情顿时明朗。老人托起外孙女的下巴说:“孩子,你开错了窗户。” 秘诀7:打开失败旁边的窗户,也许你就看到了希望。 ▲ 人生的秘诀 ▲ 30年前,一个年轻人离开故乡,开始创造自己的前途。他动身的第一站,是去拜访本族的族长,请求指点。老族长正在练字,他听说本族有位后辈开始踏上人生的旅途,就写了3个字:不要怕。然后抬起头来,望着年轻人说:“孩子,人生的秘诀只有6个字,今天先告诉你3个,供你半生受用。” 30年后,这个从前的年轻人已是人到中年,有了一些成就,也添了很多伤心事。归程漫漫,到了家乡,他又去拜访那位族长。他到了族长家里,才知道老人家几年前已经去世,家人取出一个密封的信封对他说: “这是族长生前留给你的,他说有一天你会再来。”还乡的游子这才想起来,30年前他在这里听到人生的一半秘诀,拆开信封,里面赫然又是3个大字:不要悔。 秘诀8:中年以前不要怕,中年以后不要悔。 ▲ 司机考试 ▲ 某大公司准备以高薪雇用一名小车司机,经过层层筛选和考试之后,只剩下三名技术最优良的竞争者。主考者问他们:“悬崖边有块金子,你们开着车去拿,觉得能距离悬崖多近而又不至于掉落呢?” “二公尺。”第一位说。 “半公尺。”第二位很有把握地说。 “我会尽量远离悬崖,愈远愈好。”第三位说。 结果这家公司录取了第三位。 秘诀9:不要和诱惑较劲,而应离得越远越好。 ▲ 狮子和羚羊的家教 ▲ 每天,当太阳升起来的时候,非洲大草原上的动物们就开始奔跑了。 狮子妈妈在教育自己的孩子:“孩子,你必须跑得再快一点,再快一点,你要是跑不过最慢的羚羊,你就会活活地饿死。” 在另外一个场地上,羚羊妈妈也在教育自己的孩子:“孩子,你必须跑得再快一点,再快一点,如果你不能比跑得最快的狮子还要快,那你就肯定会被他们吃掉。” 秘诀10:记住你跑得快,别人跑得更快。
http://www.devbuzz.com/http://www.codeproject.com/KB/windows/index.aspxhttp://msdn.microsoft.com/zh-cn/windowsmobile/bb264322(en-us).aspxhttp://windowsmobiledn.com/forum/ 添加新智能设备项目Pocket PC 2003Windows CEWindows Mobile 5.0 Pocket PC SDKWindows Mobile 5.0 SmartPhone SDKWindows Mobile 6.0 Professional SDK
一、SQL Server 2005常用服务查看服务:右击我的电脑--管理--服务和应用程序--服务1、SQL Server(MS SQL Server):SQL Server的核心服务,引擎,此服务停止后,SQL Server则无法使用说明:MS SQL Server为实例,表示每个服务都有自己的服务2、SQL Server Active Directory Helper:与AD(Active Directory活动目录)集成服务3、SQL Server Agent(MS SQL Server):代理服务4、SQL Server Analysis Services(MS SQL Server):分析服务,(OLAP)联机分析(SQL Server 2005新增)5、SQL Server Browser:SQL Server浏览服务6、SQL Server FullText Search(MS SQL Server):SQL Server全文检索7、SQL Server Integration Services:集成服务与(OLAP)一起来用(SQL Server 2005新增)8、SQL Server Reporting Services(MS SQL Server):报表服务(SQL Server 2005新增)9、SQL Server Vss Write:卷影服务(VSS编辑器)说明:A、掌握如何启动、暂停、停止核心服务:停止:断开所有的用户连接暂停:不允许新用户的连接,但如果已经连接可以继续使用B、SQL Server的启动过程:开始 -- 程序 -- Microsoft SQL Server 2005 -- SQL Server Management Studio(SSMS)C、SQL Server身份验证:登录名:Sa -- SQL Server的管理员密码:dufei 二、数据库1、图形界面:右击数据库--新建数据库--数据库名称--确定2、系统自带数据库:master:核心数据库,存放系统的配置信息model:模板数据库,为用户数据库提供一个原始数据msdb:代理服务数据库,为代理、任务、作业提供一个临时的存储空间tempdb:临时数据库,存放的是一些临时数据ReportServer:用于存放报表服务的数据库ReportServerTempDB:报表服务临时数据库说明:从C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data里面可删除数据库的内容3、示例数据库的安装:菜单栏CD--Capture ISO Image ... -- 放入SQL Server 2005企业版的第二张盘 -- 安装好后取消--开始 -- 设置--控制面板--添加或删除程序--Microsoft SQL Server 2005--更改--工作站组件--更改已安装的组件--4、任何一个数据库由数据文件和事务日志文件组成数据文件:用于存放具体数据,扩展名为.mdf事务日志文件:用于存放用户对数据库的操作(如增加、删除、更新),扩展名为.ldf 说明:A、网络版区分于单机版的一个重要特点--事务B、事务示例:原子性--不可分割,如银行转帐一致性--数据的一致性,如意太得香肠病毒、银行的秘密帐号、word中输入“胡”字、Excel表格中的塞车游戏隔离性--事务之间具有隔离性永久性--事务对数据的操作永久生效 三、SQL命令1、新建查询:创建数据库:语法:create database 数据库名称on(数据文件)log on(事务日志文件)具体语法:create database 数据库名称on(name = '数据文件逻辑名',filename = '数据文件的路径及全称',size = 初始大小,maxsize = 最大容量, filegrowth = 递增量)log on(name = '事务日志文件逻辑名',filename = '事务日志文件的路径及全称',size = 初始大小,maxsize = 最大容量,filegrowth = 递增量)实例:创建数据库 dufeicreate database dufeion(name = 'dufei_data',filename = 'C:\SQL2005\dufei.mdf',size = 5mb,maxsize = 10mb,filegrowth = 5mb )log on(name = 'dufei_log',filename = 'C:\sql2005\dufei.ldf',size = 1mb,maxsize = 50mb,filegrowth = 5mb ) 2、最简单的语法:create database 数据库名称示例:创建数据库 db3 、db4、db5 create database db3 create database db4on(name = 'db4_date',filename = 'c:\sql2005\db4.mdf', ) create database db5on(name = 'db5_data',filename = 'c:\sql2005\db5.mdf',size = 3mb, --这里的大小要大于或等于model的大小 maxsize = 10mb,filegrowth = 5mb ) 说明:默认情况:一个数据文件、一个事务日志多个数据文件及多个事务日志文件好处:提高效率实例:创建一个数据库:dufei有两个数据文件两个事务日志文件图形界面:命令方式:说明:有多个数据文件时,主数据文件的扩展名为.mdf,次数据文件的扩展名为.ndfdrop database dufei --去掉文件实例:create database dufeion(name = 'dufei01_data',filename = 'c:\sql2005\dufei01.mdf',size = 5mb,maxsize = 100mb,filegrowth = 5mb ) ,(name = 'dufei02_data',filename = 'c:\sql2005\dufei02.ndf',size = 6mb,maxsize = 50mb,filegrowth = 5mb ) log on(name ='dufei03_log',filename='c:\sql2005\dufei03.ldf',size = 4mb,maxsize = 50mb,filegrowth = 5mb ),(name = 'dufei04_log',filename = 'c:\sql2005\dufei04.ldf',size = 4mb,maxsize = 50mb,filegrowth = 5mb )3、一个数据库可以由多个数据文件和多个事务日志文件:主数据文件 .mdf次数据文件 .ndf事务日志文件 .ldf4、默认的文件组:primary 主文件组,所有的数据文件默认都在此文件组5、实例:创建一个数据库,由三个文件组primary、fg1、fg2primary 文件组有一个数据文件fg1、fg2文件组有两个数据文件,一个事务日志文件使用命令:create database dufeion(name = 'dufei_data',filename = 'c:\sql2005\dufei.mdf',size = 10mb,maxsize = 100mb,filegrowth = 5mb ) ,filegroup fg1 --增加一个文件组(name = 'dufeifg1_1_data',filename = 'c:\sql2005\dufeifg1_1.ndf',size = 20mb,maxsize = 50mb,filegrowth = 10%
--最好备份日志,以后可通过日志恢复数据。。。以下为日志处理方法一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.--*/--下面的所有库名都指你要处理的数据库的库名1.清空日志DUMP TRANSACTION 库名 WITH NO_LOG2.截断事务日志:BACKUP LOG 库名 WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成 --收缩数据库DBCC SHRINKDATABASE(库名)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码: 下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。a.分离EXEC sp_detach_db @dbname = '库名'b.删除日志文件c.再附加EXEC sp_attach_single_file_db @dbname = '库名'
WindowsCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统。 WinCE是一个嵌入式操作系统,使用范围更广泛,不过它只是提供最基本的操作系统功能。WindowMobile是一个基于WinCE内核的完整移动方案解决包,本质上来说,它也算是一种WinCE的操作系统,最开始微软只开发了WinCE,后来微软在CE的基础上又针对不同的硬件开发出了多种有针对性的系统,比如手机、手持电脑等。在Windows Mobile 2003版本之前,这些针对不同设备的操作系统名称都不尽相同,有Pocket PC(不带电话功能的掌上电脑)、SmartPhone(又叫Smart Phone,用于智能手机的系统,系统功能比PPC要精简,同时不具备触摸屏,但具有键盘)、Pocket PC Phone Edition(带电话功能的掌上电脑等)等,后改为现名Windows Mobile,目前不带电话功能的掌上电脑叫做Windows Mobile Classic,以前的SmartPhone现在叫Windows Mobile Standard,带电话功能的掌上电脑叫做Windows Mobile Professional。 PocketPC,简称PPC,是专指使用微软Windows Mobile系列操作系统的PDA,有时候也特指其采用的操作系统。最早的Windows Mobile操作系统是Poceket PC 1.0,一款不怎么成功的操作系统,但PPC由此得名。因此以后采用它的升级版系统以及使用此系统的PDA也就被人们称作PPC并且一直这么叫下来了,随后的Poceket PC 2002、Windows Mobile 2003、Windows Mobile 2003 SE、Windows Mobile 5、6等我们在习惯上都称之为PPC 关于WinCE.net,WindowsCE版本主要有1.0、2.0、3.0、4.0、4.2、5.0 和6.0,由于微软在2000年提出了.net战略,因此它肯定不会放过WinCE这个平台,WinCE.Net(即WinCE 4.0)是微软于2002年1月份推出的首个以.Net为名的操作系统,从名字上我们就可以知道它是微软的.net的一部分。事实上WinCE4.0以后的系统也都是基于.net平台的了,但是通常习惯上所说的WinCE.net都是特指WinCE 4.0。 刚才也介绍过了,SmartPhone(又叫Smart Phone)也是用于智能手机的系统,这个操作系统我们可以看成是一个基于PPC系统,但是系统功能比PPC要精简,更贴近于普通手机而且在系统中做了相关优化的系统,与PPC Phone相比,它具有键盘,但是不具备触摸屏,更适合于单手操作。 目前WinCE最新版本是6.0,windows mobile 最新版本是6.1,但是它也只是windows mobile 6.0系统的一个小修小补罢了,本质上还是基于6.0的,目前我们俗称的Pocket PC也都是采用Windows Mobile系统了,因此最新系统也是6.1
(1) 因为做过一些Windows moblie的开发,所以新博客开张。就先对Windows moblie发表一些浅见。 先从Windows ce说起,有些朋友问我是做什么的,我说我做wince的,做技术的朋友一般也就不用再做解释了,但是面对不懂技术的朋友就不容易说清楚。我一般也就回答说:跟windows差不多... 当然,它的确和windows非常类似,只是定位不同。Windows ce是微软开发的嵌入式操作系统,简称是EOS。该系统为抢占式多任务的实时操作系统,具有模块化可定制的特点。与windows相比Windows ce要小许多,有文章说,它也比windows更快更可靠,但是我个人以为,可以更快更可靠也是因为它相对较小的缘故,当然,作为实时操作系统,在一些应用上的可靠性是会很高的。现在有一个问题,就是:Windows ce有多大的用途?和向我提出疑问的朋友们一样,在进入这个领域之初我自己也有过疑惑。那时我知道它用于嵌入式,也知道可以可以涉及多个领域,但是在国内的日常生活中还是很少像windows或linux一样可以的的确确的感受到它的存在。那么Windows ce到底存在与我们生活中的哪些角落呢?发现得太少,其实有时候是我们不够留心。平时我们在公路上见到交警手中拿着的用触笔写写画画的东西,偶尔坐火车,在进站前有警察拿着同样的东西登记一些乘客的信息... 这些都是Windows ce系统的设备。Windows ce可以应用在网络(网关路由),工业控制(机器生产线控制),测量设备,信息化家电,医疗设备,GPS导航相关设备。 可以应用到公安,城市交通,铁路,税务,城管,电力,野外作业,军事... 最后,还有一项应用,是贴近普通人们生活最近,也是发展前景最广阔的应用。也是我要主要介绍的:Windows moblie Windows ce作为一个可定制的系统,为了应用于移动通讯领域(比如手机),微软在Windows ce的基础上开发定制了Windows moblie。到今天为止Windows moblie的最新版本是6.1,虽然微软已经发布了Windows moblie7的功能预览,但是目前国内还见不到它的任何应用,准确来说它还未完成,仍然在在开发中。 Windows moblie的基础上又有2个不同的定制,分别是smartphone 和 Pocket PC。smartphone看名字就可以联想到了,它应用于移动电话,而Pocket PC起初是用于掌上电脑,默认情况下并不具备电话功能,但是经过后来的改变。现在我们一般见到的Pocket PC的版本都是和smartphone一样,应用于手机。这两个同属于Windows moblie的子版本,最主要的区别也就是触笔的支持上。只有Pocket PC是支持触笔的。在它们上面的应用程序开发,在考虑周全的情况下,是可以相互移植的,本质区别并不多。要提醒一点,要在smartphone 和 Pocket PC轻松的相互移植要注意的是,最好不要使用MFC,因为微软为了给smartphone瘦身,并不提供对MFC的支持。 如果你急于动手,盲目的先实现了一个使用MFC的Pocket PC的应用,在实现smartphone上的移植时,你的程序很大块的面积将必须要重写。一般情况下,先从smartphone入手,再向Pocket PC移植是比较正确的选择,因为相对于Pocket PC,smartphone的某些支持更少,应该这样想,就像在同一个系统下,功能更多的高版本和低版本,做到向下兼容绝对比向上兼容要容易得多。 (2) 做Windows moblie开发,首先要接触的是它的开发工具。较早被使用的是EVC,一种开发界面和使用习惯类似于VC的开发工具,同样是使用C++作为开发语言。他最新的版本是EVC4 sp4,但是因为微软已经放弃对它的持续更新,以后也不会有新的版本出现了,现在已经不是我们做Windows moblie开发的首选工具了。而另一款同样被微软放弃的工具EVB,因为基于VB的更弱小的功能,则几乎已经被人们遗忘了。现在,在VS2008还没有被大肆推广前,VS2005应该说是Windows moblie开发的首选工具。 目前Windows Mobile的开发语言有.NET(包括C#和VB.NET)和C++。C#近几年一直深受微软的大力推广,虽然很多老牌的程序员并不看好它,但事实上它的推广还是做得很好的。目前我个人估计,国内在Windows moblie的应用程序开发上C#程序员的数量是多过C++的。当然,得出这个结论是有理由的。网上一些关于Windows moblie的论坛,讨论群等,都是基于.net开发的数量较多,而.net又尤以C#为主打。如果要搜寻Windows moblie开发的C++中文资料,一般来讲是相对比较少的。目前为止我也没有见到过中文的以C++为基础介绍Windows moblie开发的书籍,准确来说也并不是一本都没有,只是没有真正有用的可以作为教材的。想反,以C#为基础介绍Windows moblie的中文书籍近来还是出了一些。可见C#的市场貌似是要大些的。在一些政府部门和一些小的开发公司,做Windows moblie的开发现在已经基本都是使用C#。说了C#这些好处,并不代表我是C#的支持者。归到低,它只是一个开发的语言工具,市场大的根本原因,是它的简单易用。谁不喜欢简单的东西,C++实在是有过复杂。一些网上使用C#的开发同行在知道我一直使用C++后,认为我有自虐倾向。当然,这是他们在开玩笑。不过话说回来,由简入奢易,由奢入简难,所有我还是认为,做开发,从c\c++开始起步是明智的选择。不管有多少初学者在研究C#,现在大的开发公司,比如多普达,腾讯等等,都仍然是使用c\c++为主的,C#的功能和性能毕竟是有局限的。 最后,介绍一下我所熟悉的开发方式。Windows Mobile5.0以前的版本做开发,除了EVC还有vs2003可以选择,如果项目是现在才开始的,这些工具其实都可以抛弃了,与vs2005相比,它们显得很不好用。vs2005做Windows Mobile开发仍然是微软一贯的做法,它是向下兼容的,同时可以开发5.0和之前的版本。需要的准备工作就是从微软的网站上下载相应版本的SDK。目前已经有6.0的sdk可以下载。上一篇我提到了在Windows Mobile下的两个主要版本smartphone和Pocket PC之间做到软件可移植的问题。这里再详述一下。在使用C++的情况下,为了移植的方便,一般不要在开发Pocket PC的时候使用MFC。但是,不用MFC,用什么?直接使用Windows Mobile的SDK也是一种选择,但是这样的开发还是做起来比较繁琐的。现在,WTL在Windows开发上人们已经使用得很多了。它有很多优点,比如开发出的程序要比MFC的东西小不少,而且方便好用,它的准确介绍可以google一下其相关说明,我在这里就不多说。因为Windows Mobile的SDK和windows开发的win32 sdk的一致性,WTL对Windows Mobile的SDK也是完全支持的。要在vs2005下使用WTL,其版本至少在7以上,个人推荐WTL8.0。就像MFC一样,在安装以后,它同样可以在vs下生成Windows Mobile开发的向导选项。有了这些工具,我们就可以做Windows Mobile的开发了。但是目前国内在Windows Mobile开发领域的学习资料数量还是很有限的。要充分发掘Windows Mobile开发的潜力,就必须有快速熟悉它的方式。这一点微软做得很贴心,除了相应SDK自带的帮助文档外还有内容丰富的MSDN,如果这些还不够直观,微软还在相应SDK安装目录下的sample目录下放了很多的实例程序,对Windows Mobile开发需要的常用功能一一做了例子。 最后,趁着过新年,给有耐心看我这些浅见的朋友们拜年,大家新年发财,事事如意,薪水年年翻一番。也希望有专家朋友给我提提意见,做做指导。 From:http://blog.csdn.net/okluo/archive/2008/02/13/2090783.aspxhttp://blog.csdn.net/okluo/archive
单身宅男,周末只好在家折腾新手机。OK,回归正题,这里主要记录几个搭建Windows Mobile 6.5 Professional开发环境需要注意的问题。过程不详细,无图无真相。但是我相信,只要几个需要注意的问题搞定了,其他的对我们伟大的程序员同学们来说还是很简单的。一.安装必备1.Microsoft ActiveSync 4.52.Microsoft Visual Studio 2008 + SP13.Windows Mobile 6 Professional SDK Refresh4.Windows Mobile 6.5 Professional Developer Tool Kit这里需要注意的是VS 2008需要打上SP1,而WM6.5本质上还是使用6.0的SDK,所以在安装官方提供的WM6.5 DTK(Developer Tool Kit)前,需要先安装WM 6.0的SDK。安装WM6.5的DTK时,会对6.0的SDK做部分更新,并安装WM6.5的模拟器。二.可能出现的问题安装过程中,都是点下一步,这个难不倒伟大的程序员同学们。但是我用的Win2003,在安装WM6.0 SDK时,出现错误提示:“系统管理员设置了系统策略,禁止进行此安装。”。有可能会有同学出现跟我一样的错误,或者类似于“文件被数字签名策略拒绝(File was rejected by digital signature policy)”之类的错误,这里需要修改注册表搞定之:修改 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers 注册表项下面的 PolicyScope 的注册表值,将值从0改为1,然后就可以安装了。安装完请自行改回来。三.开发相关1.新建项目的时候,可以选择SDK,选择WM6.0就可以了2.部署的时候,注意MS ActiveSync连接设置里要勾上“允许连接到以下其中一个端口”,并选择“DMA”,这样模拟器才能连上MS ActiveSync四.手机上.Net Compact Framework的安装转到C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE目录下,将NETCFv35.wm.armv4i.cab拷贝到手机中,然后运行cab文件就可以了,那是相当简单啊其他的对各位同学来说貌似应该没什么问题了。不过对我来说还有一个很囧的问题:我的本子分辨率是1280*800,而我的手机是480*800的分辨率。这样一来,我启动WM 6.5 WVGA模拟器时,800像素的高加模拟器外框菜单啥的,本子不够显示了,此问题除了砸钱买外接显示器外无解。。。 PS: Windows Mobile 6.5 Developer Tool Kithttp://www.microsoft.com/downloads/details.aspx?FamilyID=20686a1d-97a8-4f80-bc6a-ae010e085a6e&displaylang=en Windows Mobile 6 Professional and Standard Software Development Kits Refreshhttp://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&displaylang=en#filelist