win32 treeview
// 1.create treeview
DWORD dwStryle = WS_VISIBLE | WS_CHILD | TVS_HASLINES|TVS_SHOWSELALWAYS/*|TVS_LINESATROOT*/;// remove root-line style
HWND hTree = CreateWindow(WC_TREEVIEW,L"",dwStryle,,,,,hParent,(HMENU)IDC_CS_TREE,hInst,NULL);
// 2. create Imagelist
HIMAGELIST hi;
hi = ImageList_Create(,,ILC_COLOR24|ILC_MASK,,); // 创建像素为24*24 颜色深度为多彩24,因为图片不透明所以使用mask,初始化1,最大3
HBITMAP hBmp = LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BMP_TREE)); // 载入bitmap图片
ImageList_AddMasked(hi,hBmp,RGB(,,)); // 将图片加入imagelist中 (我在添加中发现了一个问题,当时我的图片是23*24的结果就是天不上,将图片修改为24*24就OK了
int iImageCount = ImageList_GetImageCount(hi); // 可以获取到列表图片个数,添加完后可以比较下结果
// 3. set imagelist to tree
TreeView_SetImageList(hTree,hi,TVSIL_NORMAL);
// 4. insert item
TVINSERTSTRUCT ti= {};
ti.item.mask=TVIF_TEXT|TCIF_IMAGE|TVIF_SELECTEDIMAGE;
ti.hParent=NULL;
ti.hInsertAfter=TVI_ROOT;
ti.item.iSelectedImage= ti.item.iImage=;
ti.item.pszText=L"test";
以上就是创建过程。
消息处理,其中要处理WM_NOTIFY消息
LRESULT cs_OnNotify(HWND hwnd,int idfrm,NMHDR* pnmhdr)
{
if (idfrm == IDC_CS_TREE)
{
if ( pnmhdr->code == TVN_SELCHANGED )
{
WCHAR szText[MAX_PATH];
HTREEITEM hSelected ;
TVITEM tvi = {};
tvi.mask = TVIF_TEXT;
tvi.pszText = szText;
tvi.cchTextMax = MAX_PATH; hSelected = TreeView_GetNextItem(hTree,hSelected,TVGN_CARET); tvi.hItem = hSelected;
TreeView_GetItem(hTree,&tvi); SetWindowText(hwnd,szText);
} } return FALSE ;
}
以上是我用到的选择某Item时,获取text并将窗体text改变。
可以根据相像自己改动下
win32 treeview的更多相关文章
- win32sdk 编程整理的些资料
#win32sdk编程积累经验# ## ListView ## - 创建imagelist HIMAGELIST hi; HBITMAP hBmp = LoadBitmap(hInst,MAKEINT ...
- Win32中TreeView控件的使用方法,类似于资源管理器中文件树形显示方式
首先是头文件,内容如下: #include <tchar.h> #include "..\CommonFiles\CmnHdr.h" #include <Wind ...
- 用pywinauto进行win32应用程序的测试
之前做win32应用测试时,用过很多大家耳熟成详的工具,接触pywinauto之前,对它的了解也不多,然而,随着对它了解的增多,发现它借助了python动态对象的能力,使得代码即便于书定,也便于阅读, ...
- Win32 SDK程序创建一些控件(简单调用InitCommonControlsEx,并指定ICC_LISTVIEW_CLASSES控件就可以了)
在Win32 SDK中创建一些控件的时候需要注意一下(具体是哪些控件请参看MSDN文档中列出来的) /* MSDN:Carries information used to load common co ...
- win32通用控件
1.标准控件 可以在win32窗口程序中添加资源脚本来给程序添加标准控件: 具体操作为:新建资源脚本 ->在.rc文件中添加控件 ->给控件绑定事件: 常用的标准控件: ...
- C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper
前言 在开发应用程序时,通常只让程序运行一个实例.所以,就要判断程序是否已经运行. 下面是我自己在项目中使用到,封装好的帮助类.有 普通的 C# 应用程序 和 Windows CE 和 Windows ...
- MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件
类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...
- java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。
JNA 调用 dll 库时,保错: ///////////////// 通过 JNA 引入 DLL 库 //////////// /** * ID_FprCap.dll 负责指纹的采集, 指纹仪的初始 ...
- WPF 自定义列表筛选 自定义TreeView模板 自定义ListBox模板
有很多项目,都有数据筛选的操作.下面提供一个案例,给大家做参考. 左侧是数据源,搜索框加TreeView控件,右侧是ListBox控件.在左侧数据列点击添加数据,然后点击确定,得到所筛选的数据. 下面 ...
随机推荐
- 呛口大话APP 移动端到底怎么玩
[上海站]活动概况 时间:2016年04月09日13:30-16:30 地点:上海市黄浦区黄陂北路227号中区广场105室WE+联合办公空间 主办:APICloud.七牛.听云 报名网址:http:/ ...
- 第二篇 SQL Server代理作业步骤和子系统
本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...
- javascript设计模式学习之十二——享元模式
一.享元模式的定义及使用场景 享元模式是为了解决性能问题而诞生的设计模式,这和大部分设计模式为了提高程序复用性的原因不太一样,如果系统中因为创建了大量类似对象而导致内存占用过高,享元模式就非常有用了. ...
- Oracle Hang Manager
名词术语1.Cross Boundary Hang 交叉边界hang.在12.1.0.1中,hang manager可以检测database和asm之间的hang.2.Deadlock or Clos ...
- Android中三种onClick事件的实现与对比
方式一:在activity的onCreate()方法中,嵌入如下代码: Button button = (Button)findViewById(R.id.button1); button.setOn ...
- FTP规范
FTP协议命令+返回值+返回值解析 FTP message format:FTP commands are Telnet strings terminated by the Telnet end of ...
- 用于sql server启动的账户
用于启动和运行 SQL Server 的启动帐户可以是域用户帐户.本地用户帐户.托管服务帐户.虚拟帐户或内置系统帐户. 若要启动和运行 SQL Server 中的每项服务,这些服务都必须有一个在安装过 ...
- 超炫的3D HTML源代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- 开源日志技术log4j
老师的总结: 日志:除了能记录异常信息,还可以记录程序正常运行时的关键信息. 使用log4j来进行日志文件记录经典步骤: 001.在项目中创建一个lib文件夹,然后将下载好的jar包copy到该文件夹 ...
- Codeforces Beta Round #93 (Div. 1 Only) D. Fibonacci Sums
先考虑一个斐波那契数能分成其他斐波那契数的方案,假如f[i]表示第i个斐波那契数,那么只要对他进行拆分,f[i-1]这个数字必定会存在.知道这一点就可以进行递推了.先将数字分成最少项的斐波那契数之和, ...