随笔分类 - VC++
C++、VC学习吧
摘要:可以看出:
1. 编译期:必须要提供的是类的头文件,以使编译器可以得知类实例的尺寸和内存布局。
2. 链接期:必须要提供的是程序中引用过的,类的成员函数、静态函数、静态数据成员的地址,以使链接器可以正确的生成最终程序。
阅读全文
摘要:左击选中单元格,右击进入编辑状态。
MFC自定义控件的添加方法
C#自定义控件编译后就自动出现在工具箱里。
MFC的自定义控件需要先拖个基类到对话框上,然后添加一个控件变量。
再修改源代码中的控件名为扩展控件名,比如你拖一个Button上去,
添加一个变量m_btnXXX;再修改为你的自定义控件类名:
MyButton m_btnXXX;
然后就可以使用了。
阅读全文
摘要:由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。
用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。
阅读全文
摘要:设置CTreeCtrl的Always Show Selection:True
CListCtrl的Always Show Selection:False
在NM_CUSTOMDRAW事件中添加如下代码
阅读全文
摘要:用最简单的语言最简短的代码解释单例模式(Singleton)
GOF的《设计模式》中这样描述:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
阅读全文
摘要:之前遇到过,搜了半天,没记录,今天又遇到了,又搜了半天。
当你希望打开对话框时,CListCtrl默认选择一项时,这个很有用。
不知道MFC为什么这么简单的功能要搞这么复杂。
可能认识不够吧,总结点是点。
阅读全文
摘要:用两种遍历方法删除两个std::vector的交集。
今天用到vector的find();与erase();
绊住了一会,觉得即使简单的东西也有必要记一下。
防止下次花时间。
阅读全文
摘要:为对话框添加WM_MOUSEHOVER或WM_MOUSELEAVE消息并不会响应。
MFC需要特殊处理,其中一法就是使用TRACKMOUSEEVENT
阅读全文
摘要:有两种方法:
1.作为成员函数,接受一个参数。
2.作为友元函数,接受两个参数。
阅读全文
摘要:几个要点:
1.对话框中启动新线程。把句柄做参数传递。
2.线程类中定义静态函数,也可以在对话框类中定义个全局函数。
3.线程回调函数必须是静态,且以void*为参数。
4.定义自定义消息,线程类发送,对话框类响应。
阅读全文
摘要:用WM_COPYDATA的前提:
1,知道接收消息进程的句柄。
2,接收消息进程重载了WM_COPYDATA消息映射。
注意乱码的处理。
阅读全文
摘要:CFileDialog会自动记住上一次路径,
SHBrowseForFolder需要写个回调函数,
传值给BROWSEINFO
阅读全文
摘要:使用transform();全转化为小写,然后对比string
string与CString互相转换:
string str;
CString s;
s = str.c_str();
str = s;
阅读全文
摘要:我知道这种用法,但是不知道这属于什么语法,请教高手。
在源文件.cpp中包含(#include)一个类的头文件,在头文件中使用这个类。
只能在头文件中定义指针变量,并且要用一种特别的语法:
阅读全文
摘要:使用sizeof(array) / sizeof(array[0])
作为C#开发者,我想说:真TMD麻烦。
阅读全文
摘要:以对话框为父窗口创建的菜单,菜单响应函数可以写在对话框类中。
菜单响应函数的映射和普通菜单响应映射一样。
但是菜单状态更新命令,需要特殊处理。
阅读全文
摘要:char **p和char *p[]基本一样,
区别讲不出来,写个例子体会吧。
char *c与char c[]的区别是前者是常量。
说点题外话,学习编程应该是先学会用,在使用的过程中慢慢领悟。
对于有点难度的知识点,一下子可能没有办法完全搞清楚。
阅读全文
摘要:如果类A希望类B可以访问它的私有成员,
可以把类B设置为友元类。
阅读全文
摘要:主菜单在App里创建,主菜单响应函数不能在普通类中响应。
对话框中的右键菜单,如果把对话框指针传进去。
则右键菜单命令可以在对话框类中实现。
阅读全文
摘要:这里涉及到MFC控件开发许多知识点:
消息响应,窗口绘制,根据鼠标点击位置取得行列信息。
阅读全文