Placing Logo on the Top DockBar of the Frame Window

In the demo project I put in this article I derived CLogo from MFC CBitmapButton class. But you could change my code and derive CLogo from any class derived from CWnd. I use the class, from which CLogo is derived, for visual representation of logo.
Step 1: Create a new Single document or Multiple document project by using MFC AppWizard.
Step 2: Add Logo.cpp and Logo.h files to the project.
Step 3: Change the base class of CLogo to any class derived from CWnd you want. Be sure that you have replaced all occurrences of CBitmapButton in Logo.cpp and Logo.h files.
Step 4: Add #include
Step 5: Add a member variable of CLogo type to CMainFrame:
protected: CLogo m_wndLogo;
Step 6: Add creation code for the CLogo base class at the end of OnCreate handler of CMainFrame. Be sure that you have used the top dockbar as a parent window for the logo. Since I use CBitmapButton, I added the next lines:
// LOGO SUPPORT
CControlBar* pTopDockBar = GetControlBar(AFX_IDW_DOCKBAR_TOP);
if (pTopDockBar
&& m_wndLogo.Create(NULL,
WS_CHILD | WS_VISIBLE | BS_OWNERDRAW,
CRect(0,0,0,0),
pTopDockBar,
IDC_LOGO_BUTTON))
{
m_wndLogo.LoadBitmaps(IDB_LOGO_BITMAP, IDB_LOGOSEL_BITMAP);
m_wndLogo.SizeToContent();
}
// LOGO SUPPORT
Step 7: Add the string resource with the integer identifier of the logo window for displaying tooltips and the message line in the status bar. I added the next string resource:
IDC_LOGO_BUTTON "Go to Sunbay's home page\nGo to Sunbay's Home Page"
Step 8: Add the handler of ON_LOGO_CLICK registered window message to CMainFrame. You could handle this message as you want. For example, my demo application launches a registered internet browser and goes to the home page of my company.
That is all. Now you could compile your project and try out how the program behaves.
Downloads
Download demo project - 36 KbDownload source - 3 Kb

Comments
There are no comments yet. Be the first to comment!