Codejock Forums Homepage
Forum Home Forum Home > Codejock Products > Visual C++ MFC > Command Bars
  New Posts New Posts RSS Feed - Load Logo is error.
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

Load Logo is error.

 Post Reply Post Reply
Author
Message
homaas View Drop Down
Newbie
Newbie


Joined: 26 September 2008
Location: Vietnam
Status: Offline
Points: 5
Post Options Post Options   Thanks (0) Thanks(0)   Quote homaas Quote  Post ReplyReply Direct Link To This Post Topic: Load Logo is error.
    Posted: 28 September 2008 at 10:54pm
I want load logo as image below
 
I want load logo for dialog with toolbar (not Ribbonbar) ,it ok in WinXP,winVista, but it not display logo in Win98, please help me.
 
Back to Top
homaas View Drop Down
Newbie
Newbie


Joined: 26 September 2008
Location: Vietnam
Status: Offline
Points: 5
Post Options Post Options   Thanks (0) Thanks(0)   Quote homaas Quote  Post ReplyReply Direct Link To This Post Posted: 29 September 2008 at 3:13am
code for load Logo Image:
 
 
Bool :: OnInitDialog()
{
VERIFY(m_bmpLogo.LoadBitmap(IDB_LOGO));
 BITMAP bm;
 m_bmpLogo.GetBitmap(&bm);
 m_imgLogo.Create(NULL, WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(0, 0, 0, bm.bmHeight), this); 
 if(!m_wndReBar.Create(this, 0)
   || !m_wndReBar.AddBar(&m_imgLogo, NULL, NULL, RBBS_NOGRIPPER | RBBS_FIXEDBMP | RBBS_FIXEDSIZE)) {
   return -1;
 }
 UpdateLogoImage();
}
 
/////////
void ::OnPaint()
{
 CPaintDC dc(this); 
 UpdateLogoImage();
}
////////
 
void ::UpdateLogoImage()
{
 RepositionBars( AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0 );
 if(m_imgLogo.GetSafeHwnd()) {
  RECT r;
  GetClientRect(&r);
  m_imgLogo.SetBitmap(NULL);
  BITMAP bmLogo;
  m_bmpLogo.GetBitmap(&bmLogo);
  int nWidth = r.right - r.left;
  int nHeight = bmLogo.bmHeight;
  CBitmap bmpNew;
  bmpNew.CreateCompatibleBitmap(GetDC(), nWidth, nHeight);
  CDC dcBmpSrc;
  if(dcBmpSrc.CreateCompatibleDC(NULL)) {
   dcBmpSrc.SelectObject(m_bmpLogo);
   CDC dcBmpNew;
   if(dcBmpNew.CreateCompatibleDC(NULL)) {
    dcBmpNew.SelectObject(bmpNew);
    BITMAP bmSrc;
    m_bmpLogo.GetBitmap(&bmSrc);
    dcBmpNew.FillRect(CRect(0, 0, nWidth, nHeight), &CBrush((COLORREF)0xffffff));
    dcBmpNew.BitBlt(nWidth - bmSrc.bmWidth, 0, bmSrc.bmWidth, bmSrc.bmHeight, &dcBmpSrc, 0, 0, SRCCOPY);
    dcBmpNew.DeleteDC();
    m_imgLogo.SetBitmap(bmpNew);    }
   dcBmpSrc.DeleteDC();
  }
 }
}
 
 
Back to Top
Oleg View Drop Down
Admin Group
Admin Group


Joined: 21 May 2003
Location: United States
Status: Offline
Points: 11234
Post Options Post Options   Thanks (0) Thanks(0)   Quote Oleg Quote  Post ReplyReply Direct Link To This Post Posted: 29 September 2008 at 4:12am
Hi,
You call GetDC but not ReleaseDC, you call GetDC in OnPaint handler.
 
Comment this call in OnPaint. better move it to OnSize. and dont' forget add ReleaseDC.
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS
Back to Top
homaas View Drop Down
Newbie
Newbie


Joined: 26 September 2008
Location: Vietnam
Status: Offline
Points: 5
Post Options Post Options   Thanks (0) Thanks(0)   Quote homaas Quote  Post ReplyReply Direct Link To This Post Posted: 30 September 2008 at 12:45am

hi Oleg,

add ReleaseDC in OnPaint: but not display logo
 
void ::OnPaint()
{
 CPaintDC dc(this);
 HDC hdc=dc.GetSafeHdc();
 UpdateLogoImage();
 ::ReleaseDC(GetSafeHwnd(),hdc);
}
 
if I comment GetDC call in OnPaint is not display logo.
 
 
call UpdateLogoImage() int Onsize();
 
void ::OnSize(UINT nType, int cx, int cy)

 CXTPDialogBase<CXTResizeDialog>::OnSize(nType, cx, cy);
 UpdateLogoImage(); 
}
Back to Top
mgampi View Drop Down
Senior Member
Senior Member
Avatar

Joined: 14 July 2003
Status: Offline
Points: 1201
Post Options Post Options   Thanks (0) Thanks(0)   Quote mgampi Quote  Post ReplyReply Direct Link To This Post Posted: 01 October 2008 at 3:57am
Hi;

as Oleg explained, you call GetDC() in UpdateLogoImage() but never call ReleaseDC():

void ::UpdateLogoImage()
{
 RepositionBars( AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0 );
 if(m_imgLogo.GetSafeHwnd()) {
  RECT r;
  GetClientRect(&r);
  m_imgLogo.SetBitmap(NULL);
  BITMAP bmLogo;
  m_bmpLogo.GetBitmap(&bmLogo);
  int nWidth = r.right - r.left;
  int nHeight = bmLogo.bmHeight;
  CBitmap bmpNew;
  bmpNew.CreateCompatibleBitmap(GetDC(), nWidth, nHeight);
  CDC dcBmpSrc;
  if(dcBmpSrc.CreateCompatibleDC(NULL)) {
   dcBmpSrc.SelectObject(m_bmpLogo);
   CDC dcBmpNew;
   if(dcBmpNew.CreateCompatibleDC(NULL)) {
    dcBmpNew.SelectObject(bmpNew);
    BITMAP bmSrc;
    m_bmpLogo.GetBitmap(&bmSrc);
    dcBmpNew.FillRect(CRect(0, 0, nWidth, nHeight), &CBrush((COLORREF)0xffffff));
    dcBmpNew.BitBlt(nWidth - bmSrc.bmWidth, 0, bmSrc.bmWidth, bmSrc.bmHeight, &dcBmpSrc, 0, 0, SRCCOPY);
    dcBmpNew.DeleteDC();
    m_imgLogo.SetBitmap(bmpNew);    }
   dcBmpSrc.DeleteDC();
  }
 }
}

Martin

Product: Xtreme Toolkit v 22.1.0, new Projects v 24.0.0
Platform: Windows 10 v 22H2 (64bit)
Language: VC++ 2022
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 12.04
Copyright ©2001-2021 Web Wiz Ltd.

This page was generated in 0.047 seconds.