自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

3NG

无生无死,无苦无悲,无欲无求!

  • 博客(42)
  • 资源 (2)
  • 收藏
  • 关注

原创 自定义属性编辑器

有时候我们需要定义自己的类型并使用属性编辑器使用户能够编辑它,这时候就需要我们自定义属性编辑器。 /// /// 自定义属性编辑器 /// public class TestEditor:UITypeEditor { public override object EditValue(ITypeDescript

2008-06-18 13:55:00 1079

转载 想成为最牛程序员吗?以下几点有助你实现这个目标。

想成为最牛程序员吗?以下几点有助你实现这个目标。Tip 1 要方法而不是记忆我的一个程序员朋友常跟我说记住超过200个C++函数是多么的有帮助。“我从来不必去查找函数的定义,因此我可以比其他程序员编程快上50%。” 他自豪的说。可结果是什么?难道他不知道编译器的代码自动完成功能可以节约大量查找函数及输入函数的时间吗,另外当C#发布出来后,他在记忆函数上面的努 力就白费了。当然,编程中对函数

2008-06-16 09:32:00 816

转载 .Net中的序列化方法

.Net中的序列化方法有三种:XML 序列化、SOAP 序列化和二进制序列化。若是序列化到文件的话,前两者生成的是 XML 文件,二进制序列化生成二进制文件。     跟序列化相关的两个类型:     SerializableAttribute:指示一个类是可以序列化的。     ISerializable:使对象可以自己控制其序列化和反序列化的过程。     列表比较三种序列化方法。

2008-06-12 18:49:00 1088

转载 构建WPF开发站

原文:http://blogs.msdn.com/tims/archive/2006/12/20/building-a-perfect-wpf-developer-workstation.aspx作者:Tim Sneath译者:Tony Qu你已经确信WPF是下一代应用程序的战略级技术,你已打算利用这个机会好好规划并重新安装你的开发工作站。 那么你应该在这个工作站上放些什么,才可以创建一个完美的W

2008-06-06 11:01:00 631

转载 思考才是进步本质

 思考才是进步本质——近期文章回顾到底是什么让我在进步?这个话题很久以前我就拟过,却一直没有作答。我总是把这样的一些问题拟给自己,这个过程,在我看来就叫反思。我不停地反思,反思这个过程本身,反思“反思这个过程”本身,如此递归往复下去。如同李维先生说的,思考才是进步本质,我找到了不停催促自己前行的动力。自去年来,我有些文章是发在BLOG之外的,因为受了人家所托的缘故,所以不是太方

2008-06-04 11:04:00 653

原创 WPF之Brush浅见

Window2 win = new Window2();  /* * VisualBrush的三个要素: * 1.内容 (VisualBrush.Visual) * 2.图块 (VisualBrush.Viewbox) * 3.输出区域(VisualBrush.Viewport) */  win.VisualBrushTest.Visual = this.stack; win.VisualBrus

2008-04-02 17:32:00 1647

转载 C#语言的几个层次

C#语言的几个层次接到一位前不久C#培训学员的来信,这位学员虽然以前功底欠缺,但学习劲头很足,在培训中成长很快。即便基本吃透《.NET框架(修订版)》还嫌不够过瘾,一心要成为高手中的高手。来信的目的是希望我来指点进阶方向。说实话,我一般不想在这些有关个人发展的大是大非的问题上给人指导,因为太多亲身或眼见的经历告诉我人生实在是很难捉摸,善良、智慧、勤奋这些我们珍视的品格常常会碰到可怕的现实。

2008-03-29 14:37:00 566

原创 WPF之数据绑定

WPF数据邦定: /***********************************************/ 界面到数据源 自动。数据源到界面。  数据绑带四要素: 1.目标对象 2.目标属性。 3.源对象。 4.绑定路径。  绑定模式: 1.OneWay:数据源 --->绑定目标; 2.TwoWay:数据员 绑定目标; 3.OneWayToSource: 数据源 4.OneTime: 数

2008-03-29 14:34:00 625

原创 c#面向对象设计模式之工厂模式

//////////////////////////////////////////// 抽象工厂(创建型模式)  new的问题: 实现依赖,不能应对“具体实例化类型”的变化。 解决思路: 1.封装变化点 ---- 那里变化,封装那里。 2.潜台词:如果没有变化,当然不需要额外的封装 !  工厂模式的源起: 变化点在“对象创建”,因此就封装“对象创建” 面向接口编程 -- 依赖接口,而非依赖实现。

2008-03-29 14:32:00 779

原创 c#面向对象设计模式之Singleton

  模式分类: 创建型模式:负责对象创建。  结构型模式:处理类与对象间的组合。  行为型模式:类与对象交互中的职责分配。 Singleton模式的几个要点:  保证一个类仅有一个实例,并提供一个该实例的全局访问点。  Singleton模式中的实例构造器可以设置为Protected以允许子类派生。  Singleton模式一般不要支持ICioneable接口,因为这可能会

