昨日,クリップボードからの取得で画像サイズを求める方法がわからなかった.
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) ; […]