VC2008学习笔记
VC2008学习笔记
1.Unicode文件的开头两个字节固定为0xffef或者0xefff;
2.memcpy函数的第三个参数为字节数,而非字符数,Unicode环境下尤其要注意;
3.GetBufferSetLength的参数为字符数,而非字节数,同样Unicode环境下要注意;
4.vc2008查看内存的方法:vc2008 IDE->调试->窗口->内存,可选4个内存窗口进行查看内存值;
5._countof函数的参数不能为指针类型,否则会出错;
6.用VC2008进行调试时断点处不停,而且红色实心圆圈断点变为一个空心黄色圆圈断点时,可进行如下设置:VC2008 IDE->工具->选项->调试->常规->将“要求源文件与原始版本完全匹配”的复选框中的对勾去掉即可;
7.为MDI窗口添加水平与垂直滚动条
在CMainFrame中的OnCreate方法下加一句代码,如下:
lpCreateStruct->style |= WS_VSCROLL | WS_HSCROLL; // 增加垂直和水平滚动条
8.为MDI子窗口(选项卡式和无选项卡式) 添加水平与垂直滚动条
方法一:在CChildFrame中的PreCreateWindow方法下加一句代码,如下:
cs.style |= WS_VSCROLL | WS_HSCROLL;
方法二:在CXXXView::PreCreateWindow方法下加一句代码,如下:
cs.style |= WS_HSCROLL | WS_VSCROLL;
9. 添加树的双击事件
为CViewTree类添加”=NM_DBLCLK”消息, 然后在OnNMDblclk方法中实现业务即可;
10. 添加系统热键的方法
先注册热键: RegisterHotKey(this->m_hWnd,1001,MOD_CONTROL,'F');
添加消息:WM_HOTKEY, 然后会自动生成OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)方法, 实现该方法;
当不需要该热键时:UnregisterHotKey(m_hWnd, 1001);
11.添加菜单快捷键(加速键)的方法及添加事件处理程序的位置
先在menu下的某一个菜单里添加一个菜单项,例如:测试(&T)/tCtrl+T,ID为"ID_TEST"
然后在Accelerator中添加一个快捷组合键"Ctrl+T",ID要和上面一样,都为"ID_TEST"
最后为该ID_TEST添加事件处理程序即可, 对于多文档工程来说,要注意添加事件处理程序的位置对程序也有影响,下面分别来介绍:
①将菜单ID的事件处理程序添加到CMainFrame中,那么只有在关掉所有子窗口后,即只有父窗口打开时,操作该菜单时该事件处理程序有效;
②将菜单ID的事件处理程序添加到CChildFrame中,那么只要存在子窗口被打开了,操作该菜单时该事件处理程序就有效;
③ 将菜单ID的事件处理程序添加到CXXXXApp中,那么该事件处理程序对CMainFrame和CChildFrame都有效;
④菜单ID添加在CXXXXDoc和CXXXXView中时该事件处理程序无效.
12.在VC2008 IDE中建立的有默认系统菜单的工程里,按下Ctrl+S会出现保存对话框或者直接保存(不进行提示),如果希望改变这种处理方式,有两种方法:
方法一:可以在CXXXXDoc中重载CDocument中的DoFileSave()函数;
方法二:在Frame(CChildFrame/CMainFrame)中重载OnCommand()方法,通过wPara参数值来判断选择的是否为保存ID,然后实现即可.
13. 当CXXXXView继承CView时添加的滚动条无效,这时我们可以继承CScrollView,然后在CXXXXView中重载OnInitialUpdate()方法,代码如下:
void CXXXXView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
// TODO: 计算此视图的合计大小
//sizeTotal.cx = sizeTotal.cy = 1024;
OnDraw(this->GetDC()); // 之所以在这里调用OnDraw(),是因为这个函数里计算了CXXXXDoc的大小CSize;虽然OnDraw()方法会自动调用,但却在本函数OnInitialUpdate()之后执行
sizeTotal=GetDocument()->GetDocSize(); // 这里获得CXXXXDoc的大小
SetScrollSizes(MM_TEXT, sizeTotal); // 根据CXXXXDoc的大小来设置合适的滚动条长度,当然也可以自己给定值,但是如果太小,那么就可能不会出现滚动条;如果太大,那么在视图外的部分将会显示
}
VC2008学习笔记相关推荐
- VC2008学习笔记(二)——插入WMP控件并创建类
一.在资源视图加入窗体 二.新加入的窗体 三.插入Widows Media Player控件 右键点击"插入ActiveX 控件"--选择Windows Media Player, ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- windows下32位汇编语言学习笔记
windows下32位汇编语言学习笔记 第一章 第一章 背景知识 80x86处理器的存储器 4个数据寄存器 EAX,EBX,ECX,EDX EAX寄存器 所有API函数的返回值都保存在EAX里,注意 ...
- 【C/C++】 学习笔记
[C/C++] 学习笔记 C 知识点回顾 数据类型 补码.反码 数组 函数 字符与字符串 作用域 存储类型 控制语句 指针 指针作用 内存分配 指针类型 内存分配实践 字符指针.字符数组常量.字符数组 ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 2020年Yann Lecun深度学习笔记(下)
2020年Yann Lecun深度学习笔记(下)
- 2020年Yann Lecun深度学习笔记(上)
2020年Yann Lecun深度学习笔记(上)
- 知识图谱学习笔记(1)
知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...
最新文章
- 手撕设计模式之「简单工厂模式」(Java描述)
- 华为nova6计算机在哪,华为nova6开发者选项在哪
- arcgis栅格邻域统计_ArcGIS 从基础到实战书正式出版,易智瑞技术总裁沙志友沙总推荐并亲自写序...
- java程序模拟atm机_Java项目实现模拟ATM机
- 互联网公司面试必备综合篇
- 【转】js如何准确获取当前页面url网址信息
- 直接插入排序-java
- 前后端分离的跨域请求问题解决
- win7仿win8主题
- 信息系统项目管理师(2022年)—— 重点内容:知识产权与标准规范(22)
- 一个3D城市地图应用开发工具,等你获取 ThingJS 3D 全景 可视化
- 网页短链接实现原理探究
- sql求和出现null时赋值为0
- 苹果审核2.1解决方案
- 分布式锁的实现【转载】
- 机器视觉光源选择方案
- 安装sql server 2000:以前的某个程序安装已在安装计算机上创建挂起的文件
- 不想被时代淘汰?网络工程师未来的出路在这里!
- 关于wince4.2 2k 页面 nand flash 驱动的问题
- Oracle_10g卸载