停靠窗口

更新时间:2024-03-30 22:12

停靠窗口是一个计算机术语,在许多程序中,有些窗口可以被拖放到另一个窗口中,并溶为一体,还可以停靠在主窗口的上中下、左右两侧。当设置为隐藏时,就会像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()函数

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))

创建文件视图

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))

创建输出窗口

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))

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}