ON_COMMAND_EX(ID_VIEW_TAB_BAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(ID_VIEW_TAB_BAR, OnUpdateControlBarMenu) 8、在CMainFrame::OnCreate()加入以下代码:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//向导生成代码略去
//创建TAB条
if (!m_wndTabBar.Create(this, IDD_TAB_DLG_BAR,
CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,
ID_VIEW_TAB_BAR)) //ID_VIEW_TAB_BAR是菜单命令ID,用于显示或隐藏对话框条
{
TRACE0("Failed to create dialog bar m_wndDialogbar\n");
return -1; // fail to create
}
//m_wndTabBar.EnableDocking(CBRS_ALIGN_LEFT | CBRS_ALIGN_RIGHT);
//EnableDocking(CBRS_ALIGN_ANY);
//DockControlBar(&m_wndTabBar);
//将m_MyTab与控件IDC_TAB绑定
m_MyTab.SubclassDlgItem(IDC_TAB, &m_wndTabBar);
return 0;
} 9、为类CMainFrame添加WM_SIZE消息映射函数,如下:
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CMDIFrameWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect rcClient;
GetClientRect(&rcClient);
int left,top,right,bottom;
left=rcClient.left;
top=rcClient.top;
right=rcClient.right;
bottom=rcClient.bottom;
m_wndTabBar.MoveWindow(left,top+24,right-left,24,TRUE);
CRect rcTab;
m_wndTabBar.GetClientRect(&rcTab);
CTabCtrl *pMyTab=(CTabCtrl *)(m_wndTabBar.GetDlgItem(IDC_TAB));
pMyTab->MoveWindow(rcTab,TRUE);
} 三、手工创建类CViewManager
新建两个文件ViewManager.h、ViewManager.cpp ,并添加到当前工程。类的源码参见本文所附例子。下面对其成员作简单说明:
- OnActivateView(); //当一个视被激活时,该函数被调用,刷新Tab控件
- GetWindowNum(); //返回打开的子窗口数
- RemoveAll(); //清空数组arViews、arViewTitles
- RemoveView(); //用于在数组及Tab控件中删除一项
- AddView(); //用于在数组及Tab控件中加入一项
- CViewManager(); //构造函数
- ~CViewManager(); //析构函数,清空数组arViews、arViewTitles
- CPtrArray arViews; //用来存放子窗口的视指针
- CstringArray arViewTitles; //用来存放文档标题
- bool bClosing; //用于表示程序是否正在关闭
四、实现文件切换。
文章地址: http://www.qqread.com/wps/e353917.html进入讨论组讨论。相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询



