我如何处理在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/
总结以上是内存溢出为你收集整理的如何处理Windows树视图项目上的点击事件全部内容,希望文章能够帮你解决如何处理Windows树视图项目上的点击事件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)