(1) 怎样知道一个任务栏按钮对应的窗体句柄是多少? 
(2) 当一个窗体被另外一个窗体阻挡了一部分,已获取其窗体句柄,怎样将该窗体的完整视图复制为一幅图片。不允许将该窗体置顶。

解决方案 »

  1.   

    问题在window xp中已经解决: 
    (1)xp中任务栏按钮处于CToolBar控件之中,利用HitTest,GetButton,GetButtonInfo三个函数可以得到按钮上的文本。然后利用EnumWnd比较处于顶层的窗体的文本,就可以确定对应的Handle. 
    (2)xp中利用PrintWindow可以实现。 问题(2)在windows2000中已经解决:将该窗体的扩展样式设为Layered,并将灰度设为255,就可以利用BitBlt拷贝该窗体。 但问题(1)尚未在windows2000中解决。难度在于:Win2000中任务栏按钮处于CTabCtrl中,并且该CTabCtrl是OwnerDrawFixed,所以无法利用TabCtrl_GetItem得到其文本。
      

  2.   

    问题解决了:WM_DRAWITEM消息lparam是lpDrawItemStruct,其中 
    HWND hwnd = *(HWND*)ItemData