1)一个CStatic 在一个CDialog中;
2)将CStatic设置了SS_BITMAP属性;
3)在CStatic 的DC中设置一个图片。
问题:当第一次设置的图片比第二次大时候,第一次的图片会有残留。我用了invalidate,但是没有作用。
谁有好的方法吗?请多指教。
2)将CStatic设置了SS_BITMAP属性;
3)在CStatic 的DC中设置一个图片。
问题:当第一次设置的图片比第二次大时候,第一次的图片会有残留。我用了invalidate,但是没有作用。
谁有好的方法吗?请多指教。
解决方案 »
- win socket接收数据的问题,帮忙看看。
- 有个VC.NET的类转VC6的问题
- 请问:VC一编译就死掉了,怎么办?
- 再问调试出错,Debug Assertion Failed
- 一个幼稚的问题:API函数有VC与VB之分吗?
- 都知道窗口函数是由WIN调用的,那么会不会出现重名的情况呢?
- 怎么使对话框上的按纽点击以后变灰和恢复?
- sendmessage 获得图片
- :?急!如何制作InstallShield5动态介绍画面?高分回报再加分
- qt+vs2010生成的可执行在自己电脑能执行,别人的电脑不行
- 设计编码过程中一个个类函数测试都通过,而且各函数之间的调用也没有问题,一个有共四百多个函数构成的信息系统运行结果没有问题,速度也可以,那么还需要专门的测试软件测试什么?
- 客户端4个线程同时向服务端发信息,服务端刚开始正常,过不一分钟WSASend时,返回错误997,为什么?
....CDC* pDC = stc.GetDC();pDC->DrawText("xxxxxxxxxx",...);//做别的事。(这里要如何处理??)pDC->DrawText("yyy",...);想要的结果:在stc的DC上只会有yyy,而不会显示出xxxxxxxxxx的痕迹。(其实我真正想要的是使用这个static的DC)
请回答者不要猜,希望可以自己做个小Demo来真正想出办法。
因为静态文本框是没有画刷的.必须调用父窗口来绘制背景否则,背景不会被擦除.
RECT rc;
CWnd *pParent;
LRESULT Result = Default();
GetWindowRect( &rc );//获取静态文本框的矩形
pParent = GetParent();//静态文本框的父窗口
if( pParent ){
pParent->ScreenToClient( &rc );//转换到父窗口的客区坐标.
pParent->RedrawWindow( &rc );//让父窗口来重绘
}
以上代码是在已经子类化的静态文本框的WM_SETTEXT消息处理中.根据你自己的需要添加适当的地方.
注意注释过的地方.要根据实际情况决定调用哪个类的成员.
不过,还有一点我想问一下:
你说:“因为静态文本框是没有画刷的.必须调用父窗口来绘制背景否则,背景不会被擦除. ”。
这句话中,你说“静态文本框是没有画刷”,那它本身的背景是如何来的?它的背景会与它的父窗口的背景一样吗?我记得有时候在对话框中设置一个背景图,然后在对话框上建立一个static,但这个static是一块与对话框背景不一样的。是不是也要刷一下才会一样?
根据MSDN中关于WNDCLASSEX的说明.
如果一个类没有设置类画刷,则应该程序必须自行绘制窗口的背景.
如果你没有在静态文本的WM_CTLCOLOR消息中返回一个画刷.那就由这个文本框的父窗口来处理.默认父窗口是调用系统的默认处理来处理的.这就造成你说的.父窗口的背景与静态文本的背景不一样的情况.
要修改表态文本框架的背景:
1.子类化.然后响应WM_CTLCOLOR消息.返回一个画刷.
2.在父窗口中响应WM_CTLCOLORSTATIC消息,返回一个画刷.
Now end this note.