- 博客(6)
- 资源 (4)
- 收藏
- 关注
原创 利用HDC在内存上绘图
有时候,我们需要脱离控件来进行绘图,这是因为利用控件进行绘图有一定的局限性。而且有一些是他人需要用到的类时,用控件往往需要获取当前窗口指针等等操作,这个时候并不是很便利。相比较而言,利用内存直接进行回执,将图形全部回执在内存上,对方只需要将这块内存拷贝到画布上即可。 上述所说的方法,可以通过HDC来实现,HDC是CDC的一个句柄,我们通过对一个对象传入HDC实现利用CDC
2013-06-27 15:02:03 2316
原创 Invalidate之后无法OnPaint
最近遇到一个问题,纠结了很久也没能找到问题所在。当时,开辟了一个线程用作刷新,但是每次执行到Flush最后的一句InvaliDate之后,始终没有进入OnPaint。后来,终于找到原因,是因为InvaliDate函数虽然提交了销毁了窗口的,提交重绘的消息,但是由于这个消息等级很低,OnPaint不能够执行。之所以导致这个问题的出现,是由于线程运行的速度太快,还来不及处理,又进行Flush,结果导致
2013-06-27 15:00:41 3574 3
原创 利用HDC在内存上绘图
有时候,我们需要脱离控件来进行绘图,这是因为利用控件进行绘图有一定的局限性。而且有一些是他人需要用到的类时,用控件往往需要获取当前窗口指针等等操作,这个时候并不是很便利。相比较而言,利用内存直接进行回执,将图形全部回执在内存上,对方只需要将这块内存拷贝到画布上即可。 上述所说的方法,可以通过HDC来实现,HDC是CDC的一个句柄,我们通过对一个对象传入HDC实现利用CDC
2013-06-27 14:49:55 9425
原创 _T和_L的区别
之前在程序中频繁的出现_T和_L的问题,貌似使用下没有明显区别,所以一直没有对两者进行区分。 _T是将字符串转换为TCHAR类型,而_L是将字符串转换为WCHAR类型,两者的区别就在于TCHAR类型和WCHAR类型。 先说WCHAR类型,宽字符类型。一般的字符类型为CHAR。而_T类型是微软为了能够保证WCHAR类型和CHAR类型两者在平台上能够通用设计出来的一个类型。
2013-06-27 14:29:20 3814 1
原创 CSTATIC 控件的刷新
CStatic控件继承而来的自定义控件,在与父窗口进行调用绘制的时候,如果我们是在Cstatic控件上需要进行一个数据的不断刷新,那么我们需要为CStatic自己内部进行控件的刷新。 同时,由于内部的刷新和onpaint函数,我们最好对于控件上的内容的绘制采用控件内部定义的DC。如果用外部窗口的Dc来传入参数对控件进行绘制,往往会出错,因为外部的DC可能无法正确拷贝到内部控件的最后绘制
2013-06-27 14:28:14 3341
原创 关于CDC在非控件类中的使用
在非CStatic的派生类中,由于进行图形的绘制的话,我们需要对该类传入一个CDC以便于绘画。这是因为非CStatic等控件类无法自己产生onPaint这类的消息,因此需要借传入的CDC进行回执,然后回执在其他的内存上,最后达到绘图的效果。 但是,在这里面有一个问题,当我们直接传入CDC的时候,往往会造成一个访问私有成员变量的错误,如下:void CBaseDlg::
2013-06-27 14:24:42 1630
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人