Why does CMainFrame::OnMdiNext is not called?

Flaviu_ 1,071 Reputation points
2025-07-16T13:53:28.6166667+00:00

I have a MFC MDI app. I want to override WM_MDINEXT message. And I did:

header:

protected:
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg LRESULT OnMdiNext(WPARAM wParam, LPARAM lParam);
	DECLARE_MESSAGE_MAP()

implementation:

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
	ON_WM_CREATE()
	ON_MESSAGE(WM_MDINEXT, &CMainFrame::OnMdiNext)
END_MESSAGE_MAP()

and

LRESULT CMainFrame::OnMdiNext(WPARAM wParam, LPARAM lParam)
{
	TRACE(_T("\n\nWM_MDINEXT intercepted!\n\n"));
	MDINext();

	// Default behavior:
	return __super::DefWindowProc(WM_MDINEXT, wParam, lParam);
}

But when I switch child frames using Ctrl+Tab key, no WM_MDINEXT fired, even if the child frames are switching ... why? Can you help here?

Developer technologies | C++
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.