WM_PAINT消息响应的时候,通常书上的例子都是hdc=BeginPaint(hWnd,&ps)可是通常这个ps结构体并没有被用到----因为绘图函数都是对hdc来作用的,谁会去管ps结构体呢?这个结构体该如何被使用,什么场合下需要用到它?

解决方案 »

  1.   

    可以根据rcPaint指示的 矩形范围 优化 WM_PAINT的处理逻辑,减少无用的计算
      

  2.   


    这个矩形范围一般是GetClientRect函数就能返回的啊,用不着ps结构体啊。
    还能举出别的例子么? 谢谢.
      

  3.   

    如果只是重绘某一个区域,rcClient与GetClientRect得到的结果是不一样的,比如你调用InvalidateRect,你看着一样是因为整个窗口无效了,所以才一样.
      

  4.   

    BeginPaint和EndPaint是必须的,这一对函数会消掉update region。
      

  5.   


    也就是说, 如果有InvalidateRect这样的函数调用,如果我不调用BeginPaint和EndPaint,接下来会发生什么不好的事情吗????为什么要消掉update region呢? 这个所谓的update region是hWnd的一部分还是hDC的一部分? 还是说系统会不停地给窗口发送WM_PAINT?
      

  6.   


    也就是说, 如果有InvalidateRect这样的函数调用,如果我不调用BeginPaint和EndPaint,接下来会发生什么不好的事情吗????为什么要消掉update region呢? 这个所谓的update region是hWnd的一部分还是hDC的一部分? 还是说系统会不停地给窗口发送WM_PAINT?
    无效区域如果一直存在的话,系统就会给应用程序发送WM_PAINT消息来要求更新
      

  7.   


    也就是说, 如果有InvalidateRect这样的函数调用,如果我不调用BeginPaint和EndPaint,接下来会发生什么不好的事情吗????为什么要消掉update region呢? 这个所谓的update region是hWnd的一部分还是hDC的一部分? 还是说系统会不停地给窗口发送WM_PAINT?
    无效区域如果一直存在的话,系统就会给应用程序发送WM_PAINT消息来要求更新多谢,还有一个问题,如果我只调用BeginPaint而不调用EndPaint,这个会产生什么问题呢?
      

  8.   


    也就是说, 如果有InvalidateRect这样的函数调用,如果我不调用BeginPaint和EndPaint,接下来会发生什么不好的事情吗????为什么要消掉update region呢? 这个所谓的update region是hWnd的一部分还是hDC的一部分? 还是说系统会不停地给窗口发送WM_PAINT?
    无效区域如果一直存在的话,系统就会给应用程序发送WM_PAINT消息来要求更新多谢,还有一个问题,如果我只调用BeginPaint而不调用EndPaint,这个会产生什么问题呢?

    EndPaint releases the display device context that BeginPaint retrieved.