rohit Posted December 23, 2007 Share Posted December 23, 2007 (edited) Can i bring up the context menu [or in any way a context] of a button by the primary click of a the button ??? Edited December 26, 2007 by rohit Link to comment Share on other sites More sharing options...
Bowmore Posted December 24, 2007 Share Posted December 24, 2007 Can i bring up the context menu [or in any way a context] of a button by the primary click of a the button ??? As far as I know it is not possible to bring up a context menu using the primary button click. Well not without intercepting the click and substituting a command to display the context menu. You can use either of these methods display a context menu if one has been defined for the application MouseClick("secondary")oÝ÷ ÚÚºÚ"µÍÙ[ ][ÝÞÐTÒÑV_I][ÝÊ "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning."- Rick Cook Link to comment Share on other sites More sharing options...
rohit Posted December 24, 2007 Author Share Posted December 24, 2007 Ya....I just figured it how... Not exactly context menu .... but something similar and more customizable expandcollapse popup#include <GUIConstants.au3> Dim $menu[3] = ["Resouce Hacker","Koda Designer","VB 6"] Dim $controlheight = 20 Dim $BgColor = 0x293029 ; Background color Dim $EdgeColor = 0x6B6963 ; Edge color Dim $ActiveColor = 0x948639 ; Active menu color Dim $FontColor = 0xFFFFFF Dim $Width = 180 Dim $height = UBound($menu)*$controlheight Dim $colored,$label[UBound($menu)] Dim $context = GUICreate("context",$width+3,$height+4,-1,-1,$ws_popup,$ws_ex_toolwindow) GUISetFont(9,300,0,"verdana",$context) GUISetBkColor($edgecolor) for $x = 0 to UBound($menu)-1 $label[$x] = GUICtrlCreateLabel(" " & $menu[$x],2,($x*$controlheight)+2,$width-1,$controlheight) GUICtrlSetBkColor(-1,$bgcolor) GUICtrlSetColor(-1,$fontcolor) Next WinSetOnTop($context,"",1) #Region $Form1 = GUICreate("Form1", 633, 447, 193, 125) $Button1 = GUICtrlCreateButton("Button1", 112, 160, $width, 33, 0) GUISetState(@SW_SHOW,$Form1) #EndRegion While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 $pos = MouseGetPos() WinMove($context,"",$pos[0]-($width/2),$pos[1]) GUISetState(@sw_show,$context) WinActivate($context) EndSwitch If BitAND(WinGetState($context), 2) Then $Pos = MouseGetPos() $wPos = WinGetPos($context) If ($Pos[0] >= $wPos[0] And $Pos[0] <= $wPos[0] + $Width) And _ ($Pos[1] >= $wPos[1] And $Pos[1] <= $wPos[1] + $Height) Then $Mouse = GUIGetCursorInfo() ; Color the active tray items If not @error Then If $Mouse[4] <> $Colored Then GUICtrlSetBkColor($Colored,$BgColor) GUICtrlSetBkColor($Mouse[4],$ActiveColor) $Colored = $Mouse[4] ;remember which was colored so we can uncolor it later EndIf EndIf Else GUISetState(@SW_HIDE,$context) EndIf EndIf WEnd [based on custom tray item example ] Link to comment Share on other sites More sharing options...
MrCreatoR Posted December 24, 2007 Share Posted December 24, 2007 (edited) Can i bring up the context menu [or in any way a context] of a button by the primary click of a the buttonSure, there is example in the help file, but here is a little(?) modified example: expandcollapse popup#include <GuiConstants.au3> $Gui = GuiCreate("Context Menu on Button") $Button = GUICtrlCreateButton("Show Menu", 20, 40, 80, 20) $DummyMenu = GUICtrlCreateDummy() $My_ContextMenu = GUICtrlCreateContextMenu($DummyMenu) $My_Item = GUICtrlCreateMenuItem("Some Item", $My_ContextMenu) $Exit_Item = GUICtrlCreateMenuItem("Exit", $My_ContextMenu) GUISetState() While 1 $Msg = GUIGetMsg() Switch $Msg Case $GUI_EVENT_CLOSE, $Exit_Item Exit Case $Button ShowMenu($Gui, $My_ContextMenu, $Button) EndSwitch WEnd ; Show a menu in a given GUI window which belongs to a given GUI ctrl Func ShowMenu($hWnd, $nContextID, $nContextControlID, $iMouse=0) Local $hMenu = GUICtrlGetHandle($nContextID) Local $iCtrlPos = ControlGetPos($hWnd, "", $nContextControlID) Local $X = $iCtrlPos[0] Local $Y = $iCtrlPos[1] + $iCtrlPos[3] ClientToScreen($hWnd, $X, $Y) If $iMouse Then $X = MouseGetPos(0) $Y = MouseGetPos(1) EndIf DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $X, "int", $Y, "hwnd", $hWnd, "ptr", 0) EndFunc ; Convert the client (GUI) coordinates to screen (desktop) coordinates Func ClientToScreen($hWnd, ByRef $x, ByRef $y) Local $stPoint = DllStructCreate("int;int") DllStructSetData($stPoint, 1, $x) DllStructSetData($stPoint, 2, $y) DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint)) $x = DllStructGetData($stPoint, 1) $y = DllStructGetData($stPoint, 2) ; release Struct not really needed as it is a local $stPoint = 0 EndFunc Edited December 24, 2007 by MsCreatoR Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize ProgramUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF Examples: ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team Link to comment Share on other sites More sharing options...
Lazycat Posted December 24, 2007 Share Posted December 24, 2007 (edited) With standard menu + GUIMenu UDF:#include <GUIConstants.au3> #include <GuiMenu.au3> $hGUI = GUICreate("GUI") $hDummy = GUiCtrlCreateDummy() $hButton = GUICtrlCreateButton("Click me", 80, 56, 75, 25, 0) $hContextMenu = GUICtrlCreateContextMenu($hDummy) $MenuItem1 = GUICtrlCreateMenuItem("MenuItem1", $hContextMenu) $MenuItem2 = GUICtrlCreateMenuItem("MenuItem2", $hContextMenu) $MenuItem3 = GUICtrlCreateMenuItem("MenuItem3", $hContextMenu) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $hButton _GUICtrlMenu_TrackPopupMenu(GUICtrlGetHandle($hContextMenu), $hGUI) Case $MenuItem1 MsgBox (0, "", "First item clicked") EndSwitch WEndMsCreatoR You was faster Edited December 24, 2007 by Lazycat Koda homepage ([s]Outdated Koda homepage[/s]) (Bug Tracker)My Autoit script page ([s]Outdated mirror[/s]) Link to comment Share on other sites More sharing options...
therks Posted December 24, 2007 Share Posted December 24, 2007 (edited) Wow... that seems... needlessly complex. ** This was aimed at post #3. #include <GUIConstantsEx.au3> $gui = GUICreate('', 200, 200) $bt = GUICtrlCreateButton('Button!', 50, 50, 100, 100) $cm = GUICtrlCreateContextMenu($bt) GUICtrlCreateMenuItem('One', $cm) GUICtrlCreateMenuItem('Two', $cm) GUICtrlCreateMenuItem('Three', $cm) $cmsub = GUICtrlCreateMenu('...', $cm) GUICtrlCreateMenuItem('Four', $cmsub) GUICtrlCreateMenuItem('Five', $cmsub) GUICtrlCreateMenuItem('Six', $cmsub) GUISetState() While 1 $gm = GUIGetMsg() Switch $gm Case $GUI_EVENT_CLOSE ExitLoop Case $bt ControlClick($gui, '', $bt, 'right') EndSwitch WEnd *Edit: Damnit, I just don't learn, I really need to start refreshing topics before replying to them. Edited December 24, 2007 by Saunders My AutoIt Stuff | My Github Link to comment Share on other sites More sharing options...
rohit Posted December 26, 2007 Author Share Posted December 26, 2007 OMG...!!!!!! Each of u were gr8......[and of course a lot better than mine...I am newbie ) Thanx for the support Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now