1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
| LRESULT CALLBACK TreeviewWndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { MyTreeview *TV=(MyTreeview *)GetWindowLong(hwnd,GWL_USERDATA); return TV->MyWndProc(hwnd, message, wparam, lparam); }
MyTreeview::MyTreeview(HINSTANCE hInstance, HWND hwndParent) //constructor { ... SetWindowLong(this->hwnd,GWL_USERDATA,(int)this); wndProcOrig=(WNDPROC)SetWindowLong(this->hwnd,GWL_WNDPROC,(int)TreeviewWndProc); }
LRESULT MyTreeview::MyWndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { // char c[10]; // sprintf(c,"%d",message); // OutputDebugString(c); switch(message) { case WM_LBUTTONDBLCLK:{DoDblClick();};break; case WM_NOTIFY: { /* //LPNM_TREEVIEW lpn = (LPNM_TREEVIEW)lparam;
switch(((LPNMHDR)lparam)->code) { case NM_CLICK: {MessageBox(hwnd,"NM_Click","Test",0);};break; case NM_DBLCLK: {DoDblClick();};break; // case NM_RCLICK: // {};break; }*/ NM_TREEVIEW *pNm; pNm=(NM_TREEVIEW *) lparam; switch (pNm->hdr.code) { case NM_CLICK: MessageBox(hwnd,"This is Tree control click","something",MB_OK); break; case TVN_SELCHANGED: char text[128]; // this is the buffer pNm->itemNew.mask |= TVIF_TEXT; pNm->itemNew.pszText = text; TreeView_GetItem( pNm->hdr.hwndFrom, &pNm->itemNew ); MessageBox(hwnd,text,NULL,MB_OK); break; } };break; } return CallWindowProc( wndProcOrig, hwnd, message, wparam,lparam); } |