Article ID: 129649 - Last Review: November 21, 2006 - Revision: 2.1 PRB: GetActiveView Returns NULL for an MDI Frame Window
This article was previously published under Q129649 SYMPTOMS
The GetActiveView() function returns the active view (if any) attached
to a frame window (CFrameWnd). This function returns NULL when called
for an MDI main frame window (CMDIFrameWnd).
CAUSE
In an MDI application, the MDI main frame window (CMDIFrameWnd) does not
have a view associated with it. Instead, each individual child window
(CMDIChildWnd) has one or more views associated with it. Therefore, a call
to the GetActiveView() function for an MDI main frame window returns NULL.
The "More Information" section of this article gives the layout of the
different windows in an MDI application.
RESOLUTION
To resolve the problem, find the active MDI child window (if any), and then
call the GetActiveView() function for that child window. The active MDI
child window can be found by calling the MDIGetActive() or GetActiveFrame()
function, as demonstrated in this code:
MORE INFORMATION
The client area of the MDI frame window is covered by the client window
referred to as the MDICLIENT, also known as the Workspace. This client
window in turn contains zero or more child windows, each of which can
display a view, as in this diagram:
---------------------------
| Frame Window | ---> CMDIFrameWnd
| (main application window) |
---------------------------
|
--------------------
| Client Window | ---> MDICLIENT window class
| (no view attached) |
--------------------
|
-----------------------------------------------------------
| |
--------------------- --------------------
| Child Window 1 | | Child Window 2 | ---> CMDIChildWnd
| (one or more views) | | (one or more views |
--------------------- --------------------
Therefore, calling the GetActiveView() function for an MDI main frame window returns NULL, implying that there is no view directly associated with MDICLIENT. The active view in an MDI application can be obtained by first finding the active MDI child window and then finding the active view for that child window as outlined in the Resolution section of this article. REFERENCES
"Programming Windows 3.1," Charles Petzold, Microsoft Press, 1992.
APPLIES TO
| Other Resources Other Support Sites
CommunityArticle Translations |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email

Back to the top