昨日,クリップボードからの取得で画像サイズを求める方法がわからなかった.
HBITMAP hbm = (HBITMAP)::GetClipboardData(CF_BITMAP) ; if (hbm != NULL) { CSize bmpSize(10,10) ; { BITMAP bm ; ::ZeroMemory(&bm,sizeof(BITMAP)) ; if (::GetObject(hbm, sizeof(BITMAP),&bm)!=0) { bmpSize.cx = bm.bmWidth ; bmpSize.cy = bm.bmHeight; } } ... }
CBitmap で保持している場合は,
CBitmap bitmap ; if (bitmap.LoadBitmap(bmp_ID)) { BITMAP bm ; bitmap.GetBitmap(&bm) ; CRect rect = CRect(0,0,bm.bmWidth,bm.bmHeight) ; ... }
HENHMETAFILE では,
HENHMETAFILE hemf = (HENHMETAFILE)::GetClipboardData(CF_ENHMETAFILE) ; if (hemf !=NULL) { ENHMETAHEADER emh ; ZeroMemory(&emh,sizeof(ENHMETAHEADER)) ; emh.nSize = sizeof(ENHMETAHEADER) ; if (::GetEnhMetaFileHeader(hemf,sizeof(emh),&emh) != 0) { CRect rectB ; rectB.top = emh.rclBounds.top ; rectB.left = emh.rclBounds.left ; rectB.right = emh.rclBounds.right ; rectB.bottom= emh.rclBounds.bottom ; CRect rectF ; rectF.top = emh.rclFrame .top ; rectF.left = emh.rclFrame .left ; rectF.right = emh.rclFrame .right ; rectF.bottom= emh.rclFrame .bottom ; } }
[…] ; CBitmap bitmap ; bitmap.LoadBitmap(IDR_MAINFRAME) ; BITMAP bm = {0} ; bitmap.GetBitmap(&bm) ; { CRect rect(0,0,0,0) ; GetClientRect(&rect) ; rect.DeflateRect(100,100,200,200) ; […]