SDK中如何响应TREEVIEW节点双击事件

许文君 2009-08-18 09:51:30
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
//BEGIN MESSAGE CRACK
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);

case WM_NOTIFY:


请问在哪里响应节点的双击呢,是Main_OnCommand中还是WM_NOTIFY里呢?我定义了这样一个树控件

int i=0;
for(i;i<=10;i++)
{

TCHAR x[256];
ZeroMemory(x,sizeof(x)/sizeof(TCHAR));
wsprintf(x,TEXT("第%d项"),i);
inittree(hwnd,x);
}
void inittree(HWND hwnd,LPCSTR lpcstr)
{
HWND hwndctrl=GetDlgItem(hwnd,IDC_TRV1);
HINSTANCE hinst=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
TVINSERTSTRUCT tvi;
tvi.item.mask = TVIF_TEXT | TVIF_IMAGE
|TVIF_SELECTEDIMAGE | TVIF_PARAM;
tvi.hInsertAfter = TVI_LAST;
tvi.hParent = TVI_ROOT;
tvi.hParent = NULL;
tvi.item.pszText =(CHAR*) lpcstr;
TreeView_InsertItem(hwndctrl,&tvi);
}


我想要的是双击某节点,MESSAGEBOX出它的item.pszText ,请问该如何实现呢?我是个新手,看不懂MFC的- -求求大家帮忙给我写下吧,万分感谢。
...全文
297 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
许文君 2009-08-19
  • 打赏
  • 举报
回复
已实现,非常感谢您
许文君 2009-08-19
  • 打赏
  • 举报
回复
参照您说的,在代码中加入了

TCHAR cBuf[100];
ZeroMemory(cBuf,sizeof(cBuf)/sizeof(TCHAR));
pitem->pszText = cBuf;

MESSAGEBOX能出来了,可是MessageBox(hWnd, cBuf, "", MB_OK); cBuf却没喝想的那样弹出第多少项。
蒋晟 2009-08-19
  • 打赏
  • 举报
回复
IDC_TRV1?用phdr->hdr.idfrom判断
VITEM FAR* pitem;
TreeView_GetItem(hTree, pitem);
这两句肯定会崩溃,pitem使用之前没有分配空间

许文君 2009-08-19
  • 打赏
  • 举报
回复
我把代码写成这样,但是双击就崩溃,能说下原因么
        case WM_NOTIFY:
{
if (wParam == IDC_TRV1)
{
NM_TREEVIEW* phdr = (NM_TREEVIEW*)lParam;
if(phdr->hdr.code == NM_DBLCLK)
{
HWND hTree = GetDlgItem(hWnd, IDC_TRV1);
TCHAR str[256];
TVITEM FAR* pitem;
TreeView_GetItem(hTree, pitem);
lstrcpy(str, pitem->pszText);
MessageBox(hWnd, str, "", MB_OK);
}
}
}break;
蒋晟 2009-08-19
  • 打赏
  • 举报
回复
Default Tree-View Control Message Processing

WM_LBUTTONDBLCLK Cancels label editing and, if an item was double-clicked, sends the NM_DBLCLK (tree view) notification message to the parent window. If the parent window returns 0, the tree-view control toggles the expanded state of the item, sending the parent window the TVN_ITEMEXPANDING and TVN_ITEMEXPANDED notification messages. There is no return value.
许文君 2009-08-19
  • 打赏
  • 举报
回复
说的我仍然云里雾里,不好意思,我太笨,能给我个例子代码怎么响应么。
本文介绍了如何判定剪贴板是否有文本数据、获取ComboBox的Edit句柄、得到当前用户目录、动态调整控件大小、在PreTranslateMessage处理组合键、文档视图程序避免默认打开文档、向按钮发送单击消息、解决sdi工程关闭窗口时的保存提示、如何获取其他应用程序文本、激活屏幕保护程序、得到屏幕DC、状态栏显示汉字、TabCtrl响应双击关闭、获取桌面地址、编程修改系统文件显示属性、判断文件是否被使用、调试命令行参数程序输入参数、组合框属性解析、编程打开关闭显示器、控制任务栏显示与隐藏、移除树控件水平滚动条、CFormView去滚动条、修改文件夹图标、防止VC程序多重启动、使用ASSERT函数调试、建立文件指定磁盘空间、对话框带分割条、UNICODE下CSV文件写入文、获得指定网卡序号的MAC地址、ADO访问数据库失败解决、更改ACCESS数据表字段长度、处理MDB文件删除后大小不变、在规则DLL引入DOC/VIEW体系、DLL定义共用变量、获取当前进程可执行文件名、让ActiveX控件支持ON_MOUSEWHEEL事件、改变程序弹出窗口位置、监控文件删除与移动、CFormView无滚动条、使用ADO获取SQLSERVER数据库名列表、CRecordset访问存储过程取得返回值、在编辑框自动转换回车至Tab、查找遍历文件夹包括子文件夹、实现文件夹浏览选择对话框、判断ActiveX控件注册状态、隐藏DOS窗口、在对话框上使用切分窗口、制作纯资源文件DLL、在工作线程调用UpdateData函数异常处理、检测目录或文件存在并创建、播放MP3、CTreeCtrl节点显示+号、把某项菜单置灰、动态改变菜单、处理程序窗口隐藏时的弹出菜单、当单击最小化菜单获取消息、TreeView WM_CONTEXTMENU使用TrackPopupMenu、如何发消息使菜单响应、使用windowsAPI制作多级菜单、确定视图右键菜单位置、屏蔽IE菜单的查看->源文件项、在treeview里实现右键菜单、MDI程序启动时子窗口最大化显示、NetBIOS网络协议应用、前端开发、后端开发、移动开发、游戏开发、大数据开发、开发工具、嵌入式硬件、嵌入式电路知识、嵌入式开发环境、音视频基础、音视频直播流媒体、图像处理AR特效、AI音视频处理、测试、基础运维、DevOps、操作系

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