That is because
CFrameWnd
based classes route those message to the active view and
CMDIFrameWnd
traps the
WS_VSCROLL
and
WS_HSCROLL
and styles:
The CFrameWnd class provides management of the active view. The following messages are routed through the active view:- All command messages (the active view gets first access to them).
- WM_HSCROLL and WM_VSCROLL messages from sibling scroll bars (see below).
- WM_ACTIVATE (and WM_MDIACTIVATE for MDI) get turned into calls to the virtual function CView::OnActivateView.
...
On a side note, there are two CWnd derived classes where the scroll bar styles specified at create time are trapped and not passed to Windows.
...
For CMDIFrameWnd the scroll bar styles you pass in to Create or LoadFrame are used to create the MDICLIENT.
So you can't use scrollbars with
CFrameWnd
based classes. It would be only possible by implementing your own (
CWnd
based) classes that must provide all the necessary MDI functionality. Due to the relationship between the MFC document and view classes you might have to create a complete new document and view implementation.
Note also that frame windows are for hosting and organising the views and usually do not require scrollbars.