void OnPaint()
{
   CPaintDC dc(this);   
   RECT rt;
   GetClientRect(&rt);
   HRGN hRgn = CreateRectRgn(rt.left,rt.top,rt.right,rt.bottom);
   HBRUSH hBrush = CreatePatternBrush(m_hMain);
   FillRgn(dc.m_hDC,hRgn,hBrush);
   DeleteObject(hRgn);
   DeleteObject(hBrush);
}
在Win98下会出错.各位高手救命啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    产生刷子不应该在Onpaint函数里,应该在初始化函数里,OnPaint只是选择刷子。
      

  2.   

    DeleteObject(hRgn);
    这个是干吗用的?
    void FillRect( LPCRECT lpRect, CBrush* pBrush );dc.FillRect就可以了。。
    另外,HBRUSH hBrush = CreatePatternBrush(m_hMain);
    hMain是bmp的句柄?是否涉及到选取设备没有释放,这样在OnPaint肯定会出错!
      

  3.   

    他的不是这个原因吧,在2000下运行没问题,我没98,也不能帮你
    RECT rt;
    GetClientRect(&rt);
    HRGN hRgn = CreateRectRgn(rt.left,rt.top,rt.right,rt.bottom);
    HBRUSH hBrush = CreateSolidBrush(RGB(0,0,0));
    FillRgn(dc.m_hDC,hRgn,hBrush);
    DeleteObject(hRgn);
    DeleteObject(hBrush);
      

  4.   

    HBRUSH hBrush是在Dialog初始化时创建的,HRG也是在Dialog初始化时创建的,
    上面只是一个例子而已,其中m_hMain为位图。
    在Win2000下能正常显示,但是在98下却不能。?????????????????????
      

  5.   

    在region中才有问题,RECT没有问题。(98系统下)
    画出的region为错图