将BMP按窗口比例显示在窗口中,窗口大小固定

解决方案 »

  1.   

    /*先捕获前一窗口*/
        hWnd = ::GetForegroundWindow();             // Get the foreground window.    hdc = GetDC(hWnd);
        GetClientRect(hWnd, &rect);    if(!hdc)
            return NULL;    HDC hMemDC = CreateCompatibleDC(hdc);
        if(hMemDC == NULL)
            return NULL;    SIZE size;
        size.cx = rect.right - rect.left;
        size.cy = rect.bottom - rect.top;    HBITMAP hDDBmp = CreateCompatibleBitmap(hdc, size.cx, size.cy);
        if(hDDBmp == NULL)
        {
            DeleteDC(hMemDC);
            ReleaseDC(hWnd, hdc);
            return NULL;
        }    HBITMAP hOldBmp = static_cast<HBITMAP>(SelectObject(hMemDC, hDDBmp));/*缩放为适应后一窗口大小*/
        StretchBlt(hMemDC,0, 0
                 , iWidth    //这里是你后一窗口的宽度
                 , iHeigh,   //这里是你后一窗口的高度
    hdc, rect->left, rect->top, rect->right, rect->bottom, SRCCOPY);    SelectObject(hMemDC, hOldBmp);
        DeleteDC(hMemDC);
        ReleaseDC(hWnd, hdc);
        
        return hDDBmp;
    /*通过以上方法就得到了抓取前一窗口成图片并缩放成后一窗口大小
    然后将得到的HBITMAP在后一窗口显示就行罗!*/
      

  2.   

    ~~~多谢楼上的,结贴后一定给分!不过我又忘了说了,“后面的窗口的显示是在前面的窗口关闭以后的啊!”我本来是想建一个全局的DC用来保存前面窗口的数据,在关闭后再在后面的窗口显示,但不知道怎么申明这个DC,还有怎么实现啊!急!忘高手指教,小第一定给分!!!先谢了。