我对CStatic进行了子类化,其中处理了以下几个事件
OnPaint();
OnEraseBkgnd(CDC* pDC);
OnMouseMove(UINT nFlags, CPoint point);其中
void PreSubclassWindow()
{
  DWORD dwStyle = GetStyle();
  ::SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
  CStatic::PreSubclassWindow();
}我将控件放到一个CScrollView中的时候,显示可以显示,可是当CScrollView那个Frame改变的时候,控件就看不到了,而如果是原来的CStatic的话就正常,原本拉动滚动条的时候就没了,我在OnEraseBkgnd()中加了Invalidate()就可以了,不知道我还有哪些消息要处理,请各位大侠指点一下。

解决方案 »

  1.   

    OnEraseBkgnd()中加了Invalidate()就好?你在view的Ondraw里面对子类static用Invalidate可以吗?
      

  2.   

    OnEraseBkgnd()里面return写成pDC可以吗?
      

  3.   

    应该是跟View没关系的,我用普通的CStatic都没什么问题OnEraseBkgnd()返回的是BOOL值啊,怎么可能返回pDC
      

  4.   

    在ScrollView中滚动的时候应该不会调用CStatic的OnPatnt()吧?我现在就是要一个可以设置背景,鼠标放上去在某个位置可以显示为手的,可以放在ScrollView中的控件,好像现在的子类化控件都不能放到ScrollView中,那些什么自绘按钮入到ScrollView中都会有问题,都不能正确使用,为什么会这样?
      

  5.   

    都没人知道?有没人人做过可以放在ScrollView上可以正常使用的控件啊?自己再顶一下,没人回答就结帖了