• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 545
  • Last Modified:

How to catch status bar click event

I need to minimize the program on status bar click event in MFC.
How do I do that?
0
jd9288
Asked:
jd9288
  • 2
1 Solution
 
SteveGTRCommented:
Do this:

Override the PreTranslateMessage using the MFC Classwizard for your CMainFrame class (MAINFRM.CPP). Code the handler as follows:

BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
  if (pMsg->message == WM_LBUTTONDOWN)
    {
    CRect rect;
    CPoint point((DWORD)pMsg->lParam);

    m_wndStatusBar.GetClientRect(rect);

    if (rect.PtInRect(point))
      ActivateFrame(SW_MINIMIZE);
    }
      
  return CMDIFrameWnd::PreTranslateMessage(pMsg);
}

This code assumes that the application is MDI. Change the return statement to call your base classes PreTranslateMessage() function.

Good Luck,
Steve
0
 
jd9288Author Commented:
Actually, this doesn't work. Or, rather, it works if you click on ANY button or drop-down list, not just on
the status bar. Any ideas?
0
 
SteveGTRCommented:
Try this:

BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
  if (pMsg->message == WM_LBUTTONDOWN && pMsg->hwnd == m_wndStatusBar.m_hWnd)
    ActivateFrame(SW_MINIMIZE);
     
  return CMDIFrameWnd::PreTranslateMessage(pMsg);
}

Good Luck,
Steve
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now