在CDockPane中添加树形控件---窗口样式 下载本文

窗口样式参考列表

WS_POPUP - 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用) WS_CHILDWINDOW - 子窗口(不能与WS_POPUP合用) WS_MINIMIZE - 最小化状态 WS_VISIBLE - 可见状态

WS_DISABLED - 不可用状态

WS_CLIPSIBLINGS - 使窗口排除子窗口之间的相对区域 WS_CLIPCHILDREN - 当在父窗口内绘图时,排除子窗口区域 WS_MAXIMIZE - 具有最大化按钮,须指定WS_SYSTEM样式 WS_CAPTION - 有标题框和边框(和WS_TILED样式相同) WS_BORDER - 有单边框

WS_DLGFRAME - 带对话框边框样式,不带标题框 WS_VSCROLL - 有垂直滚动条 WS_HSCROLL - 有水平滚动条

WS_SYSMENU - 标题框上带有窗口菜单(须指定WS_CAPTION样式) WS_THICKFRAME - 有可调边框(与WS_SIZEBOX样式相同)

WS_GROUP - 组样式,每个组的第一个控件具有WS_TABSTOP样式 WS_TABSTOP - 可接受TAB键焦点 WS_MINIMIZEBOX - 有最小化按钮 WS_MAXIMIZEBOX - 有最大化按钮

WS_OVERLAPPEDWINDOW - 具有层叠,标题框,系统菜单,可调边框,系统按钮 WS_POPUPWINDOW - 具有单边框,弹出式,系统菜单样式

窗口扩展样式参考列表

WS_EX_DLGMODALFRAME - 带双层边框

WS_EX_NOPARENTNOTIFY - 创建/销毁时不通知父窗口

WS_EX_TOPMOST - 窗口置顶(停留在所有非最高层窗口的上面) WS_EX_ACCEPTFILES - 可接受文件拖放

WS_EX_TRANSPARENT - 透明样式,在同属窗口已重画时该窗口才可重画 WS_EX_MDICHILD - MDI子窗口样式

WS_EX_TOOLWINDOW - 工具条窗口样式 WS_EX_WINDOWEDGE - 带凸起边缘的边框 WS_EX_CLIENTEDGE - 带阴影的边缘

WS_EX_CONTEXTHELP - 有上下文帮助样式,标题栏包含一个问号标志 WS_EX_RIGHT - 右对齐

WS_EX_RTLREADING - 窗口文本从右到左显示

WS_EX_LEFTSCROLLBAR - 垂直滚动条在窗口左边界

WS_EX_CONTROLPARENT - 允许用户使用TAB键在窗口的子窗口间搜索 WS_EX_STATICEDGE - 当窗口为不可用状态时创建一个三维边缘

WS_EX_APPWINDOW - 当窗口可见时将一个顶层窗口放置在任务栏上 WS_EX_OVERLAPPEDWINDOW - 带凸起边缘的边框,边缘有阴影

WS_EX_PALETTEWINDOW - 带立体边框,有工具条窗口样式,窗口在顶层 WS_EX_LAYERED - 分层或透明窗口,该样式可使用混合特效 WS_EX_NOINHERITLAYOUT - 子控件不继承窗体或控件的布局

WS_EX_LAYOUTRTL - 窗体或控件将具有从右向左的布局(因而会被镜像)

WS_EX_COMPOSITED - 用双缓冲从下到上绘制窗口的所有子孙(WinXP以上) WS_EX_NOACTIVATE - 处于顶层但不激活

控件样式参考列表

ES_LEFT - 左对齐

ES_CENTER - 居中对齐 ES_RIGHT - 右对齐 ES_MULTILINE - 多行

ES_UPPERCASE - 全部大写 ES_LOWERCASE - 全部小写 ES_PASSWORD - 密码框

ES_AUTOVSCROLL - 自动垂直滚动 ES_AUTOHSCROLL - 自动水平滚动 ES_NOHIDESEL - 始终显示选中部分

ES_OEMCONVERT - 允许ANSI和OEM互相转换 ES_READONLY - 只读

ES_WANTRETURN - 可接受回车换行 ES_NUMBER - 只接受数字输入

树形控件的样式

树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点。MFC中使用CTreeCtrl类来封装树形控件的各种操作。通过调用

BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 创建一个窗口,dwStyle中可以使用以下一些树形控件的专用风格: TVS_HASLINES 在父/子结点之间绘制连线 TVS_LINESATROOT 在根/子结点之间绘制连线

TVS_HASBUTTONS在每一个结点前添加一个按钮,用于表示当前结点是否已被展开 TVS_EDITLABELS 结点的显示字符可以被编辑

TVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点 TVS_DISABLEDRAGDROP 不允许Drag/Drop

TVS_NOTOOLTIPS 不使用ToolTip显示结点的显示字符 TVS_TRACKSELECT 热跟踪

如何在CDockablePane面板上添加树形控件

vs2010下建立MFC单文档工程,并利用CDockablePane添加可停靠窗口“我的面板”,如下图:

在“我的面板”添加CTreeCtrl树形控件的主要步骤如下: (1)为MFC工程添加CTreeCtrl类,这里我添加了如下类:

class CBookTreeCtrl : public CTreeCtrl

(2)在“我的面板”CMyDockablePane类下添加树形控件的变量:

CBookTreeCtrl m_BookTreeCtrl

并且在String Talbe字符表下定义要创建的树形控件的ID,如IDR_BOOK_TREE。 (3)在“我的面板”CMyDockablePane类下添加WM_CREATE消息响应函数:

int CMyDockablePane::OnCreate(LPCREATESTRUCT lpCreateStruct)

然后在其下创建树形控件,代码如下:

if (!m_BookTreeCtrl.Create(dwViewStyle,CRect(0,0,200,200),this,IDR_BOOK_TREE)) { }

return -1;

//插入根节点

const DWORD dwViewStyle = WS_VISIBLE | WS_TABSTOP | WS_CHILD | WS_BORDER |

TVS_LINESATROOT | TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_NOTOOLTIPS | TVS_HASBUTTONS;

}else{

HTREEITEM hRoot=m_BookTreeCtrl.InsertItem(L\,TVI_ROOT,TVI_LAST); //添加hRoot节点的孩子节点,并且被添加的节点位于hRoot所有孩子节点的末尾 HTREEITEM hChild=m_BookTreeCtrl.InsertItem(L\计算机\,hRoot,TVI_LAST);

(4)编译运行,结果如下: