cjweffort

博客园 首页 联系 订阅 管理
上一页 1 2 3 4 5 6 ··· 14 下一页

2013年6月3日

摘要: DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC(运行时类型识别宏)DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE(动态生成宏)DECLARE_SERIAL和IMPLEMENT_SERIAL(永续生存宏)DECLARE_MESSAGE_MAP和BEGIN_MESSAGE_MAP,ON_COMMAND,END_MESSAGE_MAP(消息映射宏)参考文献:深入浅出MFC-侯捷 阅读全文
posted @ 2013-06-03 09:09 cjweffort 阅读(304) 评论(0) 推荐(0) 编辑

摘要: MFC程序的初始化过程参考文献:深入浅出MFC-侯捷下面交代主要的类:下面列出主要的类和一些重要的函数:程序的流程如下:总结起来如下: 阅读全文
posted @ 2013-06-03 08:46 cjweffort 阅读(140) 评论(0) 推荐(0) 编辑

2013年6月2日

摘要: 消息映射参考文献:深入浅出MFC-侯捷定义数据结构:数据结构图解:(头文件中消息映射的实现部分DECLARE_MESSAGE_MAP)实现文件中消息映射的实现部分(BEGIN_MESSAGE_MAP,ON_COMMAND,END_MESSAGE_MAP)因此各类可以进行如下声明:最终会形成一个消息流动网络消息流动//很重要的图,标示出各类别的OnCmdMsg的调用先后顺序,各类别的OnCmdMsg作为消息流动的“转辙器”。即消息流动路线是由下图所决定的//CmyFrame对象获得一个WM_COMMAND消息时,消息流动路线//CmyFrameWnd对象的消息流动总路线:注:当CmyView对象 阅读全文
posted @ 2013-06-02 22:52 cjweffort 阅读(291) 评论(0) 推荐(0) 编辑

摘要: 永续生存MFC中很重要的一个模块:负责实现资料的读写过程,即数据该怎么去保存到硬盘中和从硬盘中取出来。参考文献:深入浅出MFC-侯捷对象导向有一个术语:Persistence,有了此机制之后,对象就能永续保存。MFC有一套Serialize机制,目的在于把档名的选择,文件的开关,缓冲区的建立,资料的读写,萃取运算子(>>)和嵌入运算子(Serialize(*this)负责输出,将这些数据存储到序列化文件.SCB文件中。等到读档的过程需要用到SCB文件。写档总结:程序组织数据,通过arr>操作,而不重载<<操作。书本中的解释是WriteObject操作不需要CRun 阅读全文
posted @ 2013-06-02 19:34 cjweffort 阅读(418) 评论(0) 推荐(0) 编辑

2013年6月1日

摘要: 动态生成参考文献:深入浅出MFC-侯捷开始着手剖析动态生成的实现有了类别型录网,就可以开始着手解决棘手的动态生成问题。动态生成的困难点在于你没有办法在程序执行期间,根据动态获得的一个类别名称(通常是读档),要求程序产生一个对象。如果我们能够把类别的大小记录在类别型录中,把构造函数(CruntimeClass::CreatObject)也记录在类别型录中,当程序在执行期间获得一个类别名称,它就可以在类别型录中找出对应的元素,然后调用其构造函数(这里所指的并非是C++中的构造函数),产生出对象。因此可在CRuntimeClass中加以改进下,新的数据结构如下:因此如果有一下语句,就可以组织成一棵大 阅读全文
posted @ 2013-06-01 09:41 cjweffort 阅读(203) 评论(0) 推荐(0) 编辑

2013年5月31日

摘要: RTTI(运行时类型识别) 参考文献:深入浅出MFC-侯捷怎样去构造类别型录网?一、定义数据结构:其中pFirstClass指针属于痊愈变量,所以它应该以static修饰之。而且我们最终希望达到以下这样子的效果:构造成如下的类别型录二、具体做法:1.在头文件和cpp文件中放入两个神奇的宏:(1)DECLARE宏的定义只.在头文件中放入声明宏,则等价于下面定义:(2)IMPLEMENT宏的定义只要在cpp文件中放入IMPLEMENT宏,则等价于下面的语句2.对于Cobject(最基类),需要另外定义特殊的宏,不能套用之前的:设计如下:并且此时CruntimeClass的static成员变量需要初 阅读全文
posted @ 2013-05-31 21:20 cjweffort 阅读(205) 评论(0) 推荐(0) 编辑

2013年5月22日

摘要: 学习算法导论:对于矩阵A(2,3)*B(3,5)其运算次数为2*3*5;对于矩阵A(2,3)*B(3,5)*C(5,4)存在两种运算结合顺序,运算次数分别为2*3*5+2*5*4=70以及3*5*4+2*3*4=84,显然运算次数不同。给定一系列矩阵A1A2A3...An,由于矩阵乘法符合结合律,所以不同的结合顺序,运算效率完全不同,求出运算效率最高的结合顺序。枚举法:假设P(n)为一系列n个矩阵可能的括号化方案数,则[1]可得到[1]动态规划学习:(1)寻找最优子结构记Ai...j表示乘积AiAi+1...Aj的值,则A1...n的最优括号化将乘积在Ak和Ak+1之间分开(1 #includ 阅读全文
posted @ 2013-05-22 13:44 cjweffort 阅读(743) 评论(0) 推荐(0) 编辑

2013年4月16日

摘要: 引用icansaymyabc的话语:解决方案如下socket程序是与操作系统紧密相关的,它异步调用了各种系统资源。你的问题我见得多了,实质上就是在socket的异步操作尚未得到应答之前你的单线程工作流已经把socket对象销毁了。单步调试之所以成功是因为你在每一个语句执行完后给了很大的停顿,使得socket对象在被销毁前有机会干完工作。解决办法1:把你的源程序每个语句之后加一条Sleep(5000),这样留出足够的时间给socket对象干活。//这种方案试过,太棒了,困扰了一天的问题终于解决。解决办法2:把你的程序改成多线程的或异步的,要确保socket对象完成了本职工作才能销毁它。 阅读全文
posted @ 2013-04-16 23:53 cjweffort 阅读(559) 评论(0) 推荐(0) 编辑

2013年3月27日

摘要: 好奇怪的表达方式,这道题的英文给跪了第三行的序列居然是给出依次要进行比较的老鼠的标号。11 3 25 18 0 46 37 3 19 22 57 56 10 6 0 8 7 10 5 9 1 4 2 3先比较第6,0,8号老鼠,此为第一组,7,10,5为第二组,后面类推...机试这样子考察英文// 1056. Mice and Rice.cpp: 主项目文件。 #include "stdafx.h" #include #include const int N=1003; int mice[N],per[N],rank[N]; bool used[N]; int main() 阅读全文
posted @ 2013-03-27 21:55 cjweffort 阅读(206) 评论(0) 推荐(0) 编辑

2013年3月24日

摘要: 学习完全背包// 题目1494:Dota.cpp: 主项目文件。 #include "stdafx.h" #include #include #define max(a,b) a>b?a:b const int N=203; int value[N],volumn[N]; const int M=1003; int dp[M]; int main() { int n,m,totalVolumn; while(~scanf("%d%d%d",&n,&m,&totalVolumn)){ memset(dp,0,sizeof(dp 阅读全文
posted @ 2013-03-24 23:02 cjweffort 阅读(125) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 14 下一页