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.   

    Wingdi.h Windows.h Coredll.lib 
    Windows NT/2000/XP: Included in Windows NT 3.1 and later.
      Windows 95/98/Me: Included in Windows 95 and later.
      Header: Declared in Wingdi.h; include Windows.h.
      Library: Use Gdi32.lib.
      

  2.   

    产生画笔的函数不应该放在OnPaint函数里。
      

  3.   

    HBRUSH hBrush = CreatePatternBrush(m_hMain);
    你的m_hMain在什么地方初始化的?
    怀疑是这句除了问题,可以调试跟踪一下。看是否hBrush是否为空。
      

  4.   

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

  5.   

    调试一下,在出错的时候选择调试,看看在call stack 里面的出错情况,好像不是这块的问题
      

  6.   

    你可以多试一下,比如用个一般的brush, 而不是从main里得出的brush,
    或者不在region里画brush,而是在一般的rect里画,这样可以逐渐发现问题。
      

  7.   

    在region中才有问题,RECT没有问题。(98系统下)