我如何处理在MS Windows树视图中单击的项目?
我的Windows proc有:
LRESULT CALLBACK WndProcTreeView(HWND hwnd,UINT message,WParaM wParam,LParaM lParam) { PAINTSTRUCT paintStruct; HDC hDC; switch (message) { case WM_PAINT: { hDC = BeginPaint(hwnd,&paintStruct); EndPaint(hwnd,&paintStruct); break; } case WM_NOTIFY: { switch (reinterpret_cast<LPNMHDR>(lParam)->code) { case NM_CLICK: MessageBox(nullptr,"click",MB_OK); } } default: { return DefWindowProc(hwnd,message,wParam,lParam); break; } }
当我点击treeview控件时,会输出一个消息框。 我如何处理个别元素?
正在添加到列表中的treeview项目的示例:
std :: mutex :: lock在Windows上失败,错误代码为3
C ++ 0x“你好并发世界”立即在g ++ / linux的段错误?
通过套接字发送NULL数据
哪些用于Windows的C ++ 11编译器支持像“is_nothrow_move_constructible”这样的新types特征?
multithreading开销与相互独立的线程
std::string vTxt = std::string("Vertex count : ") + std::to_string(mesh.v.size()); tvinsert.hInsertAfter = mesh_items[mesh_items.size() - 1]; tvinsert.hParent = mesh_items[mesh_items.size() - 1]; tvinsert.item.mask = TVIF_TEXT; tvinsert.item.pszText = (LPSTR)vTxt.c_str(); mesh_items_sub.push_back((HTREEITEM)SendMessage(hwnd,TVM_INSERTITEM,(LParaM)&tvinsert));
我已经看到使用SendDlgitemmessage而不是(在Windows PROC中提供一个ID为LOWORD(wParam) ),但它需要在资源文件中设置ID – 我不知道如何创build。
为什么CR LF在Windows中更改为LF?
gtest DEATH_TEST抱怨fork()和线程,但是只有线程被join
免费的Windows 64位C ++ 11编译器
正则expression式分组与C ++ 11正则expression式库匹配
cmake不会使用pthreads构build一个Linux c ++ 11交叉编译的程序
两件事我需要我的代码工作:首先给每个项目一个lparam值,并将TVIF_TEXT作为项目的掩码更改为TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_ParaM TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_ParaM TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_ParaM ( TVIF_ParaM允许lparam传递给窗口过程,从而识别控制器)。
工作代码摘录:
TV_INSERTSTRUCT tvinsert; // ... tvinsert.hInsertAfter = Root; tvinsert.hParent = Root; tvinsert.item.pszText = std::string("some text...").c_str(); tvinsert.item.lParam = ID_SOME_ID; // << #defined constant or plain int tvinsert.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_ParaM; root_sub.push_back((HTREEITEM)SendMessage(hwnd,(LParaM)&tvinsert)); // window proc code below LRESULT CALLBACK WndProcTreeView(HWND hwnd,&paintStruct); break; } case WM_NOTIFY: { LPNM_TREEVIEW pntv = (LPNM_TREEVIEW)lParam; if (pntv->hdr.code == TVN_SELCHANGED) { switch (pntv->itemNew.lParam) { case ID_SOME_ID: std::cout << "ID_SOME_ID selected caught here..." << std::endl; break; } } } default: { return DefWindowProc(hwnd,lParam); break; } } return 0; }
好的解释/例子在这里(法语) http://chgi.developpez.com/windows/treeview/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。