2012-09-12 19:46
⁄ 工业·编程
⁄ 共 4692字
CRectTracker(俗称“橡皮筋”类)是一个非常有意思的类。你在Windows中经常看到这样的情况:它可以用做显示边界,你也可以扽它的八个角用来放大缩小,或做框选使用。如何通过编程来实现这种功能呢?这就是CRectTracker类的作用。
例子(源程序) 你打开上面的那个工程文件,编译运行一下。你将看到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...
stl阅读全文
2012-09-12 18:58
⁄ 工业·编程
⁄ 共 2679字
如何为我的游戏实现一个UI系统,这个问题我想了很久,不过我现在可不像开始的时候那样一点思路也没有。如果你也被这个问题所困扰,我十分乐意与你分享这几天来的学习成果。嘿嘿,我是不是有点得意忘形了?
在开始之前,我要提醒你,学而不思则惘。在看这篇文章的时候,请时刻保持头脑清醒,如果有什么不太明白的话,请停下一两分钟,好好想想,这篇文章可不是囫囵吞枣就能看懂的哦!此外这篇文章是建立在部分实例和猜测的基础上...
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...
CListCtrl阅读全文
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进行重载。
...
CListCtrl阅读全文
2012-09-11 12:39
⁄ 工业·编程
⁄ 共 2185字
1.当与文档类关联的视图类收到文档类通过UpdateAllVIews()函数发出的更新重绘通知后,会触发视图类的OnUpdate()函数的实现(#add 观察者模式)。
UpdateAllVIews()的原型和特性:
Void UpdateAllVIews (CView* pSender, LPARAM lHint, CObject* pHint);
pSender: 指向修改该文档内部数据的视图(这样可以免去通知这个已经更新的视图重新更新)。
lHin...
MFC阅读全文
2012-09-11 12:38
⁄ 工业·编程
⁄ 共 6121字
一、什么是虚拟列表控件
虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。
二、为什么使用虚拟列表控件
我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:
1是仅仅在ListCtrl中插入少量的数据,比如100...
CListCtrl阅读全文
2012-09-11 12:36
⁄ 工业·编程
⁄ 共 239字
宏观,即系统设计与架构;微观,即算法精确实现,
两条路,选一条坚定地走下去,可有所成。夹在中间的则是添砖加瓦的码农,如果不脱离这个层次,则只能面临淘汰。
我,似乎适合宏观,天赋所致。
框架先这么定,具体以后再详述。
C/S架构要点:C要炫,S要海量吞吐量,稳定性
预备话题:项目API,类API的独立性,
好代码特征:搜索结果最小化
C API的设计广泛采用前缀法.通常函数和类型前缀大小写相反,比如openGL函数名以gl开头,类型以GL...
软件开发阅读全文
2012-09-11 12:33
⁄ 工业·编程
⁄ 共 728字
记得以前面试的时候被问到一个问题:“你平时业余时间有没有读过什么开源的代码,谈谈是如何读的?以及有什么收获”。
问题很好,当时却答得不怎么样,可能那时经历有限,也一直记着这个问题,常常在思考,现在写一些简单体会。
我觉得读代码有几个步骤,刚开始就说去看架构文档,我觉得那是扯蛋,如果你基本没有看过里边的几行代码,架构是看不出来的,文档看过之后,似乎也没太大作用,过后即忘。唯有多花些时间,在代码里来回查...
代码, 软件开发阅读全文