mfc添加可停靠隐藏等功能的侧边栏

来源:互联网 发布:手机数据流量改dns 编辑:程序博客网 时间:2024/05/16 11:21

vs的侧边栏能自动隐藏,改变尺寸,拖动停靠等,挺方便高大上的。本文将介绍如何实现类似的功能:


一、建立mfc单文档工程

二、资源里插入新的对话框,将其属性页外观里Border(边界)改成无,Style(风格)改为child(默认的Popup为弹出)

然后就是做界面,举例如下:。接着为对话框关联一个新类,本文起名为CCebianDlg。


三、为上述对话框添加侧边栏的属性。首先添加一个mfc新类(本文为CCebianBar),该类公有继承CDockablePane

然后为CCebianBar添加对话框的成员变量,.h文件里:

public:static CCebianDlg ceDlg; //声明静态成员
.cpp文件里:

// CCebianBarCCebianDlg CCebianBar::ceDlg; //定义静态成员

接着类向导中为该类添加WM_CRETE,WM_ONSIZE的消息响应,操作及代码如下:


//创建侧边栏int CCebianBar::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CDockablePane::OnCreate(lpCreateStruct) == -1)return -1;// TODO:  Add your specialized creation code hereceDlg.Create(IDD_CEBIAN, this);ceDlg.ShowWindow(SW_SHOW);return 0;}//改变尺寸响应void CCebianBar::OnSize(UINT nType, int cx, int cy){CDockablePane::OnSize(nType, cx, cy);// TODO: Add your message handler code hereif (ceDlg.GetSafeHwnd()){CRect rct;GetClientRect(rct);ceDlg.MoveWindow(rct);}}
四、显示侧边栏。首先在CMainFrame里添加CCebianBar的成员变量

private:CCebianBar ceBar;
然后在其成员函数OnCreate里添加代码实现侧边栏的创建和初始状态

//我的侧边栏ceBar.Create(_T("侧边栏"), this, CRect(0, 0, 370, 416), TRUE, 666,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI, AFX_CBRS_REGULAR_TABS,AFX_CBRS_AUTOHIDE | AFX_CBRS_RESIZE | AFX_CBRS_FLOAT);ceBar.EnableDocking(CBRS_ALIGN_RIGHT);DockPane(&ceBar);


好了,看一下最后的效果,比较简陋啊: )




0 0
原创粉丝点击