Displaying bitmaps in a CStatusBar Pane does not work in MSV
Severino Delaurenti -- del@alpha.ico.olivetti.com Thursday, February 22, 1996 This question has already been asked by Roger Lamb, but the I've seen no answer, so I retry. Article Q98864 gave an example of drawing on a status bar with a bitmap. The article says it will work up to version 2.1 of VC compiler. Porting the code to MSVC 4.0 doesn't work. There is a still a way to draw bitmaps or icons on a CStatusBar Pane ? Thanks in advance.
Dicky Singh -- Dicky@landmark.com Friday, February 23, 1996 Ways to display icons in StatusBars have changed in ver 4.0, previously you could override OnDraw (? or something, don't remember) etc.... In 4.0, After creation use style SBPS_OWNERDRAW e.g. in SetPaneInfo( PANE_READONLY, nID, nStyle|SBPS_OWNERDRAW, iWidth); Derive a class from CStatusBar with one extra method DrawItem: .H file contents...... ///////////////////////////////////////////////////////////////////////////// class CMyStatusBar : public CStatusBar { public: CMyStatusBar() {} virtual ~CMyStatusBar() {} void DrawItem(LPDRAWITEMSTRUCT lpdis); }; .CPP file should have....... ///////////////////////////////////////////////////////////////////////////// // CMyStatusBar message handlers void CMyStatusBar::DrawItem(LPDRAWITEMSTRUCT lpDIS) { ////// code removed//// switch(lpDIS->itemID) { case PANE_READONLY: { int bReadOnly=pFrame->m_wndClient.m_bReadOnly; nID=bReadOnly?IDI_READONLY:IDI_READWRITE; CRect r(lpDIS->rcItem); CPoint p; p.x=r.left+(r.right-r.left-GetSystemMetrics(SM_CXICON)/2)/2; p.y=r.top+(r.bottom-r.top- GetSystemMetrics(SM_CYICON)/2)/2; HICON hicon=AfxGetApp()->LoadIcon(nID); // use LoadImage instead if (hicon) ::DrawIcon(lpDIS->hDC, p.x, p.y, hicon); } break; default: break; } } }
| Вернуться в корень Архива |