- 博客(16)
- 资源 (9)
- 收藏
- 关注
原创 待解决问题提醒
为什么线程中那套AfxGetMainWnd()->MDIGetActive()->GetActiveView();不能使用,暂且不考虑类型问题,因为类型问题已经测试过,没用。为什么在创建文档的时候,在CView类的OnInitUpdate里面得想得到与文档关联框架指针是空呢?
2011-02-25 14:47:00 787
原创 MFC工作线程中获得视图类指针问题
今天写的代码很无语,原来稳稳妥妥的代码,在线程中却神乎其神的不管用了。我查了网上的资料,只收集到一位高手的留言:通常来讲,在MFC中,跨线程是不能传递CWnd对象指针的。因为在每个线程中都有一个自己的内部map,该map记录了HWND和与之对应的CWnd对象。当一个CWnd对象被创建时,它的HWND和CWnd对象指针就会被记录到该线程中的map,但其他的线程的map没有记录。 当跨线程传递C
2011-02-24 21:07:00 3366
原创 MFC的工作线程揭秘-CWinThead自动删除揭秘
呵呵,说揭秘其实是说给自己听的,因为今天做了个MFC多线程优先级的例子,在线程里面使用了AfxGetMainWnd()->MDIGetActive(),返回值类型暂不讨论,就是这套东西在线程中具有诡异现象,查了一点说是线程里面有个map记录了窗口指针和其句柄的映射关系,使得有些指针不好使。等查明后在补全这里。 今天主要写的是另一个问题,创建工作线程时,AfxBeginThread返回的CW
2011-02-24 20:47:00 6514 4
原创 MDI的多种文档类型
由于具体细节比较复杂,只说一下大道上的。回想不起来就看《深入浅出MFC》。嘿嘿! 要实现多文档类型,主要是要添加相应的DocTemplate,然后在用App里面的AddTemplate将文档类型保存起来。在创建新的文档类型是:要分别为原来的文档类型准备相应的一套资源(菜单,图标等)(手动添加),以及添加这套资源对应的字符串资源。然后就完成相应的CDoc类,CView类,CMDIChildF
2011-02-23 22:55:00 1366
原创 CSpitterWnd的自动调整大小
通过CDocTemplate我们可以再在新建窗口的时候,其中的创建过程《深入浅出MFC》已经讲解,这里我大体缕一下。1:通过找到相应的文档模板。2:通过文档模板动态创建相应的文档类,框架类,视图类。3:三者的创建顺序是,先文档类,后创建框架类,框架类通过LoadFrame完成创建,然后发出的WM_CREATE消息,会激发OnCreate函数,而此函数调用OnCreateHelpre,此
2011-02-23 13:54:00 4180 5
原创 utf-8与unicode
字符编码是从ASCII开始,那时候美国为了解决的字符问题,提出了ASCII码。每个字符占用一个字节。但ASCII编码实际只用了7位,空了一位。后来等计算机传播开来,欧洲的各个国家出现了新的字符编码的问题。如法国,出现了很多在英文字符上面加标记的字符,所有实际字符超过128种,但正好,一个字节总共8位,原来ASCII原来不用的那一位就派上用场了。但是这使得欧洲的各个国家之间的字符编码有冲突,也就是说
2011-02-22 21:46:00 708
原创 MFC零散知识点收集站
1:截获消息改写CWinApp的PreTranslateMessage()函数,用来在消息被派送的TranslateMessage和DispatchMessage之前对消息进行过滤。所以可以在这里对消息进行截获。截获的方法是直接返回return TRUE; 如果只是简单对消息进行加工,就采用默认的return CWinApp::PreTranslateMessage(pMsg);
2011-02-19 13:59:00 802
原创 MFC 多视图同步画图解决方案
今天看《深入浅出MFC》时,看到要做多视图同步画图问题,此书上刚介绍完单视图画图后,引出多视图画图的问题(多视图是指一个子视图窗口中多个视图区域,由SpliiterWnd分割生成的)。存在相互通知,并特别强调绘图效率的问题。我迫不及待的用自己的想法实现了这个高效率绘图问题。后来看了一下书上的方法,确实也不错,但感觉比我的绘图效率低。我的绘图方法其实是因为书上开始讲的单视图绘图的方法,给了我一个用此
2011-02-19 11:47:00 3987
原创 类成员函数指针区别于用法
通常的函数指针大家已经非常熟悉了。但我们今天讨论一下类成员函数指针的用法。今天我们来看一下成员函数指针,加入我们想要声明一个 void CTest::Show()成员函数指针类型,那么我们一般的做法是:typedef void(CTest::*pShow)();从上面可以看出一些和一般函数指针类型不同的地方。让我们把他和一般的函数声明比较一下。下面是一般的函数声明:typedef
2011-02-16 23:22:00 1719
原创 非MFC规则DLL用法总结
今天让我总结以前前几天断断续续从网上学习的DLL用法。首先呢?首先呢DLL可以看做可以从其他地方拿过来用的容纳变量和函数的仓库,我们的仓库经历了“无库-静态链接库-动态链接库”。 首先我们看看静态链接库和动态链接库的区别。静态链接库在和你程序编译的时候把它本身也加到到exe文件里面了,当然是指它本身被编译后的二进制码。而动态链接库则不然,我们一般通过动态链接库的lib文件和
2011-02-16 23:19:00 1963
原创 C++输入输出零散点
C++中文件打开模式一个需要注意的模式:ios_base::ate:此模式在C++中,单独使用或者配合std::ios_base::out会截断文本。但如果配合std::ios_base::in|std::ios_base::out则是追加到末尾。不会出现第一个字节在末尾,然后其他的从头开始覆盖。 C++中c语言的标准输出printf:printf("%02x",12);%x是
2011-02-15 23:04:00 1116
原创 #define用法总结
刚开始接触VC++的同学们,估计对这个东西有这莫大的恐惧。这个经常写在添加头文件的地方的奇怪语句。如果看过mfc那么,那么拿出一些application framework里面的宏,估计会吓死一片。说了这么多只是想说,不明白其用法的人很害怕,但要是知道它,熟悉它,那么你会觉得它很美妙。 进入正题:#define的个用法: 1:#define MAX 0x18第一个用法
2011-02-15 20:02:00 10328 2
原创 内存对齐用法小结
今天偶然在贴吧里面看到有人问struct A{ char a; double b;}; 使用C++的sizeof(A);结果为:16。 已经周折才把这个搞明白了。 下面我来说一下,看你能看的懂吗: 从大的方面来讲,今天我们说的这个内存边界对准,其实是为了提高内存访问速率,同时也提高了程序的可移植性。我主要说明提高内存访问速率。
2011-02-14 14:48:00 1107
原创 虚函数重要性质总结
我们经常用虚函数完成运行时的类函数多态行为。这是很基本的了。 但是我们想这样一个问题?如果我们想我们的类层次结构实现一个函数多态,那么我们就会想着为我们类层次结构中的基类添加虚函数,然后派生类依次重写。但是不是只有直接调用虚函数才能实现多态行为呢? 别忘了,我们函数之间是可以相互调用的,你也看到我说的是直接。所以,我们可以通过基类一个普通函数,让此普通函数调用虚函数,实现派
2011-02-12 19:33:00 1236
原创 C++中的零散重要知识点
(一):类相关static 在类中的关键是用在类中的静态变量除了整型,枚举类型(枚举也是以整型存储的)的const类型可以在类中初始化。其他的都不能在类中初始化。(注意还必须是const类型才能)如果不是整型或枚举的const类型,那么都要在类外初始化。如:class A{ static int a;};int A::a=1;其中类的静态成员初始化不受访
2011-02-11 18:27:00 2348 4
原创 typedef的用法小总结
首先是typedef历史遗留问题,经常看到很多人写结构体就写:typedef struct _A{int a;int b;}A; A b;我就一直很纳闷,为什么不直接写_A b呢?昨天查资料才知道,原来这个是因为c语言遗留下来的,在C语言中,结构体对象声明必须加关键字struct,所以按C语言语法是:struct _A b;大家都知道程序员很讲究效率,编代码也是,能少些一
2011-02-11 11:22:00 1123 1
protobuf-2.0.5编译完成版
2014-08-19
DumpBatchProcess
2014-04-08
CEGUI-0.7.4_输入法案例相关代码及资源
2014-02-13
CEGUI-0.7.4以上版本-vs数据格式化调试
2013-07-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人