CStatic::SetBitmap on NT vs. W95
Steve Mark -- steve@otms.com Wednesday, October 23, 1996 Environment: WinNT 4 SP1, VC++ 4.2b, Win95 I can display a bitmap using CStatic::SetBitmap in WinNT, but not in Win95. Application is MFC DLL-based. Bitmaps are shown elsewhere just fine. Does anyone know why this won't show up in Win95 and how to fix it? Thanks in advance! Steve _________________________________________________________________ Steven Mark E-mail: steve@otms.com On-The-Mark Systems Tel: 510.648.9514 3494 Camino Tassajara Rd., Suite 239 Fax: 510.648.9507 Danville, CA 94506 Web: http://www.otms.com Custom Software Analysis, Design, and Implementation
Lior Messinger -- 100274.2607@compuserve.com Sunday, October 27, 1996 Steve, I don't know the reason, but I had problems myself with SetBitmap, although mine was the opposite: it didn't work in NT. Anyway, here's the code I used instead (to display a bmp of a dog IDB_GREYDOG1: // set bitmap CBitmap * pBmpOld; RECT rectStaticClient; // Load bitmap resource - remember to call DeleteObject when done. VERIFY( m_clsDogBmp.LoadBitmap( IDB_GREYDOG1 ) ); // Get bitmap information m_clsDogBmp.GetObject( sizeof(BITMAP), &m_bmInfo ); m_stcDog.GetClientRect( &rectStaticClient ); m_BmpSize.cx = rectStaticClient.right; // zero based m_BmpSize.cy = rectStaticClient.bottom; // zero based // Convert to screen coordinates using static as base, // then to DIALOG (instead of static) client coords // using dialog as base m_stcDog.ClientToScreen( &rectStaticClient ); ScreenToClient( &rectStaticClient ); m_BmpPt.x = rectStaticClient.left; m_BmpPt.y = rectStaticClient.top; // Get temporary DC for dialog - Will be released in dc destructor CClientDC dc(this); // Create compatible memory DC using the dialogs DC VERIFY( m_dcMemDog1.CreateCompatibleDC( &dc ) ); // Select bitmap into DC. // Get pointer to original bitmap // NOTE! This is temporary - save the handle instead VERIFY( pBmpOld = m_dcMemDog1.SelectObject( &m_clsDogBmp ) ); VERIFY( m_hBmpOld1 = (HBITMAP) pBmpOld->GetSafeHandle() ); // StretchBlt Dog bitmap onto static's client area clsDc.StretchBlt( m_BmpPt.x, m_BmpPt.y, m_BmpSize.cx, m_BmpSize.cy, &m_dcMemDog1, 0, 0, m_bmInfo.bmWidth-1, m_bmInfo.bmHeight-1, SRCCOPY ); regards, Lior. Environment: WinNT 4 SP1, VC++ 4.2b, Win95 I can display a bitmap using CStatic::SetBitmap in WinNT, but not in Win95. Application is MFC DLL-based. Bitmaps are shown elsewhere just fine. Does anyone know why this won't show up in Win95 and how to fix it? Thanks in advance! Steve _________________________________________________________________ Steven Mark E-mail: steve@otms.com On-The-Mark Systems Tel: 510.648.9514 3494 Camino Tassajara Rd., Suite 239 Fax: 510.648.9507 Danville, CA 94506 Web: http://www.otms.com Custom Software Analysis, Design, and Implementation
| Вернуться в корень Архива |