2008-03-29 14:29:00 655

原创 WPF制作透明按钮

  使用Blend的强大功能制作透明按钮!详细

2007-11-27 17:11:00 1546

原创 对于程序员的技术发展和职业规划能否给大家一些建议呢?

记者:对于程序员的技术发展和职业规划能否给大家一些建议呢?---------周爱民:1、不要急。2、不要只做不想。3、听别人的话,即使你不想听。4、订一个五个期的目标,写一个一年期的计划,然后回顾它。5、学好中文,学好写文章,学会打标点符号。6、把工作当成事业做,天天都在做事业,才会成功。7、理论看不懂,就去实践;实践遇到问题,就去看理论。8、参加一个开源项目,如果没你感兴趣的,就自己发起一个。9

2007-11-23 14:27:00 672

转载 别让灵魂赶不上我们的脚步

今天看到一个女记者结束生命的事,感慨良多。去年,我的一个朋友也选择了结束生命,他是清华大学的博士,在别人眼里年轻有为,前途无量。其实很多人都有孤独、迷惘、甚至想到此为止的念头,但并不是所有的人都能有这个勇气。知识分子,尤其是优秀的知识分子,往往会给自己背负着一个沉重的理想,当他发现理想与现实之间存在着巨大的差距和鸿沟的时候,失望是很自然的。人往往会跟人比,我在跟这个清华的博士比的时候也自惭形秽

2007-11-02 18:06:00 659

原创 委托与事件

