一个窗口,想要获得它遮住部分桌面上的图片,有没有什么相关的资料呢?

解决方案 »

  1.   

    DrawThemeBackground/DrawThemeParentBackground
      

  2.   

    HDC   hdc=::GetDC(HWND_DESKTOP);     
      HBITMAP   hbitmap= ::LoadBitmap(::AfxGetInstanceHandle(),     
      MAKEINTRESOURCE(IDB_BITMAP1));     
      HDC   hMemDC=::CreateCompatibleDC(NULL);     
      SelectObject(hMemDC,hbitmap);  
      Crect rc;
      getwindowclient(rc);
      ::BitBlt(hdc,0,0,1024,768,hMemDC,-rc.left,-rc.top,SRCCOPY);     
      ::DeleteDC(hMemDC);     
      ::DeleteObject(hbitmap);     
      Sleep(5000);     
      ::InvalidateRect(0,NULL,TRUE);    
      

  3.   

    晕 搞错了 算了我写一段吧,写的不太好 但能实现功能 -_-#~
    ShowWindow(SW_HIDE);
    Sleep(100);
    CClientDC dc(this);
    CDC dcScreen;
    dcScreen.CreateDC("DISPLAY", NULL, NULL, NULL);
    int m_sizex = GetDeviceCaps(dcScreen.GetSafeHdc(), HORZRES);
    int m_sizey = GetDeviceCaps(dcScreen.GetSafeHdc(), VERTRES);
    CRect rc;
    GetWindowRect(rc);
    CDC m_dcMem;
    CBitmap m_bmpScreen;
    m_dcMem.CreateCompatibleDC(&dcScreen);
    m_bmpScreen.CreateCompatibleBitmap(&dcScreen, m_sizex,m_sizey);
    m_dcMem.SelectObject(&m_bmpScreen);
    m_dcMem.BitBlt(0,0,m_sizex, m_sizey, &dcScreen, 0, 0, SRCCOPY);
    Sleep(100);
    ShowWindow(SW_SHOW);
    dc.BitBlt(0,0,m_sizex, m_sizey, &m_dcMem, rc.left, rc.top, SRCCOPY);
      

  4.   

    把那段代码直接放在按钮响应事件里才可行 放在onpaint会很卡 我也没仔细研究 提供个思路
      

  5.   

    在窗口移动的时候想获得除去此窗口后的桌面情况.ShowWindow(SW_HIDE); 这样无法实现的.不知道windows是怎么组织的,在窗口移动后立刻能将窗口后的内容重新画出来