The Real-Player application inserts it’s own Logo between the TitleBar and MenuBar (see image bove).
It was cool (now it’s not that I know how to do it
like Real-Player does?
Then, Just follow me. 🙂
Here’s how to create this very cool effect.
- Create Dialog-based Project (can be either SDI or MDI, but we’re using a dialog-based app
for this demo).
- Insert your Logo bitmap file to your project.
- To make room for drawing your Logo, insert a dummy menu item into
your menu resource like ‘menu for Image’ at the first position on the menu.
- Implement the OnMeasureItem() method so that you can modify the menu width
to make room for the Logo on the menu.
void CFakeRealDlg::OnMeasureItem(int nIDCtl,
if (lpMeasureItemStruct->CtlType == ODT_MENU)
if (lpMeasureItemStruct->itemID == IDM_IMAGE)
lpMeasureItemStruct->itemWidth = m_rectLogo.Width() + 5;
- Modify the OnInitDialog (assuming a dialog-based app here) to load your Logo
m_hBmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(),
0, 0, LR_CREATEDIBSECTION);
GetObject(m_hBmp, sizeof(bm), &bm);
m_rectLogo.left = 15;
m_rectLogo.right = 15 + bm.bmWidth;
m_rectLogo.top = 2 ;
m_rectLogo.bottom = 2 + bm.bmHeight;
6. Define a DrawLogo() method to paint the Logo as follows.
CDC* pdc= GetWindowDC();
pdc->BitBlt(15, 2, m_rectLogo.Width(),
m_rectLogo.Height(), &memdc, 0, 0, SRCCOPY);
7. Override the OnInitMenu() method and OnSystemMenu() method to protect
Window draw line between TitleBar and MenuBar.
void CFakeRealDlg::OnInitMenu(CMenu* pMenu)
void CFakeRealDlg::OnSysCommand(UINT nID, LPARAM lParam)
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
- Override the OnNcPaint() to paint your Logo
// Default is equal ‘CDialog::OnNcPaint()’ .. 🙂
The 8 steps shown here are all you need to do to achieve this very cool look!
However, you might want to take this even further. For example, you might want to
hide system icon. I would welcome anyone wanting to amend my article with that
Member of Ajou University Computer Club – C.C.