转自[URL=http://www.vcshare.net/]VC[/URL]共享乐园
CFrameWnd类往往用于创建应用程序的主窗口,因为它能很好地支持系统菜单和控制条(工具条、状态条等),为此定义了大量的成员函数和变量。在编写文档/视图结构的应用程序时,CFrameWnd作为主窗口管理视图和文档对象。视图对象和控制条都成为CFrameWnd的子窗口,它们分享客户区,其位置被CFrameWnd有效地排列。
CFrameWnd直接支持单文档界面(SDI),对于多文档界面(MDI),使用其派生类CMDIFrameWnd和CMDIChildWnd。
EnableDocking(): 允许控制条在自己的客户区依靠。
DockControlBar(): 将控制条依靠在客户区周边。
FloatControlBar(): 将控制条浮动在屏幕上,而不是依靠在客户区。
ShowControlBar(): 显示或隐藏控制条。
SaveBarState(): 将所有控制条的状态存入初始化文件或注册表。
LoadBarState(): 从初始化文件或注册表中恢复所有控制条状态。
GetDockState(): 将控制条状态信息存入一个CDockState对象。
SetDockState(): 从一个CDockState对象中恢复控制条状态。
SetMessageText(): 在状态栏的第一个面板区域显示一个信息串。
ReclcLayout(): 虚函数,当控制条位置变化或客户区尺寸变化时被调用,重新设置视图及控制条在客户区的位置。可根据需要重载它或主动调用它。


为了管理控制条和视图,CFrameWnd为几个窗口消息建立了消息映射,专门进行处理。
OnInitMenuPopup(): 处理WM_INITMENUPOPUP消息,设置弹出菜单的各项目的启用/禁止状态。
OnEnterIdle(): 处理WM_ENTERIDLE消息,设置状态条的空闲时提示信息。
OnMenuSelect(): 处理WM_MENUSELECT消息,当某菜单项被选择时更新状态条提示。
OnToolTipText(): 处理TTN_NEEDTEXT通知消息,显示工具条的工具提示。
OnUpdateKeyIndicator(): 更新状态条的键盘状态指示器信息。
OnUpdateControlBarMenu(): 更新控制条的启用/禁止状态,如工具条按钮。
OnSize(): 处理WM_SIZE消息,调用RecalcLayout()排列客户区控件及视图。
OnHScroll(): 处理WM_HSCROLL消息,滚动视图。
OnVScroll(): 处理WM_VSCROLL消息,滚动视图。
OnClose(): 处理WM_CLOSE消息,存储并关闭文档。


void SaveBarState( LPCTSTR lpszProfileName ) const;
记录工具栏的状态(位置、大小等)
void LoadBarState( LPCTSTR lpszProfileName );
读取工具栏的状态,并根据此调整工具栏
void GetDockState(CDockState&state)const;
参数: state 包含框架窗口控件条的当前状态。 
void SetDockState(const CDockState&state);
参数: state 把存储的状态设置给框架窗口的控件条。
说明:
调用此成员函数存储CDockState对象中关于框架窗口控件条的状态信息。
可以用CDockState::SaveState或Serialize将CDockState的内容写入存储中。如果以后想将控件条复位为以前状态,可用CDockState::LoadState或Serialize加载状态,然后调用SetDockState来将当前状态应用到框架窗口的控件条中。
SaveBarState实际上调用GetDockState函数,LoadBarState实际调用SetDockState函数。