From: Sean H. <jal...@ho...> - 2003-02-13 02:09:17
|
>Can anyone shed some light on the following? I have a win32-gui treeview >control with multiple nodes. Different nodes carry different properties >and there exists two context popup menu when right clicked on the control. >It all works well when a node is left clicked first then right clicked, the >correct context menu comes up. However, when a node is right clicked >without left clicked first, it gives the context menu of the previously >selected node(which could be incorrect). I hope this is clear enough and >I'd appreciate if someone can point me in the right direction. Thanks. Try this to make sure you have the right node: HitTest(X, Y) Checks if the specified point in the TreeView area is occupied by a node; it returns the handle to the found node or zero if none was found. If called in an array context, it returns an additional value containing more info about the position of the specified point. Try this to get that X and Y: GetCursorPos() Returns a two elements array containing the x and y position of the cursor, or undef on errors. I'm not sure whether GetCursorPos gives the relative X and Y or the screen X and Y; if it is the screen coordinates, you can translate it pretty easily. _________________________________________________________________ MSN 8 helps eliminate e-mail viruses. Get 2 months FREE*. http://join.msn.com/?page=features/virus |
From: Roelof B. <ro...@ni...> - 2003-02-14 13:04:56
|
In reply to: (my message stands below) > Message: 1 > From: "Sean Healy" <jal...@ho...> > To: per...@li..., sam...@ki... > Subject: Re: [perl-win32-gui-users] win32-gui treeview rightclick > context menu > Date: Wed, 12 Feb 2003 17:09:06 -0900 > > >Can anyone shed some light on the following? I have a win32-gui > treeview > >control with multiple nodes. Different nodes carry different properties > >and there exists two context popup menu when right clicked on > the control. > >It all works well when a node is left clicked first then right > clicked, the > >correct context menu comes up. However, when a node is right clicked > >without left clicked first, it gives the context menu of the previously > >selected node(which could be incorrect). I hope this is clear > enough and > >I'd appreciate if someone can point me in the right direction. Thanks. > > Try this to make sure you have the right node: > > HitTest(X, Y) > Checks if the specified point in the TreeView area is occupied by a > node; it returns the handle to the found node or zero if none was > found. If > called in an array context, it returns an additional value > containing more > info about the position of the specified point. > > Try this to get that X and Y: > > GetCursorPos() > Returns a two elements array containing the x and y position of the > cursor, or undef on errors. > > I'm not sure whether GetCursorPos gives the relative X and Y or > the screen X > and Y; if it is the screen coordinates, you can translate it > pretty easily. That was not really a complete answer to the question. What this person needs to do is: - get info on the node (as described in the above using HitTest(x,y)) - then call Select on that node: my $node = $treeview->HitTest($mouse_x,$mouse_y); $treeview->Select($node); # Now the right node is selected before you show the menu. # do stuff to show the contextmenu ... best wishes Roelof Bos -------------------------------- Roelof Bos telephone: 0031 (0) 30 2145337 mobile: 0031 (0) 6 22709556 e-mail: ro...@ni... -------------------------------- |
From: <sam...@ki...> - 2003-02-14 14:34:03
|
Sean thanks for the info. Works like a charm after relative coordinates conversion with ScreenToClient() with Treeview handle. Samuel >Can anyone shed some light on the following? I have a win32-gui treeview >control with multiple nodes. Different nodes carry different properties >and there exists two context popup menu when right clicked on the control. >It all works well when a node is left clicked first then right clicked, the >correct context menu comes up. However, when a node is right clicked >without left clicked first, it gives the context menu of the previously >selected node(which could be incorrect). I hope this is clear enough and >I'd appreciate if someone can point me in the right direction. Thanks. Try this to make sure you have the right node: HitTest(X, Y) Checks if the specified point in the TreeView area is occupied by a node; it returns the handle to the found node or zero if none was found. If called in an array context, it returns an additional value containing more info about the position of the specified point. Try this to get that X and Y: GetCursorPos() Returns a two elements array containing the x and y position of the cursor, or undef on errors. I'm not sure whether GetCursorPos gives the relative X and Y or the screen X and Y; if it is the screen coordinates, you can translate it pretty easily. _________________________________________________________________ MSN 8 helps eliminate e-mail viruses. Get 2 months FREE*. http://join.msn.com/?page=features/virus |