CBitmap* pBmp = pDC->GetCurrentBitmap();
BITMAP bm;
pBmp->GetBitmap(&bm);
bm.bmWidth, bm.bmHeight
Размер окна через (CDC* pdc)
Скажите как зная указатель на контекст устройства (CDC* pdc) получить его размер (ширину и высоту) в пикселах, если это вообще возможно.
Скорей всего GetDeviceCaps(HORZRES/VERTRES)
Цитата:
Originally posted by qw1
Скорей всего GetDeviceCaps(HORZRES/VERTRES)
Скорей всего GetDeviceCaps(HORZRES/VERTRES)
В данном случае это будет отношение числа пикселей по горизонтали к числу пикселей по вертикали (если разрешение 1024*768, то 1024/768 ) . Но клиентская часть может иметь другие размеры
Цитата:
Originally posted by michael_is_98
Скажите как зная указатель на контекст устройства (CDC* pdc) получить его размер (ширину и высоту) в пикселах, если это вообще возможно.
Скажите как зная указатель на контекст устройства (CDC* pdc) получить его размер (ширину и высоту) в пикселах, если это вообще возможно.
Код:
Цитата:
Originally posted by S_T
Код:
CBitmap* pBmp = pDC->GetCurrentBitmap();
BITMAP bm;
pBmp->GetBitmap(&bm);
bm.bmWidth, bm.bmHeight
BITMAP bm;
pBmp->GetBitmap(&bm);
bm.bmWidth, bm.bmHeight
У меня дает
bmWidth = 4218503 // большое число пикселей
bmHeight = 16842838
Видимо это сработает, если создать битмап по размеру совпадающий с клиентской частью и выбрать его в тек. контекст.
Но можно ли обойтись это сделать без создания битмапа и SelectObject'а?
.........
CWnd* pWnd = dc->GetWindow();
RECT RectWnd;
pWnd->GetClientRect(&RectWnd);
Цитата:
Originally posted by REFOT
CDC* dc;
.........
CWnd* pWnd = dc->GetWindow();
RECT RectWnd;
pWnd->GetClientRect(&RectWnd);
CDC* dc;
.........
CWnd* pWnd = dc->GetWindow();
RECT RectWnd;
pWnd->GetClientRect(&RectWnd);
Точно, только этот способ не срабатывает, если dc - экземпляр класса CMetaFileDC. Для CClientDC, CPaintDC работает.