GDI螢屏截取需要的圖后 ,拿到HBITMAP然后想在對話框內使用 picture控制元件顯示出來,將控制元件type改為BITMAP后呼叫CStatic內的SetBitmap方法,對話框無法顯示,請大佬指點迷津
uj5u.com熱心網友回復:
"用 picture控制元件顯示出來,將控制元件type改為BITMAP后" ?uj5u.com熱心網友回復:
是的,難道說只有拿到資料才可以??
uj5u.com熱心網友回復:
picture控制元件 派生 至 CStatic為什么 控制元件 type 要改為 BITMAP ?(只有 CBitmap)
uj5u.com熱心網友回復:
在屬性內選擇,有BITMAP
uj5u.com熱心網友回復:
"在屬性內選擇,有BITMAP"picture控制元件 派生 至 CStatic , class type 沒變
GDI螢屏截取需要的圖后, 作出 BITMAP 有可以 了。
uj5u.com熱心網友回復:
HBITMAP CopyScreenToBitmap(CRect &Rect,HWND hwnd)
{
HDC hScrDC, hMemDC;
HBITMAP hOldBitmap,hBitmap;
int xScrn, yScrn;
// to screen coordinates.
MapWindowPoints(hwnd,NULL,(POINT *)&Rect,2);
hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
hMemDC = CreateCompatibleDC(hScrDC);
//
xScrn = GetDeviceCaps(hScrDC, HORZRES);
yScrn = GetDeviceCaps(hScrDC, VERTRES);
//
if (Rect.left < 0) Rect.left = 0;
if (Rect.top < 0) Rect.top = 0;
if (Rect.right > xScrn) Rect.right = xScrn;
if (Rect.bottom > yScrn) Rect.bottom = yScrn;
//
hBitmap = CreateCompatibleBitmap(hScrDC, Rect.Width(),Rect.Height());
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
BitBlt(hMemDC,0,0,Rect.Width(),Rect.Height(),hScrDC,Rect.left,Rect.top,SRCCOPY);
hBitmap =(HBITMAP)SelectObject(hMemDC,hOldBitmap);
//
DeleteDC(hScrDC);
DeleteDC(hMemDC);
//
return hBitmap;
}
uj5u.com熱心網友回復:
HBITMAP 的作用域是否對?是否有用 Invalid UpdateWindow 等引發繪制?
uj5u.com熱心網友回復:
我只想說,VS2013中,如果在屬性中選擇bitmap,一編譯就報錯,資源檔案無法打開,坑的一逼,不知道你們有沒有出現相同的問題uj5u.com熱心網友回復:
ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/55905.html
標籤:基礎類
上一篇:MFC 繪制動態的三維坐標系,通過坐標,將點顯示出來?
下一篇:BIN轉換為CFG檔案
