RSS 2.0 Feed
学习
摘要:根据InfoPath team blog里介绍的File Attachment Control的内容,写了两个类来处理文件的编码与解码。 public class InfoPathAttachmentEncoder ...{ private string base64EncodedFile = string.Empty; private string fullyQualifiedFileName; /**//// <summary> /// Creates a encoder to create an InfoPath attachement string /// </summary> /// <param name="fullyQualifiedFileName"></param> public InfoPathAttachmentEncoder(string fullyQualifiedFileName) ......[阅读全文]

posted @ | Feedback (3) | Filed Under [ 工作 学习 ]

摘要:为偶的NotesManager小程序写了一个带滚动条的Label控件,效果看起来象下面这样:   这个控件的实现思路说起来很简单,就是使用的一般Windows桌面程序中的窗口(Window)和视口(View)的概念。 考虑到Label本身不需要支持编辑的功能,出于效率的考虑,我在ScrollLabel控件中用一个Bitmap对象来保存Window的所有内容。在OnPaint中,如果发现Bitmap对象是空值(通常是第一次Paint),则根据当前Text的内容判断是否需要显示ScrollBar,并创建Bitmap对象,然后根据View的位置来显示应当显示在界面上的内容。以后每次Paint的时候,都只是根据滚动条的位置来计算View的位置,然后显示相应的Bitmap上的内容即可。当Text或者Font改变时,将原有的Bitmap销毁重新计算即可。整个OnPaint方法看起来象下面这样:          protected override void OnPaint(PaintEventArgs e)          {               base.OnPaint (e);                 if(bmpWindow == null)               {                    Rectangle drawRect;                      // Calculate the height of the window                    SizeF size = e.Graphics.MeasureString(this.Text, this.Font);                    rowHeight = size.Height;                    float height = (size.Width / ClientSize.Width + 1) * rowHeight;                      // Indicate if the scrollbar need to be shown.                    if(height > ClientRectangle.Height)                    {                        // Recalculate the height of window.                        height = (size.Width / (ClientSize.Width - scrollWidth)) * rowHeight + ClientSize.Height / 2;                          // Show scrollbar                        vs.Bounds = new Rectangle(this.ClientSize.Width - scrollWidth, 0,                             scrollWidth, ClientSize.Height);                        vs.LargeChange = (int)(ClientSize.Height / rowHeight);                        vs.Maximum =......[阅读全文]

posted @ | Feedback (14) | Filed Under [ 学习 ]

摘要:刚才收到mvm的邮件,说我的上一个post不能加comment,comment的submit按钮不work了,试了一下果然不能submit评论了。 刚才我用上一个post做了个测试,用来试验开心说的避免帖子显示在博客堂首页的方法,开始我以为这是引起问题的原因。Advanced里面的那一堆Checkbox前几个我都试了试,结果发现,似乎取消选中“显示在首页”并不能避免帖子显示在博客堂首页上,倒是帖子不会显示在自己的首页上了;取消选中“发布”的话,帖子不会显示在博客堂首页上,但是同时也不会显示在自己的首页上了,这样的话帖子也就没人能看到了;取消选中“允许评论”的话,帖子上不会有Feedback的链接。现在我选中了所有的选项,但是评论的submit按钮仍然不work。 再仔细想想今天我还改了什么,想起来下午我给自己的blog加了一个google站内搜索,但是测试下来发现,这段站内搜索代码似乎不能用。首先,click了google search按钮之后并没有按预期转到google的页面,而只是将本来的首页刷新了一遍似的。我在自己本地建了个测试页面,放上google的这段代码是可以work的,这说明可能是博客堂本身的代码与它有冲突;其次,google的站内搜索其实还是使用的site关键字,而这个site关键字搜索是不支持搜索类似http://blog.joycode.com/sam1111 这样的URL地址的,只支持类似blog.joycode.com这样的顶级域名,所以其实并不能按我的预期实现对http://blog.joycode.com/sam1111 的站内搜索; 虽说这段站内搜索不Work,我还是将那段代码留在那里了,主要是懒得去删了。刚才想起这会不会是引起不能submit comment的原因呢?因此去把它删了,现在submit comment果然可以用了。看来还真是google的search按钮与comment的submit按钮有冲突呢,难道是使用了相同的ID? 附:耽误了mvm的comment,特附在下面 :) kaka, 居然不能在vpc里面运行sp的模拟器?   那能在vpc里面运行SFC模拟器么?   Btw, 无法在http://blog.joycode.com/sam1111/archive/2004/11/04/38033.aspx里面留言,本来想留在那个上面的。我这里居然click submit以后没有反应。很郁闷。   20:27更新: SFC模拟器suppose应该是可以在VPC中运行的吧。SP的模拟器不能运行是因为SP的模拟器本质上是一个WinCE虚拟机,因此不能嵌在其他的Windows虚拟机中运行。虽然没试过,不过我想一定不能在一个Win2k3的虚拟机中再run一个WinXP的虚拟机。而SFC的模拟器应该与Windows虚拟机没什么关系。有空试试先。:)   21:05更新: 趁下班之前这段时间作了个测试,在虚拟机中安装VPC2004时报错无法安装虚拟网卡;能成功安装,但无法在WinXP虚拟机中运行,报与SP模拟器差不多的错,即无法在一个Virtual Machine中运行。SFC的模拟器倒是可以运行,只是声音似乎有点问题。...[阅读全文]

posted @ | Feedback (20) | Filed Under [ 学习 blog ]

摘要:作了个小升级,主要是界面上的: ?? 新版本可以在这里下载。 原打算为Smartphone建个专门的VirtualPC环境来开发,down了个干净的WinXP SP2 Image,然后在上面一步一步装好了需要的所有软件。安装好了之后,写了个小程序作测试,发现Emulator无法运行起来,报个错,错误信息很具调侃性质,说,Emulator不能运行在另一个Emulator中,你只是试试对吧?一时摸不着头脑,上网查了一下发现,Emulator原来也是一种虚拟机,而两个虚拟机是无法嵌套使用的。等偶有空了倒要试试,看看能不能在一个VPC中run另外一个VPC。...[阅读全文]

posted @ | Feedback (20) | Filed Under [ 学习 ]

摘要:一直想为俺的dopod 565找个好用的记Notes的工具,可是找到的几个都是收美金的,只好暂时用npad来记录一些东西。可是每次记得东西都要保存成txt文件,找起来不是很方便。正好今天比较空,于是就按照自己的想法写了一个,感兴趣的可以到http://www.91mobile.com/dispbbs.asp?boardID=36&ID=47135下载。由于是用VS 2005 beta 1写的,就没有上传代码。    之所以用VS 2005来写,主要有两个原因。一是VS 2005 beta 1内建了SmartPhone 2003 Second Edition模拟器,设计UI的时候可以直接在模拟的手机界面中进行,连接模拟器和调试也比配置VS 2003容易些,而且整个开发过程可以充分使用到VS 2005 IDE提供的强大功能,比如Refactoring;第二个原因嘛,就是俺的这台本本上暂时只装了VS 2005这一个开发环境。:D 有一点要说的是,虽然VS 2005在开发环境上支持SmartPhone 2003,但是编译的时候还是需要.NET Framework 1.1的。道理很简单,SmartPhone 2003并不支持.NET Framework 2.0,因此VS 2005仍然使用1.1的编译器。 至于程序本身嘛,倒是没什么可说的,就是读写XML而已。简单起见,所有的Control都使用的是.NET内建的,这就有了一些局限性,比如这个ListView的主界面就不是我所设想的那样。这些只能等什么时候有空了写一些User Control来解决了。同时还有一些重要的功能没写,比如Search,因为发现CF对XPath的支持好像不怎么样,就没写。 先dog food一阵子再说。:D 2004-10-06更新: 91还是不太稳定,放了个下载在Hi!PDA: http://www.hi-pda.com/forum/viewthread.php?tid=208229&pid=2031529&page=1&sid=QOjWCe#pid2031529 另外,感谢jerome在他的网站上介绍这个小工具: http://www.mmpet.com/forum_posts.asp?TID=172&PN=1...[阅读全文]

posted @ | Feedback (18) | Filed Under [ 学习 ]

摘要:最近gmail放松了新帐号的邀请,一时间似乎人人都有gmail的帐号,甚至有点送都送不出去的感觉,前段时间那种洛阳纸贵的情景一去不复返了。:) 这样倒好,用的人多了,研究的人自然也就多了。看看这个for .Net的Gmail Agent API ,用GET/POST的方式实现的,代码写的很精巧。记得以前有人讨论过gmail的为什么比别的web-based的邮件系统快,这个页面上给出了答案。 其他的比如这个在Linux上将gmail作为一个文件系统的GmailFS,for Python的库libgmail甚至能将gmail作为一个FTP Server,真是没有做不到,只有想不到。...[阅读全文]

posted @ | Feedback (33) | Filed Under [ 学习 ]

摘要:TechEd 2004之后,微软终于公布了酝酿已久的Information Bridge Framework。IBF是一套用来开发基于Office System的解决方案的框架,它将有助于简化基于Office System的数据驱动的解决方案的开发。从下面这幅图上,我们可以形象地了解IBF如何工作的: ...[阅读全文]

posted @ | Feedback (4) | Filed Under [ 学习 ]

摘要:最近在做case的时候,经常会用到Sysinternals Freeware上的一些软件,比如Filemon, ListDll等等,这些小工具对于系统除错非常管用。今天有空,将这个站点仔细浏览了一遍,发现原来上面所有的Freeware软件都是Mark Russinovich 和Bryce Cogswell两个人写的,其中Mark Russinovich就是大名鼎鼎的《Inside Windows 2000》的作者之一,真是十分佩服呀。这个站点上还有一些小工具的源码,对系统底层比较感兴趣的朋友可以看看。 看到一篇文章,是从另一个角度来看印度的发展的,值得一看:把目光投向印度...[阅读全文]

posted @ | Feedback (4) | Filed Under [ 学习 ]

摘要:在C# FAQ中看到一篇讨论types polymorphic的随笔。 这个问题还真是有一点迷惑性。我的第一感觉是,用类似public static void Swap(object a, object b);这样的代码就能实现两个object的交换了,因为object是reference type。可是动手试过和看过讨论之后才知道这样是不行的。 实际上,public static void Swap(ref object a, ref object b);的IL是: .method public hidebysig static void  Swap(object& a, object& b) cil managed 而public static void Swap(object a, object b);的IL是: .method public hidebysig static void  Swap(object a, object b) cil managed真正的type polymorphic的解法,自然是Generics了。...[阅读全文]

posted @ | Feedback (5) | Filed Under [ 学习 ]

摘要:就像VS.NET从beta1到beta2有非常多的变化一样,Whidbey的PDC Preview版本与VS2005 Community Preview之间也存在着非常多的变化。比如上次刚刚说到的Whidbey中Provider的实现,在PDC Preview中是通过IProvider接口,以及由它派生的接口,比如IMembershipProvider实现的;而在VS2005中IProvider系列接口已经消失了,取而代之的是ProviderBase以及由它派生而来的一系列虚基类,这些虚基类提供的方法接口与IProvider系列接口提供的相似。按照一般的理解,虚基类和接口的功能是类似的,因此没看出这个变化在设计上有什么好处,可能只是为了Provider能够跨越AppDomain吧,因为ProviderBase派生自MarshalByRefObject。 VS2005在界面和易用性方面的改进也很显著,.NET Tools评测网有许多这方面的贴图和介绍,大家可以看看。另外,VS2005C带了一个简单的文档,可是里面有些东西与实际不符,比如MembershipProvider中的抽象方法在文档中的标示是static,搞得我还以为C#有加了新特性,连static方法也可以是虚的了呢...[阅读全文]

posted @ | Feedback (1) | Filed Under [ 学习 ]

Full 学习 Archive