jma*_*erx -1 c++ winapi native paint visual-c++
我是c ++的新手,我正在尝试创建一个游戏.我有一个2d数组的矩形RECT_GRID.我有一个无符号短的二维数组GRID.我在WM_CREATE期间填充矩形数组
WM_PAINT事件为数组中的所有元素绘制矩形.矩形的颜色基于GRID [x] [y]的值
当按下向下键时,我这样做了,它通过将GRID [1] [XMOVE] =设置为不同的颜色来改变其中一个矩形的颜色,然后使客户端矩形无效
基本上发生了什么,它有效地工作了一段时间,但最终它只是停止绘制东西.我在调试期间检查了我的XMOVE变量,我检查了网格值和东西,一切都很好.当我从paint事件中移除for循环并专注于1个特定的矩形时,它永远不会失败,但如果我尝试一次重绘所有这些,大约20次后,它就会停止绘制内容.什么可能导致这个?我是c ++的新手,我打赌我没有正确地绘画并导致溢出或其他东西.
如果有人能解释出现了什么问题,或者正确的做法,我真的很感激.我在Google上找不到这样的例子.谢谢
编辑:
我正在使用3个全球刷HBRUSH A; HBRUSH B; HBRUSH C;
当我修改它们时,我总是说A = MakeBrush(NUM);
我正确地使用刷子吗?
我的第一个猜测,如果你是一个完全的GDI/C++新手,你可能会创造很多钢笔和画笔.这些是Windows中受限制的资源.在开始对资源征税之前,您只能创建这么多个.因此,要么立即制作您的画笔和笔等,并重新使用它们,要么在完成后正确处理它们.我建议索取一份"圣经"(http://www.amazon.com/Programming-Windows%C2%AE-Fifth-Microsoft/dp/157231995X/ref=sr_1_1?ie=UTF8&s=books&qid=1252788457&sr=8 -1)并阅读有关绘图的章节.
编辑:这听起来不像你正在修改你的画笔,但由于我看不到MakeBrush的代码,我不知道.你可能在幕后制作了很多画笔,你甚至都不知道.说真的,拿一份Petzold的书,花上一两个小时.你最后会有更多的头发!;-)