钩子拦截了WM_PAINT如何了解失效区域的具体范围和接受窗口我希望在屏幕PAINT后自动抓屏
因此用全局hook截了WM_PAINT自己的hook是
LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam);在HookProc内部,如何才能得知WM_PAINT是送哪窗口的呢?
又如何能了解到失效区域的具体范围呢请多指教,谢谢

解决方案 »

  1.   

    LRESULT CALLBACK GetMsgProc(
      int code,       // hook code
      WPARAM wParam,  // removal option
      LPARAM lParam   // message
    );lParam 
    [in] Pointer to an MSG structure that contains details about the message. 
    typedef struct tagMSG {
      HWND   hwnd; 
      UINT   message; 
      WPARAM wParam; 
      LPARAM lParam; 
      DWORD  time; 
      POINT  pt; 
    } MSG, *PMSG;窗口句柄在MSG结构内
    BeginPaint返回的paintstruct结构中含有无效区域
      

  2.   

    但是,我不应该用BeginPaint去查询无效区域吧
    我只想记录无效区域的范围,对无效区域的重新绘制还是由目标窗口自己完成的,如果
    我用了BeginPaint,无效区域不会变成了有效区域吗?
      

  3.   

    换句话说,能不能利用typedef struct tagMSG {
      HWND   hwnd; 
    找到窗口句柄然后用窗口句柄通过其他函数获得无效区域的范围而不改变它的无效的状态
      

  4.   

    恩,beginpaint会用副作用
    GetUpdateRect可以获取无效区域,并且不会将无效变为有效