词条 | 停靠窗口 |
释义 | 概念: 在许多程序中,有些窗口可以被拖放到另一个窗口中,并溶为一体,还可以停靠在主窗口的上中下、左右两侧。当设置为隐藏时,就会像QQ一样收缩起来,有鼠标移到其上时又会像QQ一样出来,这类窗口就叫停靠窗口。如:Visual Studio 2010窗口中的各个小窗口,如:输出窗口、类窗口等。 编程方法: 在MFC中,这种停靠窗口是由CDockablePane类派生的,一般是在CMainFrame::OnCreate()函数中创建。在菜单栏、工具栏、状态栏等创建之后,再创建这种停靠窗口。 值得注意的是:这种窗口创建之后,默认情况下是不可停靠的和隐藏的,还要通过调用EnableDocking()和DockPane()这两个函数使他们可停靠和显示出来。 下面是实例代码,一共生成了视图、文件、输出三个停靠窗口。主要使用的函数是Create()函数。 另外,LoadString()函数的作用是调用String Table里面定义的信息,也就是说,把String Table Caption里面的字符串读出来到CString对象里。String Table中的ID号及其对应的字符串都是可以自己定义的。 String Table在ResourceView窗口中,也就是ClassView右边那个窗口。双击之后就能看到,在最下面的选项中追加新的ID信息。 具体代码: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { //。。。。。。。。。。。。。。。 // 创建停靠窗口 if (!CreateDockingWindows()) //调用下面的BOOL CMainFrame::CreateDockingWindows()函数 { TRACE0("未能创建停靠窗口\"); return -1; } m_wndFileView.EnableDocking(CBRS_ALIGN_ANY); //使文件视图窗口可停靠 m_wndClassView.EnableDocking(CBRS_ALIGN_ANY); //使类视图窗口可停靠 DockPane(&m_wndFileView); //使文件视图窗口显示出来 CDockablePane* pTabbedBar = NULL; m_wndClassView.AttachToTabWnd(&m_wndFileView, DM_SHOW, TRUE, &pTabbedBar); m_wndOutput.EnableDocking(CBRS_ALIGN_ANY); DockPane(&m_wndOutput); //使输出窗口显示出来 } //创建停靠窗口的定义 BOOL CMainFrame::CreateDockingWindows() { BOOL bNameValid; // 创建类视图 CString strClassView; //声明一个字符串变量,这是为了给生成的停靠窗口取名 bNameValid = strClassView.LoadString(IDS_CLASS_VIEW); ASSERT(bNameValid); //开始调用Create()函数创建停靠窗口 if (!m_wndClassView.Create(strClassView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_CLASSVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) { TRACE0("未能创建“类视图”窗口\"); return FALSE; // 未能创建 } // 创建文件视图 CString strFileView; bNameValid = strFileView.LoadString(IDS_FILE_VIEW); ASSERT(bNameValid); if (!m_wndFileView.Create(strFileView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_FILEVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT| CBRS_FLOAT_MULTI)) { TRACE0("未能创建“文件视图”窗口\"); return FALSE; // 未能创建 } // 创建输出窗口 CString strOutputWnd; bNameValid = strOutputWnd.LoadString(IDS_OUTPUT_WND); ASSERT(bNameValid); if (!m_wndOutput.Create(strOutputWnd, this, CRect(0, 0, 100, 100), TRUE, ID_VIEW_OUTPUTWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) { TRACE0("未能创建输出窗口\"); return FALSE; // 未能创建 } SetDockingWindowIcons(theApp.m_bHiColorIcons); return TRUE; } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。