现在位置: 首页 > 自动控制 > 工业·编程 > 文章
2012-09-12 19:46 工业·编程 ⁄ 共 4692字 暂无评论
CRectTracker(俗称“橡皮筋”类)是一个非常有意思的类。你在Windows中经常看到这样的情况:它可以用做显示边界,你也可以扽它的八个角用来放大缩小,或做框选使用。如何通过编程来实现这种功能呢?这就是CRectTracker类的作用。 例子(源程序) 你打开上面的那个工程文件,编译运行一下。你将看到CRectTracker的几种功能;  下面让我们来从头做一个新的工程文件,来慢慢掌握它的功能吧。 建立一个单文档的工程文件,...
阅读全文
2012-09-12 19:31 工业·编程 ⁄ 共 1222字 暂无评论
1,删除一个元素 比如:vector vecID; 中保存了m个ID,这时要删除第n个ID。 遍历是一个方法;即vector::itertor it = vecID.begin(); 然后++it n次。 更好的方法是:vector::itertor it = vecID.begin() + n; vector的迭代器直接支持这种偏移。 然后用vecID.erase(it)方法 删除该元素。 2.去除一个容器中有特定值的所有对象 1)如果容器是vector、string或deque,使用erase-remove惯用法,例如 c.erase(remove(c.begin(), c.end...
阅读全文
2012-09-12 18:58 工业·编程 ⁄ 共 2679字 暂无评论
如何为我的游戏实现一个UI系统,这个问题我想了很久,不过我现在可不像开始的时候那样一点思路也没有。如果你也被这个问题所困扰,我十分乐意与你分享这几天来的学习成果。嘿嘿,我是不是有点得意忘形了? 在开始之前,我要提醒你,学而不思则惘。在看这篇文章的时候,请时刻保持头脑清醒,如果有什么不太明白的话,请停下一两分钟,好好想想,这篇文章可不是囫囵吞枣就能看懂的哦!此外这篇文章是建立在部分实例和猜测的基础上...
阅读全文
2012-09-11 12:43 工业·编程 ⁄ 共 606字 暂无评论
1. 手动添加NM_CUSTOMDRAW 2.处理函数: NMLVCUSTOMDRAW* pNMCD = (NMLVCUSTOMDRAW*)(pNMHDR); if (CDDS_PREPAINT == pNMCD->nmcd.dwDrawStage) { *pResult = CDRF_NOTIFYITEMDRAW; } else if (CDDS_ITEMPREPAINT == pNMCD->nmcd.dwDrawStage) { *pResult = CDRF_NOTIFYSUBITEMDRAW; } else if ((CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pNMCD->nmcd.dwDrawStage) { COLORREF clrNewTextColor, clrNewBkColor; int nIte...
阅读全文
2012-09-11 12:41 工业·编程 ⁄ 共 987字 暂无评论
#ifndef _CREATE_MULTIPLE_FILE #define _CREATE_MULTIPLE_FILE #include <vector> //检查目录是否存在 static BOOL FolderExist(const CString& strPath) { WIN32_FIND_DATA wfd; BOOL reVal = FALSE; HANDLE hFind = FindFirstFile(strPath , &wfd); if ((INVALID_HANDLE_VALUE != hFind) && (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { reVal = TRUE; } FindClose(hFind); return reV...
阅读全文
2012-09-11 12:40 工业·编程 ⁄ 共 412字 暂无评论
    因为自己想要实现隐藏,所有去网上查了很多资料,查到的几乎全是对CListCtrl的重载或是将列宽设为0,但当列宽设为0时,有一缺陷,就是用鼠标改变列宽时,可以将设为0宽度的列托出了,而重载CListCtrl感觉好麻烦,因为自己只需要隐藏几列内容,所以就想用设列宽为0,然后想办法,不让修改列宽就OK。     可当我查看如何禁止修改列宽时,又傻眼了,因为又得对CHeaderCtrl进行重载。  ...
阅读全文
2012-09-11 12:39 工业·编程 ⁄ 共 2185字 暂无评论
1.当与文档类关联的视图类收到文档类通过UpdateAllVIews()函数发出的更新重绘通知后,会触发视图类的OnUpdate()函数的实现(#add 观察者模式)。 UpdateAllVIews()的原型和特性: Void UpdateAllVIews (CView* pSender, LPARAM lHint, CObject* pHint);        pSender: 指向修改该文档内部数据的视图(这样可以免去通知这个已经更新的视图重新更新)。        lHin...
阅读全文
2012-09-11 12:38 工业·编程 ⁄ 共 6121字 暂无评论
一、什么是虚拟列表控件 虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。 二、为什么使用虚拟列表控件 我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题: 1是仅仅在ListCtrl中插入少量的数据,比如100...
阅读全文
2012-09-11 12:36 工业·编程 ⁄ 共 239字 暂无评论
宏观,即系统设计与架构;微观,即算法精确实现, 两条路,选一条坚定地走下去,可有所成。夹在中间的则是添砖加瓦的码农,如果不脱离这个层次,则只能面临淘汰。 我,似乎适合宏观,天赋所致。 框架先这么定,具体以后再详述。 C/S架构要点:C要炫,S要海量吞吐量,稳定性 预备话题:项目API,类API的独立性, 好代码特征:搜索结果最小化 C API的设计广泛采用前缀法.通常函数和类型前缀大小写相反,比如openGL函数名以gl开头,类型以GL...
阅读全文
2012-09-11 12:33 工业·编程 ⁄ 共 728字 暂无评论
记得以前面试的时候被问到一个问题:“你平时业余时间有没有读过什么开源的代码,谈谈是如何读的?以及有什么收获”。 问题很好,当时却答得不怎么样,可能那时经历有限,也一直记着这个问题,常常在思考,现在写一些简单体会。 我觉得读代码有几个步骤,刚开始就说去看架构文档,我觉得那是扯蛋,如果你基本没有看过里边的几行代码,架构是看不出来的,文档看过之后,似乎也没太大作用,过后即忘。唯有多花些时间,在代码里来回查...
阅读全文