private bool TreeControl_MessageCaptured(ref Message msg) { switch (msg.Msg) { case (int)WindowsAPI.WndMsg.WM_USER: fPreventSelChange = false; break; case (int)WindowsAPI.WndMsg.WM_MBUTTONUP: if (treeControl != null && TreeViewClicked != null) { HandleClick(WindowsAPI.PointFromLPARAM(msg.LParam), Control.ModifierKeys, true); } break; case (int)WindowsAPI.WndMsg.WM_DESTROY: if (treeControl != null) { Marshal.ReleaseComObject(treeControl); treeControl = null; } break; } return(false); }
/// <summary> /// Main constructor /// </summary> /// <param name="hwnd">Handle of the control parent</param> /// <param name="treeControl">The real Treeview object</param> public TreeViewWrapper(IntPtr hwnd, WindowsAPI.INameSpaceTreeControl2 treeControl) { this.treeControl = treeControl; treeController = new NativeWindowController(hwnd); treeController.MessageCaptured += TreeControl_MessageCaptured; parentController = new NativeWindowController(WindowsAPI.GetParent(hwnd)); parentController.MessageCaptured += ParentControl_MessageCaptured; }
public void Dispose() { if (fDisposed) { return; } if (treeControl != null) { Marshal.ReleaseComObject(treeControl); treeControl = null; } fDisposed = true; }