示例代码: private void button10_Click(object sender, EventArgs e)        ...{            EventHandler en = new EventHandler(Form1_EventH);            EventHandler er = new EventHandler(Form1_EventH); 

2007-08-23 19:33:00 846

转载 学习委托(2)-------解析委托的实现机制

在前一篇文章中,从函数指针的角度谈论了委托,本篇文章来看.NET是如何为我们实现委托的。为了讨论方便,把上一次C#委托的代码写在下面:  class liyufeng    {        public static void mySay()        {            System.Console.WriteLine("I Like You,Do you k

2007-08-23 18:29:00 778

转载 委托学习(1)-------函数指针的改头换面

又是提起委托,我在想的是众人必定皆恼怒,有关这个东西的谈论网上已悠悠不尽,何况我也不是赶时髦,追潮流的人,因此必然无法标新立异;只是把我学习的一些感受作以记录,便于日后回忆,也愿对各位朋友有点帮助。对于学习C/C++语言的朋友,函数指针相信都不会觉得遥远和陌生吧,不管你对它是恨是爱,还是它令你忧伤令你逍遥自在;如果现今你还在使用C/C++,驰骋在Win32平台下怡然自乐,那么有它相伴身边你肯定

2007-08-23 18:26:00 935

转载 深入理解C# 3.0的五项主要改进 (LINQ)

5 .LINQ  在之前的C#版中,开发者应用许多不同的查询语言来访问不同的数据源。例如,要查询一个XML文件,开发者会使用XPath,要查询一个SQL数据库,开发者将使用SQL。在过去这种方法十分有效,并且现在仍然是访问各种数据的主要方法。但是,这种方法具有一些缺点。 一个显著的缺点在于:开发者必须以一种不同的语言,而非他们当前使用的语言(如SQL或XPath)来编写查询代码。另一个缺点是,在执

2007-07-24 20:53:00 901

转载 深入理解C# 3.0的五项主要改进 (匿名类型)

4.匿名类型  C# 2.0引入了匿名方法,C# 3.0推出匿名类型。匿名类型与匿名方法类似,它们都是以嵌入方式建立,并没有正式的名称。在建立一个匿名类型,您必须组合上述对象初始化器和隐型局部变量两个概念。下面是一个匿名类型的例子:varmyType = new { Length = 79, Width = 30 };   匿名类型的范围与任何其它变量的范围相同。例如,下面代码块中的cobra实例

2007-07-24 20:50:00 877

转载 深入理解C# 3.0的五项主要改进 (对象初始化器)

3.对象初始化器  在C# 2.0中,开发者认为建立许多构造器来设定某个属性值为对象初始化过程。下面是一个例子: 类访问Customer方法: Customer myCustomer = new Customer("Zach", "Smith");   Customer类构造器: public Customer(string firstName, string lastName) : this()

2007-07-24 20:48:00 1039

转载 深入理解C# 3.0的五项主要改进 (extension方法)

2.extension方法  在C#中,您不能继承和扩充用访问标识符标记为“封装”的类型。但在C# 3.0中,extension方法允许您扩充任何类,甚至是标记为封装的类。例如,如果希望添加一个NoSpaces()方法到字符串类中,我们要定义一个类似列表A中的extension方法。  列表AnamespaceMyExtensionMethods{ public static class Exte

2007-07-24 20:44:00 1278

转载 深入理解C# 3.0的五项主要改进(隐型局部变量)

1.隐型局部变量   C# 3.0引入了一个叫做“var”的新关键字。这个关键字允许开发者建立一个变量,但不必明确它的类型。例如,用var说明一个字符串,就像这样:varmyData = "This is my data";   注意,这里并没有提到myData变量是一个字符串,而C# 2.0却要求这一点。  虽然var允许您建立隐含的类型,它并没有降低C#浓厚的类型特征。var关键字只有在建立变

2007-07-24 20:39:00 801

转载 C#编程规范

养成良好的编码风格是极其必要的,谁也不愿意看到一堆杂乱无章的代码,将来你或者别人在维护的时候是多么的痛苦,所以,从现在开始,养成良好的编码习惯,包括变量命名,注释,代码缩进....。1 .利用Pascal的方式定义类型、方法名和常量   public class SomeClass  {  const i

2007-06-21 18:32:00 636

转载 Visual C# 应用程序开发 之 如何:使用外侧代码段

以下过程描述如何使用外侧代码段。可通过三种方法使用外侧代码段:通过键盘快捷键、通过“编辑”菜单,以及通过上下文菜单。通过键盘快捷键使用外侧代码段 在 Visual Studio IDE 中打开要编辑的文件。 在“代码编辑器”中,选择要添加外侧代码段的文本。 键入 Ctrl+K、Ctrl+S

2007-06-14 18:52:00 2655

转载 Visual C# 应用程序开发 之 使用代码段 (C#)

以下过程描述如何使用代码段。可以通过五种方式使用代码段:键盘快捷键,IntelliSense 自动完成,IntelliSense 完成单词列表,“编辑”菜单,上下文菜单。通过键盘快捷键使用代码段 在 Visual Studio IDE 中打开要编辑的文件。 在“代码编辑器”中,将光标置于要插入代码段的位置。

2007-06-14 18:48:00 656

转载 Visual C# 应用程序开发 之 代码段 (C#)

 Visual Studio 提供了一项称为代码段的新功能。 可以使用代码段键入短的别名,然后在通用编程构造中将其展开。例如,for 代码段创建一个空的 for 循环。有些代码段为外侧代码段,这些代码段允许您先选择代码行,然后选择要并入选定代码行的代码段。例如,选择代码行,然后激活 for 代码段,便可以创建一个 for 循环,选定的这些代码行在该循环块内。代码段可以使程序代码的编写更快、更容

2007-06-14 14:24:00 928

转载 捕获控制台程序的消息

控制台程序在Windows程序的角色中是非常強大且方便的,像VC,C#,Delphi等等,好多功能強大的語言都支持控制台程序。她沒有複雜的GUI,完全是32位的程序,能夠調用除GDI 函數之外的API,支持多線程,支持MFC等等。用她來調試程序、學習程序設計、做實驗等是再合適不過的了。我經常把我試驗性的程序用控制台方式來寫,非常方便。 Console程序不像Win32 GUI程序那樣具有消

2007-04-13 16:30:00 1557 1

原创 后来

 我能说什么?我知道从一开始你就为我做了很多。事情发展到今天我不知道是谁的错?我一遍一遍的在想这个问题,我能想出的就是我自己错了,我既没有当好丈夫又没当好儿子,你的都是为了我,而我又是为了谁?不知道我们从什么时候开始经常吵家,不知道从什么时候开始互相指责,不知道从什么时候开始不在互相理解了?我想啊想啊?我知道了我们是什么时候开始不在了解了,就是在我们一遍又一遍的吵家开始,就是从我们一遍又一遍的互相

2007-04-11 16:09:00 683

原创 面向对象及建模

要实现灵活性带来的好处,只能通过设计好面向对象系统。这就要求了解面向对象的基本原则:封装,继承,多态封装:在面向对象的系统中,我们将信息与处理信息的功能组合起来,然后将其包装成对象。继承:就是子类要拥有父类的特性但他还有自己的特性时他就先在继承父类的基础上再扩充自己的特性。多态:表示特定功能有多种形式或实现方法。建模:收集系统要求时,把用户的业务需求映射到开发小组能理解的要求。最终

2007-03-17 10:35:00 817

转载 佛说:爱情也是一种宿命

石头问:“我究竟该找个我爱的人做我的妻子呢?还是该找个爱我的人做我的妻子呢?”佛笑了笑:“这个问题的答案其实就在你自己的心底。这些年来,能让你爱得死去活来,能让你感觉得到生活充实,能让你挺起胸不断往前走的,是你爱的人呢?还是爱你的人呢?”石头也笑了:“可是朋友们都劝我找个爱我的女孩做我的妻子。”佛说:“真要是那样的话,你的一生就将从此注定碌碌无为!你是习惯在

2007-03-11 00:14:00 667

转载 进程和线程的区别

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺

2007-03-07 21:20:00 858

转载 Heap和Stack的区别

2.1 内存分配策略按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的.静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构 (比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求.栈式存储分配也可称为

2007-03-07 20:58:00 11890 1

转载 VC实用小知识总结

VC实用小知识总结 marqueesHeight2=18;stopscroll2=false;icefable3.scrollTop=0;with(icefable3){ style.width=0; style.height=marqueesHeight2; style.overflowX="visible"; style.overfl

2006-07-20 13:35:00 945

原创 获取路径

 /*-------------------获取当前工作路径------------------------------------*/  char buffer[_MAX_PATH];  if( _getcwd( buffer, _MAX_PATH ) == NULL )   AfxMessageBox("程序出错退出!");  else   printf( "%s/n", buffer )

2006-07-19 11:00:00 843

原创 文档的打印(1)

文档的打印1.     MFC打印体系结构MFC的打印工作大致按如下步骤进行:[1]    显示Print对话框。[2]    创建一个与当前打印机设置相匹配的设备上下文(CDC)对象。[3]    设置要打印的页数。[4]    调用CDC::StartDoc开始打印。[5]    调用CDC::StartPage开始打印一页。[6]    调用视图的OnDraw

2006-04-07 17:37:00 1445

原创 自定义剪贴板

在视图类中为文档创建一个新的剪切板类型。拥有这种剪贴板类型的文档可以粘贴到该剪贴板,但其他类型的文档不行。创建自己的自定义格式,要遵循在注册任何自定义剪贴板格式时,使用相同的过程;将格式名称传递给RegisterDlipboardFormat函数,然后使用其返回值作为格式表示符,具体方法是:1.    在视图类的声明文档中声明一个静态的自定义剪贴板类型:Static CLIPFORMAT

2006-04-07 11:37:00 2552

原创 序列化和反序列化

所谓序列化就是向一个数据文件中一个接一个的写入图形对象。从CObject派生的类可以序列化,但还需要以下几个条件:1.定义该类时,在类的说明文件中使用DECLARE_SERIAL(CLASSNAME)宏;2.定义一个不带参数的构造函数(默认构造函数)。3.在类的实现文件中使用IMPLEMENT_SERIAL(CLASSNAME, BASECLASS)宏;4.重载Serializ

2006-03-30 09:32:00 1532

原创 数据结构设计

MFC提供的集合类来管理文档数据,MFC提供几种处理对象数组的类,如集合类,这些集合类表现为下列两种风格:1.模板为基的集合类2.非模板为基的集合类每个集合类又进一步按他的元素类型和他的形加以区分。集合的形指明在集合每如何组织数据,MFC提供3种通用集合类的形:Array:数组,有次序性,可以动态增减其大小,索引值为整数。List:双向链表,有次序形,无索引,链表有头尾,可

2006-03-28 11:13:00 2950

原创 映射模式(续)

需要注意的是:MM_ISOTROPIC 和 MM_ANISOTROPIC 这两种映射模式不能用于CScrollView.我们可以在两个函数中设定滚动视图的大小,一个是OnUpdate函数,另外一个是OnInitialUpdate函数。一般来说:如果滚动视图动态变化,则需要在OnUpdate函数中调用设置滚动尺寸的函数,否则只需要在OnInitialUpdate函数中设定滚动尺寸的初始值。

2006-03-22 17:44:00 926

原创 映射模式

MM_TEXT映射模式:在MM_TEXT中,坐标映射到像素,如果向右移动,X值增加;如果向下移动,Y值增加,但是,通过CDC函数SetViewportOrg和SetWindowOrg,可以改变原点。下面的一些代码把窗口原点在逻辑坐标中设置到(100,100),然后通过(100,100)绘制一个200*200像素的方框。逻辑点(100,100)映射到设备点(0,0)。滚动窗口使用的就是这种变

2006-03-22 11:18:00 2532

原创 VC++.NET读书笔记之MFC应用程序框架(1)

窗口对象,基类是CWnd;应用程序对象,基类是CWinThread;文档对象,基类是CDocument;1.运行时类信息支持:从Cobject派生的类要具有运行类信息的支持的特性,则需要:再定义该类时,在类说明中使用:DECLARE_DYNAMIC(CLASSNMAE)宏;在类的实现文件中使用IMPLEMENT_DYNAMIC(CLASSNAME, BASECLASS)宏。

2006-03-17 16:55:00 1000

测试管理流程培训(好东西)

在测试过程中,技术是一方面,测试中的过程管理同样也是很重要的。

2008-09-11

SQL 入门简易手册

数据库学习资料,很适合初学者,好东西要学会分享了。

2008-09-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除