timmalos

Create Menu Item from right corner instead of left

2 posts in this topic

#1 ·  Posted (edited)

Hey all.

I don't know if this is doable, but I would like to be able to create one of my menu items from the right corner instead of the left one.

For example in this attached screenshot (http://imgur.com/a/AX3X0) I would like to put a new Item right-aligned (in yellow on the screenshot) instead of just after Help menu.

 

Is there any way?

 

Thanks a lot,

 

Capture.JPG

Edited by timmalos

Share this post


Link to post
Share on other sites



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 account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • blantek212
      By blantek212
      Hello,
      I try to do some script, and I need to create something like GUICtrlCreateMenu.
      But this option creates menu on the top of GUI window, and I need something like this in the other place, something like a button with menu.
      I can't find any way, how to do this...?

    • argv1
      By argv1
      Hi,
      working on my first autoit GUI an got some questions.
      Is it possible to get an action on the first menu level
      For example:
      $StartMenu = GUICtrlCreateMenu("Datei") ... while 1 Switch GUIGetMsg() Case $StartMenu MsgBox(0, "Test", "yes this works") (currently this does not work for me)
      Currently I have to create GUICtrlCreateMenuItem 's this will leed to a result
       
      And a 2nd question. I saw many time this:
      $StartMenu = GUICtrlCreateMenu("&Datei") For what does I need the ampersand? If I leave out the & nothing seems to change
       
      Thank you very much in advance
       
    • AndyS01
      By AndyS01
      I want to create a menu item and set the text to bold and the color to red, but I cannot find a UDF to do this.
      I want to make calls something like this:
      _GUICtrlMenu_SetItemFont($hMenu, $iIndex, $oFont) _GUICtrlMenu_SetItemColor($hMenu, $iIndex, $iColor) I want to make them UDFs so I don't have to add lots of code to the script that calls them.  I've seen some on-line content, but what I found needed add too much code to support it.
      Here is my test code:
      #include <GuiMenu.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Array.au3> #include <FontConstants.au3> Opt('MustDeclareVars', 1) Opt("GUICloseOnESC", 1) ; 1 = ESC closes GUI Opt("GUIOnEventMode", 1) ; 1 = OnEvent mode OnAutoItExitRegister("ExitStageLeft") ; The $aMenuItems[] array holds information about each menu item. ; Each element holds items that are separated by a '|'. When each item is split ; into an array, the resulting array has this info: ; [0] = The item's Menu ID (from the '_GUICtrlMenu_AddMenuItem' function call ; [1] = The item's Font Number (0 = no special font; 1 = font #1, etc.)) ; [2] = The Item's Text Color value (0 = no special color, else: $COLOR_RED, $COLOR_BLUE, etc.) ; [3] = The item's menu index value ; [4] = The Item's Handler name Global Enum $__MI_ID, $__MI_FONTNUM, $__MI_COLOR, $__MI_NDX, $__MI_HANDLER, $__MI_CNT Global $aMenuItems Global $iMemo, $aFonts[2] Example() exit Func Example() Local $hGUI, $hFile, $hMain createFonts() $hGUI = GUICreate("Menu", 400, 300); Create the main GUI $aMenuItems = StringSplit("", "") ; Initialize the $aMenuItems[] array $hFile = _GUICtrlMenu_CreateMenu(); Create the File menu _myGUICtrlMenu_AddMenuItem($hFile, "&New", "handle_munuitem_New") _myGUICtrlMenu_AddMenuItem($hFile, "&Open", "handle_munuitem_Open") _myGUICtrlMenu_AddMenuItem($hFile, "") _myGUICtrlMenu_AddMenuItem($hFile, "I want this to be bold 12pt Red text", "handle_MenuItem_test", 0xFF0000, 1) _myGUICtrlMenu_AddMenuItem($hFile, "") _myGUICtrlMenu_AddMenuItem($hFile, "E&xit", "handle_munuitem_Exit") $hMain = _GUICtrlMenu_CreateMenu(); Create the Main menu _GUICtrlMenu_InsertMenuItem($hMain, 0, "&File", 0, $hFile) _GUICtrlMenu_SetMenu($hGUI, $hMain); Set the window menu ; Display the 'menu items' info array For $ndx = 0 To UBound($aMenuItems) - 1 ConsoleWrite("+++: [" & $ndx & "] = " & $aMenuItems[$ndx] & @CRLF) Next $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 276, 0); Create the memo control GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New") GUISetState(@SW_SHOW) GUISetOnEvent($GUI_EVENT_CLOSE, "ExitStageLeft") GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") MemoWrite("Click on the File menu and " & @crlf & "select one of the menu items.") ; Loop until the user exits. while(1) sleep(100) WEnd EndFunc ;==>Example ; Add a menu item, then add its info to the $aMenuItems[] array Func _myGUICtrlMenu_AddMenuItem($hMenu, $sTitle = "", $sHandler = "", $iColor = 0, $iFontnum = 0) Local $iIndex, $iCmdID, $ar[1], $fontnum, $str, $color $iIndex = _GUICtrlMenu_GetItemCount($hMenu) If ($sTitle <> "") Then $iCmdID = 1000 + $iIndex $iIndex = _GUICtrlMenu_AddMenuItem($hMenu, $sTitle, $iCmdID) If ($sHandler <> "") Then ; Create then populate a MenuItem info array ReDim $ar[$__MI_CNT] $ar[$__MI_ID] = $iCmdID $ar[$__MI_FONTNUM] = $iFontnum $ar[$__MI_COLOR] = $iColor $ar[$__MI_NDX] = $iIndex $ar[$__MI_HANDLER] = $sHandler $str = _ArrayToString($ar, "|", 0) _ArrayAdd($aMenuItems, $str) $aMenuItems[0] = UBound($aMenuItems) - 1 If ($iFontnum > 0) And ($iFontnum <= UBound($aFonts)) Then _GUICtrlMenu_SetItemFont($hMenu, $iIndex, $aFonts[$iFontnum-1]) EndIf If ($iColor <> 0) Then _GUICtrlMenu_SetItemColor($hMenu, $iIndex, $iColor) EndIf GUICtrlSetOnEvent($iCmdID, $sHandler) EndIf Else _GUICtrlMenu_AddMenuItem($hMenu, "") ; Add just a horizontal bar EndIf EndFunc ;==>_myGUICtrlMenu_AddMenuItem ; Handle menu commands Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam) #forceref $hWnd, $iMsg, $ilParam Local $id, $parts, $handler $id = _WinAPI_LoWord($iwParam) ; See if this ID is in the list of items in the $aMenuItems[] array For $ndx = 1 To UBound($aMenuItems) - 1 $parts = StringSplit($aMenuItems[$ndx], "|", 2) If ($id = $parts[$__MI_ID]) Then MemoWrite("$id = " & $id) ; It is, so call the handler associated with it $handler = $parts[$__MI_HANDLER] Call($handler) ; Call the handler ExitLoop EndIf Next Return $GUI_RUNDEFMSG EndFunc ;==>WM_COMMAND Func handle_munuitem_New() MemoWrite("handle_munuitem_New") EndFunc ;==>handle_munuitem_New Func handle_munuitem_Open() MemoWrite("handle_munuitem_Open") EndFunc ;==>handle_munuitem_Open Func handle_MenuItem_test() MemoWrite("handle_MenuItem_test") EndFunc ;==>handle_MenuItem_test Func handle_munuitem_Exit() MemoWrite("handle_munuitem_Exit") EndFunc ;==>handle_munuitem_Exit Func ExitStageLeft() Exit (1) EndFunc ;==>ExitStageLeft ; Write message to memo Func MemoWrite($sMessage) Local Static $cnt = 0 $cnt += 1 GUICtrlSetData($iMemo, $sMessage & @CRLF, 1) ConsoleWrite("+++: " & StringFormat("%2d: %s", $cnt, $sMessage) & @CRLF) EndFunc ;==>MemoWrite Func createFonts() $aFonts[0] = _WinAPI_CreateFont(14, 0, 0, 0, $FW_NORMAL, _ False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, _ $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, "MS Sans Serif") $aFonts[1] = _WinAPI_CreateFont(14, 0, 0, 0, $FW_BOLD) EndFunc ;==>createFonts Here is a skeleton of the UDF functions:
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; _GUICtrlMenu_SetItemColor() - Set the color for the text in a menu item. ; ; PARAMS: $hMenu - The Handle of the menu the item's attached to ; $iIndex - The menu item number ; $iColor - The text color ; ; RETURNS: <nothing> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Func _GUICtrlMenu_SetItemColor($hMenu, $iIndex, $iColor) #forceref $hMenu, $iIndex, $iColor ConsoleWrite("+++: _GUICtrlMenu_SetItemColor(" & $hMenu & ", " & $iIndex & ", " & Hex($iColor) & ") entered" & @CRLF) ; TBD ... TBD ... TBD ... EndFunc ;==>_GUICtrlMenu_SetItemColor ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; _GUICtrlMenu_SetItemFont() - Set the font for the text in a menu item. ; ; PARAMS: $hMenu - The Handle of the menu the item's attached to ; $iIndex - The menu item number ; $iColor - The font object (as created by the _WinAPI_CreateFont() function). ; ; RETURNS: <nothing> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Func _GUICtrlMenu_SetItemFont($hMenu, $iIndex, $oFont) #forceref $hMenu, $iIndex, $fFont ConsoleWrite("+++: _GUICtrlMenu_SetItemFont(" & $hMenu & ", " & $iIndex & ", $oFont) entered" & @CRLF) ; TBD ... TBD ... TBD ... EndFunc ;==>_GUICtrlMenu_SetItemFont