- 博客(25)
- 资源 (57)
- 收藏
- 关注
原创 控件移动
GetClientRect的CRect是相对它的窗口的客户区的原点而言的,即它的左上角坐标总是(0,0),大小总是客户区的长宽。GetWindowRect得到的CRect则是相对于屏幕坐标而言的,它的左上角坐标就是窗口在屏幕上的左上角坐标,它的大小就是整个窗口的大小。ClientToScreen,可以把一个CPoint对象或CRect对象的坐标从客户区坐标系(以客户区左上角为原点)变换为屏
2012-12-29 01:12:04 1430
原创 copy构造隐藏的陷阱
copy构造当你看到赋值符号时要小心,因为"="语法也可用来调用copy构造函数。例如: Widget w3 = w2; //调用copy构造函数!!copy构造函数是一个尤其重要的函数,因为它定义一个对象如何passed by value(以值传递)。举个例子,考虑一下代码:bool hasAcceptableQuality(Widget w);...
2012-12-20 08:39:34 1139 2
原创 由accumulate()扩展出来的一系列方法
由accumulate()扩展出来的一系列方法 默认情况下,accumulate()函数将operator+操作应用到容器中所有元素,然后返回这些元素相加的累积结果。对于整数集合来说,如果提供给accumulate()函数的初始值为0,那么该函数返回的结果就是集合中所有元素的和。accumulate()函数不仅可以进行对象相加,而且可以对容器元素进行任何操作(前提是元素支持这种操作),
2012-12-14 14:17:20 1698
原创 设计模式学习-----访问者模式
访问者模式 GOOD:适用于数据结构稳定的系统。它把数据结构和作用于数据结构上的操作分离开,使得操作集合 优点:新增加操作很容易,因为增加新操作就相当于增加一个访问者,访问者模式将有关的行为集中到一个访问者对象中。#include #include #include using namespace std;class Man;class Woman;//行
2012-12-13 15:03:36 921
原创 设计模式学习-----解释器模式
解释器模式 GOOD:通常当一个语言需要解释执行,并且你可以将该语言中的句子表示成为一个抽象的语法树时,可以使用解释器模式。#include #include #include using namespace std;class Context;class AbstractExpression{public: virtual void Interpret(Cont
2012-12-13 15:00:44 719
原创 设计模式学习-----享元模式
享元模式 GOOD:运用共享技术有效地支持大量细粒度的对象(对于C++来说就是共用一个内存块啦,对象指针指向同一个地方)。如果一个应用程序使用了大量的对象,而这些对象造成了很大的存储开销就应该考虑使用。还有就是对象的大多数状态可以外部状态,如果删除对象的外部状态,那么可以用较少的共享对象取代多组对象,此时可以考虑使用享元。#include #include #includ
2012-12-13 14:51:08 865
原创 设计模式学习-----中介者模式
中介者模式 GOOD:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而降低耦合;而且可以独立地改变它们之间的交互。#include #include #include using namespace std;class Colleague;//中介者类class Mediator{public: virtual void Send(
2012-12-13 14:39:18 900
原创 设计模式学习-----命令模式
命令模式GOOD:一、建立命令队列;二、可以将命令记入日志;三、接收请求的一方可以拒绝;四、添加一个新命令类不影响其它类;命令模式把请求一个操作的对象与知道怎么操行一个操作的对象分开 #include #include #include using namespace std;//烤肉师傅class Barbucer{public: voi
2012-12-11 15:11:23 795
原创 设计模式学习-----桥接模式
桥接模式 GOOD:将抽象部分与实现部分分离,使它们可以独立变化。 这里说的意思不是让抽象基类与具体类分离,而是现实系统可能有多角度分类,每一种分类都有可能变化,那么把这种多角度分离出来让它们独立变化,减少它们之间的耦合性,即如果继承不能实现“开放-封闭原则”的话,就应该考虑用桥接模式。如下例:让“手机”既可以按品牌分类也可以#include #include #inc
2012-12-11 15:03:52 814
原创 设计模式学习-----组合模式
组合模式 GOOD:整体和部分可以被一致对待(如WORD中复制一个文字、一段文字、一篇文章都是一样的操作)#include #include #include using namespace std;class Component{public: string m_strName; Component(string strName) { m_strName
2012-12-11 14:50:48 896
原创 设计模式学习-----备忘录模式
备忘录模式 GOOD:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将以后的对象状态恢复到先前保存的状态。适用于功能比较复杂的,但需要记录或维护属性历史的类;或者需要保存的属性只是众多属性中的一小部分时Originator可以根据保存的Memo还原到前一状态。#include #include using namespace std;
2012-12-11 14:40:21 1483
原创 设计模式学习-----适配器模式
适配器模式 GOOD:双方都不适合修改的时候,可以考虑使用适配器模式。#include #include using namespace std;class Player{protected: string name;public: Player(string strName) { name = strName; } virtual void Attack()=
2012-12-11 14:35:31 837
原创 设计模式学习-----状态模式
状态模式GOOD:当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,可考虑用到状态模式。#include using namespace std;class Work;class ForenoonState;class NoonState;class State{public: virtual void WriteProgram(Work*
2012-12-11 14:26:17 851
原创 设计模式学习-----抽象工厂模式
抽象工厂模式GOOD:定义了一个创建一系列相关或相互依赖的接口,而无需指定它们的具体类。用于交换产品系列,如ACCESS->SQLSERVER;产品的具体类名被具体工厂的实现分离#include #include #include using namespace std;//用户抽象接口class IUser{public : virtual void Get
2012-12-11 14:18:11 881
原创 设计模式学习-----观察者模式
观察者模式GOOD:定义了一种一对多的关系,让多个观察对象(公司员工)同时监听一个主题对象(秘书),主题对象状态发生变化时,会通知所有的观察者,使它们能够更新自己。转载请注明,文章来自:http://blog.csdn.net/windows_nt示例:#include #include #include using namespace std;class Secre
2012-12-06 08:46:27 1412 2
原创 设计模式学习-----建造者模式(生成器模式)
建造者模式(生成器模式)GOOD:在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用。转载请注明,文章来自:http://blog.csdn.net/windows_nt示例1:#include #include #include using namespace std;//最终的产品类class Product {private: ve
2012-12-06 08:27:58 1179
原创 MFC常用操作
1、获取本程序的运行目录TCHAR AppPathName[MAX_PATH];HINSTANCE hwnd = AfxGetAppModuleState()->m_hCurrentInstanceHandle;GetModuleFileName(hwnd,AppPathName,MAX_PATH); CString strModulePath(AppPathName);int nBi
2012-12-05 10:44:09 983
原创 设计模式学习-----外观模式
外观模式GOOD:为子系统的一组接口提供一个一致的界面。使用户使用起来更加方便。转载请注明,文章来自:http://blog.csdn.net/windows_nt例:#include#include using namespace std;class SubSysOne{public: void MethodOne() { cout<<"方法一"<<end
2012-12-04 19:51:47 773
原创 设计模式学习-----模板方法模式
模板方法模式 GOOD:把不变的代码部分都转移到父类中,将可变的代码用virtual留到子类重写。迪米特法则 如果两个类不直接通信,那么这两个类就不应当发生直接的相互作用。如果一个类需要调用另一个类的某个方法的话,可以通过第三个类转发这个调用。 在类的结构设计上,每一个类都应该尽量降低成员的访问权限。
2012-12-04 16:21:39 634
原创 设计模式学习-----原型模式
原型模式 GOOD:从一个对象再创建另外一个可定制的对象,而无需知道任何创建的细节。并能提高创建的性能。 说白了就COPY技术,把一个对象完整的COPY出一份。转载请注明,文章来自:http://blog.csdn.net/windows_nt例:#include#include #include using namespace std;class Protot
2012-12-04 15:58:22 702
原创 设计模式学习-----工厂方法模式
工厂方法模式 GOOD:修正了简单工厂模式中不遵守开放-封闭原则。 工厂方法模式把选择判断移到了客户端去实现,如果想添加新功能就不用修改原来的类,直接修改客户端即可。转载请注明,文章来自:http://blog.csdn.net/windows_nt例:#include #include using namespace std;//实例基类,相当于Prod
2012-12-04 15:43:44 678
原创 设计模式学习-----代理模式
代理模式GOOD:远程代理,可以隐藏一个对象在不同地址空间的事实 虚拟代理:通过代理来存放需要很长时间实例化的对象 安全代理:用来控制真实对象的访问权限 智能引用:当调用真实对象时,代理处理另外一些事转载请注明,文章来自:http://blog.csdn.net/windows_nt例:#include #include using names
2012-12-04 15:33:59 693
原创 设计模式学习-----装饰模式
装饰模式 动态地给一个对象添加一些额外的职责(不重要的功能,只是偶然一次要执行),就增加功能来说,装饰模式比生成子类更为灵活。建造过程不稳定,按正确的顺序串联起来进行控制。 GOOD:当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功 能),就会增加类的复杂度。装饰模式就是把要添加
2012-12-03 19:59:36 695
原创 设计模式学习-----策略模式
策略模式定义算法家族,分别封装起来,让它们之间可以互相替换,让算法变化,不会影响到用户GOOD:适合类中的成员以方法为主,算法经常变动;简化了单元测试(因为每个算法都有自己的类,可以通过自己的接口单独测试。 策略模式和简单工厂基本相同,但简单工厂模式只能解决对象创建问题,对于经常变动的算法应使用策略模式。BUG:客户端要做出判断转载请注明,文章来自:http://blog
2012-12-03 18:07:17 894
原创 设计模式学习-----简单工厂模式
简单工厂模式 主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。GOOD:适用于不同情况创建不同的类时BUG:客户端必须要知道基类和工厂类,耦合性差转载请注明,文章来自:http://blog.csdn.net/windows_nt 例:#include us
2012-12-03 17:28:23 900
CxSkinButton
2013-11-11
文字转语音文字朗读文字生成MP3
2018-08-28
语音转文字录音转文字语音识别
2018-08-28
监控视频人脸搜索,视频人脸导出
2018-08-27
音频降噪录音去噪语音降噪
2018-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人