03 2017 档案

摘要:使用指针,要非常小心,今天在做一个小游戏时,就碰到一个使用原生指针的问题,找了好几个小时,才定位到问题的所在,晕。 主要是顶层逻辑中引用了一个指针,而在业务逻辑中将此指针删除了。这种在代码量很少的情况下,很容易被发现,但是代码量多了,逻辑多了的时候,想一下子定位到问题所在,就没那么容易了。 结论:避 阅读全文
posted @ 2017-03-26 02:17 shanql 阅读(657) 评论(0) 推荐(0)
摘要:从代码分析原因吧: OnIdle函数在MFC的CWinThread::Run函数中被调用,如下 CWinThread::Run又在AfxWinMain中被调用, 要运行CWinThread::Run,则需要pThread->InitInstance返回才行,但模态对话框程序有点特殊,会直接阻塞在Do 阅读全文
posted @ 2017-03-21 22:12 shanql 阅读(1457) 评论(0) 推荐(0)
摘要:一、绘制透明背景的位图,windows提供了一个API函数 TransparentBlt The TransparentBlt function performs a bit-block transfer of the color data corresponding to a rectangle 阅读全文
posted @ 2017-03-19 18:52 shanql 阅读(717) 评论(0) 推荐(0)
摘要:SetBkColor The SetBkColor function sets the current background color to the specified color value, or to the nearest physical color if the device cann 阅读全文
posted @ 2017-03-19 13:45 shanql 阅读(2506) 评论(0) 推荐(0)
摘要:以下列代码为例 以上代码最后被注释的部分,按照MSDN上的说法,要将之前的GDI对象SelectObjec回去,防止CBitmap bmpMemBmp中的GDI对象删除失败。 CBitmap析构函数调用基类的~CGdiObject,~CGdiObject中会调用 ::DeleteObject函数来删 阅读全文
posted @ 2017-03-18 22:17 shanql 阅读(491) 评论(0) 推荐(0)
摘要:使用CreateCompatibleDC 创建了内存DC之后,要再调用SelectObject选择一张位图放入此DC,然后才可以使用此DC进行绘制,之后绘制的数据会保存在内存中, 详细说明看后文。 在MFC中使用内存DC例子: 以下内容来自msdn: CreateCompatibleDC The C 阅读全文
posted @ 2017-03-18 20:13 shanql 阅读(717) 评论(0) 推荐(0)
摘要:1、用类CBitmap加载位图 2、创建内存DC, 将位图选进此内存DC 3、调用BitBlt将内存DC的内容拷贝到其它DC(通知是显示DC) 例子(来自MSDN): 阅读全文
posted @ 2017-03-18 16:22 shanql 阅读(1337) 评论(0) 推荐(0)
摘要:在OnPaint函数中,用CClientDC dc(this)代替CPaintDC(this)后,界面不断闪烁。 说明:CClientDC是对GetDC的使用封装, CPaintDC是对BeginPaint/EndPaint的使用封装 原因:BeginPaint/EndPaint会将无效区域设置为N 阅读全文
posted @ 2017-03-18 15:39 shanql 阅读(669) 评论(0) 推荐(0)