在对话框上的按钮控件,通过获得父窗口的DC并截取位于按钮处的DC来刷新背景的,如下:bkdc.BitBlt(0,0,nBtnW,nBtnH, this->GetParent()->GetDCEx(), rcButton.left, rcButton.top, SRCCOPY);一般情况下没有什么问题,但是如果这个对话框生成的时候落在某个顶层程序的下面,那么按钮控件获得的是这个顶层程序的DC,而不是自己父窗口的DC.请问:该如何获得父窗口的DC?谢谢

解决方案 »

  1.   

    http://hi.baidu.com/jinjiashan/blog/item/51e3d2f80d7a6106d9f9fd83.html
    楼主看看是不是这个
      

  2.   

    先用GetDlgItem获得按钮的指针,再用GetParent得到其所在对话框的指针
      

  3.   

    楼上,谢谢!不过我已经获得了父窗口的指针.我再详细叙述一下我的问题:我本来的想法是在父对话框上该按钮所在的位置截取一个图片作为按钮的背景,这样按钮就好像透明了一样.
    一般没什么问题.
    但是如果在截取发生的时候,有个其他的窗口位于这个父对话框的上面,那么通过
    bkdc.BitBlt(0,0,nBtnW,nBtnH, this->GetParent()->GetDC(), rcButton.left, rcButton.top, SRCCOPY); 
    这句话所截取到的图片不是来自父窗口的,而是那个顶层窗口的,也就是说GetParent()->GetDC()得到了屏幕的DC,事情上我要的是父窗口的DC,所以我想问:该怎么办才能只得到父窗口的DC?