Jump to content
odaylton

How to insert cursors images in combobox

Recommended Posts

odaylton

I even understand that the Handle generated by _WinAPI_LoadCursor is not an Icon but how to display the image in the Combobox

Here is the listing and please tell me how to make the current user current cursor image uncertainty

#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
;dados de mouse
#include <WinAPIRes.au3>
;COMBO
#include <GuiComboBoxEx.au3>

Example()

Func Example()
    Local $hGUI, $hImage, $hCombo
    Local $idListview, $hImage
    Local $sWow64 = ""
    Local $Pasta="C:\WINDOWS\Cursors\3dgarro.cur"

    $hGUI = GUICreate("ImageList Mouse Icons", 400, 300)
    $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 394, 100)
    $idListview = GUICtrlCreateListView("", 2, 104, 394, 200, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
    _GUICtrlListView_SetExtendedListViewStyle($idListview, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
    GUISetState(@SW_SHOW)

    ; Load images
    $hImage = _GUIImageList_Create(16, 16)
    ;teste
    _GUIImageList_AddIcon($hImage, $Pasta)
    ;<<<<<<<<<<<<<<<<<<<<<this
    $hIcon= _WinAPI_CopyCursor(_WinAPI_LoadCursor(0,$IDC_HAND));32649 ; Hand cursor

        _GUIImageList_AddIcon($hImage, $hIcon);<<<<<<<<<<<<<<<<<< erro
    for $i=1 to 15
        $hIcon= _WinAPI_CopyCursor(_WinAPI_LoadCursor(0, $i));<<<<<<<<<<<<<<<<<
        _GUIImageList_AddIcon($hImage, $hIcon);<<<<<<<<<<<<
    Next
    _GUIImageList_AddIcon($hImage, $Pasta)
    _GUICtrlListView_SetImageList($idListview, $hImage, 1)
    _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)

    ; Add columns
    _GUICtrlListView_AddColumn($idListview, "Items", 120)

    ; Add items
    $a=StringSplit("testeIcone|HAND|APPSTARTING|ARROW|CROSS|HELP|IBEAM|ICON|NO|SIZE|SIZEALL|SIZENESW|SIZENS|SIZENWSE|SIZEWE|UPARROW|WAIT|testefim","|")
    For $i=1 to $a[0]
    _GUICtrlListView_AddItem($idListview, $a[$i], $i-1)
    _GUICtrlComboBoxEx_AddString($hCombo,  $a[$i], $i-1)
    Next

    ; Loop until the user exits.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>Example

Note that only the initial image is uncertain because it comes from a file
And the one that would be the last enters as the second
And the background is black how to transform into transparent

imagem de cursor.bmp

Share this post


Link to post
Share on other sites
UEZ

Something like this here?

#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
;dados de mouse
#include <WinAPIRes.au3>
;COMBO
#include <GuiComboBoxEx.au3>

Example()

Func Example()
    Local $hGUI, $hImage, $hCombo
    Local $idListview, $hImage
    Local $sWow64 = ""
    Local $Pasta="C:\WINDOWS\Cursors\3dgarro.cur"

    $hGUI = GUICreate("ImageList Mouse Icons", 400, 300)
    $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 394, 100)
    $idListview = GUICtrlCreateListView("", 2, 104, 394, 200, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
    _GUICtrlListView_SetExtendedListViewStyle($idListview, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
    GUISetState(@SW_SHOW)

    ; Load images
    $hImage = _GUIImageList_Create(16, 16, 5)
    ;teste
    ;<<<<<<<<<<<<<<<<<<<<<this
    Local $aCursors[] = [ 32650, 32512, 32515, 32649, 32651, 32513, 32648, 32646, 32643, 32645, 32642, 32644, 32516, 32514 ]
    for $i=0 to UBound($aCursors) - 1
        $hIcon = _WinAPI_LoadCursor(0, $aCursors[$i])
        If $hIcon Then
            _GUIImageList_ReplaceIcon($hImage, -1, $hIcon)
            _WinAPI_DestroyIcon($hIcon)
        EndIf
    Next
    _GUICtrlListView_SetImageList($idListview, $hImage, 1)
    _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)

    ; Add columns
    _GUICtrlListView_AddColumn($idListview, "Items", 120)

    ; Add items
    $a=StringSplit("Standard arrow and small hourglass|Standard arrow|Crosshair|Hand|Arrow and question mark|I-beam|Slashed circle|Four-pointed arrow|Double-pointed arrow|Double-pointed arrow pointing|Double-pointed arrow|Double-pointed arrow|Vertical arrow|Hourglass","|")
    For $i=1 to $a[0]
    _GUICtrlListView_AddItem($idListview, $a[$i], $i-1)
    _GUICtrlComboBoxEx_AddString($hCombo,  $a[$i], $i-1)
    Next

    ; Loop until the user exits.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>Example

 


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
odaylton

Many thanks for the prompt reply ...
What would be the nubs if it was not the masters.

It worked in part.
Images of icons are added ... ok
But in the Combobox after choosing item the mouse image does not appear

; Load images
    $hImage = _GUIImageList_Create(32, 32, 6);16,16,5) ;aumentei o icone e mudei o Image color depth


Note that I increased the size of the icon and changed (Image color depth) to display the icon when the item is selected, since it was disappearing when selected.
I tried changing the background color but it did not work

mouse em combo.JPG

Share this post


Link to post
Share on other sites
UEZ

This code

#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
;dados de mouse
#include <WinAPIRes.au3>
;COMBO
#include <GuiComboBoxEx.au3>

Example()

Func Example()
    Local $hGUI, $hImage, $hCombo
    Local $idListview, $hImage
    Local $sWow64 = ""
    Local $Pasta="C:\WINDOWS\Cursors\3dgarro.cur"

    $hGUI = GUICreate("ImageList Mouse Icons", 400, 310)
    $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 394, 200)
    $idListview = GUICtrlCreateListView("", 2, 50, 394, 250, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
    _GUICtrlListView_SetExtendedListViewStyle($idListview, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
    GUISetState(@SW_SHOW)

    ; Load images
    $hImage = _GUIImageList_Create(32, 32, 5, 5);16,16,5) ;aumentei o icone e mudei o Image color depth
    ;teste
    ;<<<<<<<<<<<<<<<<<<<<<this
    Local $aCursors[] = [ 32650, 32512, 32515, 32649, 32651, 32513, 32648, 32646, 32643, 32645, 32642, 32644, 32516, 32514 ]
    for $i=0 to UBound($aCursors) - 1
        $hIcon = _WinAPI_LoadCursor(0, $aCursors[$i])
        If $hIcon Then
            _GUIImageList_ReplaceIcon($hImage, -1, $hIcon)
            _WinAPI_DestroyIcon($hIcon)
        EndIf
    Next
    _GUICtrlListView_SetImageList($idListview, $hImage, 1)
    _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)

    ; Add columns
    _GUICtrlListView_AddColumn($idListview, "Items", 120)

    ; Add items
    $a=StringSplit("Standard arrow and small hourglass|Standard arrow|Crosshair|Hand|Arrow and question mark|I-beam|Slashed circle|Four-pointed arrow|Double-pointed arrow|Double-pointed arrow pointing|Double-pointed arrow|Double-pointed arrow|Vertical arrow|Hourglass","|")
    For $i=1 to $a[0]
    _GUICtrlListView_AddItem($idListview, $a[$i], $i-1)
    _GUICtrlComboBoxEx_AddString($hCombo,  $a[$i], $i-1, $i-1)
    Next

    ; Loop until the user exits.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>Example

looks like this in my Win7 VM

Combo_Icon.png
 


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
odaylton

I did not imagine that a simple problem could cause so many changes.

I noticed the subtle changes from the previous code and again this is a genius thing.

But notice the icons of Cross and Iben, they are invisible because they are white and without any contour.

I again changed the _GUIImageList_Create (32, 32, 6, 2) function where the black background did display the invisible lines with white background.

Could it be that with your experience it would be possible to change the black color to a blue background at least for a better look ....

 

Another issue:

For a better visualization I adopted as a pad the 32x32 size that seems to be the normal one of the cursor and with that I thought by well increase the font for size 14.

GUISetFont (14,400,0, "Arial")

Behold, the combobox did not accept it.

Not even using GUICtrlSetFont ($ hCombo, 14, 400, 0, "Arial")

So I snoozed the _GUICtrlComboBoxEx_Create function and noticed that it uses:

_WinAPI_SetFont ($ hCombo, _WinAPI_GetStockObject ($ __ COMBOBOXCONSTANT_DEFAULT_GUI_FONT))

In your code and thanks to the link:

How to change font of ComboBoxEx

I solved the mystery by unscrambling a font of size 30 in pixels to have the desired look

Here are the latest changes:

 

#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
;dados de mouse
#include <WinAPIRes.au3>
;COMBO
#include <GuiComboBoxEx.au3>
;Fonts
#include <FontConstants.au3>

Example()

Func Example()
    Local $hGUI, $hImage, $hCombo, $hFont
    Local $idListview, $hImage
    Local $sWow64 = ""
    Local $Pasta = "C:\WINDOWS\Cursors\3dgarro.cur"

    $hGUI = GUICreate("ImageList Mouse Icons", 500, 310)

    GUISetFont(14, 400, 0, "Arial");<<<<<<<<<<this does not work for _GUICtrlComboBoxEx_Create

    $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 494, 200)
    ;GUICtrlSetFont($hCombo, 14, 400, 0, "Arial");<<<<<<<<<<It does not work
    ;
    ;Create a handle to a font object
    $hFont = _WinAPI_CreateFont(30, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial')
    ;Pass the handle to _WinAPI_SetFont
    _WinAPI_SetFont($hCombo, $hFont)

    $idListview = GUICtrlCreateListView("", 2, 50, 494, 250, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
    _GUICtrlListView_SetExtendedListViewStyle($idListview, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
    GUISetState(@SW_SHOW)

    ; Load images
    $hImage = _GUIImageList_Create(32, 32, 6, 2) ;32,32,5,5) ;  ;<<<<<<<<<<<<<<<<<<<<<this
    Local $aCursors[] = [32650, 32512, 32515, 32649, 32651, 32513, 32648, 32646, 32643, 32645, 32642, 32644, 32516, 32514]
    For $i = 0 To UBound($aCursors) - 1
        $hIcon = _WinAPI_LoadCursor(0, $aCursors[$i])
        If $hIcon Then
            _GUIImageList_ReplaceIcon($hImage, -1, $hIcon)
            _WinAPI_DestroyIcon($hIcon)
        EndIf
    Next

    _GUICtrlListView_SetImageList($idListview, $hImage, 1)
    _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)

    ; Add columns
    _GUICtrlListView_AddColumn($idListview, "Icons - Mouses", 350)


    ; Add items
    $a = StringSplit("Standard arrow and small hourglass|Standard arrow|Crosshair|Hand|Arrow and question mark|I-beam|Slashed circle|Four-pointed arrow|Double-pointed arrow|Double-pointed arrow pointing|Double-pointed arrow|Double-pointed arrow|Vertical arrow|Hourglass", "|")
    For $i = 1 To $a[0]
        _GUICtrlListView_AddItem($idListview, $a[$i], $i - 1)
        _GUICtrlComboBoxEx_AddString($hCombo, $a[$i], $i - 1, $i - 1);<<<<<<<<<<<<<<<<<<<<this is just for geniuses
    Next

    ; Loop until the user exits.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>Example

I suggest that this source detail can be corrected or exemplified within the autoit help

 

I look forward to the new genius idea to partially solve the background color problem.

Preferably using GetSysColor

 

Share this post


Link to post
Share on other sites
UEZ

Here the version to change the background color

#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
;dados de mouse
#include <WinAPIRes.au3>
;COMBO
#include <GuiComboBoxEx.au3>
;Fonts
#include <FontConstants.au3>
;background color
#include <GDIPlus.au3>

Example()

Func Example()
    Local $hGUI, $hImage, $hCombo, $hFont
    Local $idListview, $hImage
    Local $sWow64 = ""
    Local $Pasta = "C:\WINDOWS\Cursors\3dgarro.cur"

    $hGUI = GUICreate("ImageList Mouse Icons", 500, 310)

    GUISetFont(14, 400, 0, "Arial");<<<<<<<<<<this does not work for _GUICtrlComboBoxEx_Create

    $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 494, 200)
    ;GUICtrlSetFont($hCombo, 14, 400, 0, "Arial");<<<<<<<<<<It does not work
    ;
    ;Create a handle to a font object
    $hFont = _WinAPI_CreateFont(30, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial')
    ;Pass the handle to _WinAPI_SetFont
    _WinAPI_SetFont($hCombo, $hFont)

    $idListview = GUICtrlCreateListView("", 2, 50, 494, 250, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
    _GUICtrlListView_SetExtendedListViewStyle($idListview, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
    GUISetState(@SW_SHOW)

    _GDIPlus_Startup()
    ; Load images
    Local $iW = 32, $iH = 32, $iBgColor1 = 0xFFE0E0, $iBgColor2 = BitShift(BitAND(0xFF, $iBgColor1), -16) + BitAND(0xFF00, $iBgColor1) + BitShift(BitAND(0xFF0000, $iBgColor1), 16)
    $hImage = _GUIImageList_Create($iW, $iH, 5) ;32,32,5,5) ;  ;<<<<<<<<<<<<<<<<<<<<<this
    Local $aCursors[] = [32650, 32512, 32515, 32649, 32651, 32513, 32648, 32646, 32643, 32645, 32642, 32644, 32516, 32514]
    $hBmp = _GDIPlus_BitmapCreateFromScan0($iW, $iH)
    $hGfx = _GDIPlus_ImageGetGraphicsContext($hBmp)
    _GUIImageList_SetBkColor ( $hImage, $iBgColor1) ;BGR
    For $i = 0 To UBound($aCursors) - 1
        $hIcon = _WinAPI_LoadCursor(0, $aCursors[$i])
        If $hIcon Then
            Switch $aCursors[$i]
                Case 32513, 32515
                    _GUIImageList_ReplaceIcon($hImage, -1, $hIcon)
                Case Else
                    $hImg = _GDIPlus_BitmapCreateFromHICON32($hIcon) ;convert the cursor to a bmp
                    _GDIPlus_GraphicsClear($hGfx, 0xFF000000 + $iBgColor2) ;ARGB
                    _GDIPlus_GraphicsDrawImageRect($hGfx, $hImg, 0, 0, $iW, $iH)
                    $hIconNew = _GDIPlus_HICONCreateFromBitmap($hBmp)
                    _GUIImageList_ReplaceIcon($hImage, -1, $hIconNew)
                    _WinAPI_DestroyIcon($hIconNew)
                    _GDIPlus_ImageDispose($hImg)
            EndSwitch
            _WinAPI_DestroyIcon($hIcon)
        EndIf
    Next
    _GDIPlus_GraphicsDispose($hGfx)
    _GDIPlus_ImageDispose($hBmp)

    _GUICtrlListView_SetImageList($idListview, $hImage, 1)
    _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)

    ; Add columns
    _GUICtrlListView_AddColumn($idListview, "Icons - Mouses", 350)


    ; Add items
    $a = StringSplit("Standard arrow and small hourglass|Standard arrow|Crosshair|Hand|Arrow and question mark|I-beam|Slashed circle|Four-pointed arrow|Double-pointed arrow|Double-pointed arrow pointing|Double-pointed arrow|Double-pointed arrow|Vertical arrow|Hourglass", "|")
    For $i = 1 To $a[0]
        _GUICtrlListView_AddItem($idListview, $a[$i], $i - 1)
        _GUICtrlComboBoxEx_AddString($hCombo, $a[$i], $i - 1, $i - 1);<<<<<<<<<<<<<<<<<<<<this is just for geniuses
    Next

    ; Loop until the user exits.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    _GDIPlus_Shutdown()
EndFunc   ;==>Example

Also for those two cursors (standard arrow and I-beam).

Edited by UEZ
Update

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

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

    • odaylton
      By odaylton
      Hello everyone ,
      Text translated from Portuguese by google - please apologize for any errors

      Once again I need a light from the gurus of this wonderful website
      I am fanatic by combobox for its usability but I am not able to uncertain images within lists ...
      I know uncertain icons, and cursors but I am not able to insert gif or jpg images.
      1) How to solve this ...
      2) will the path is to convert gif into bmp and then uncertain ... how to do that?
      #include <GUIConstantsEx.au3> #include <GuiImageList.au3> #include <GuiListView.au3> #include <WinAPI.au3> #include <WindowsConstants.au3> ;dados de mouse #include <WinAPIRes.au3> ;COMBO #include <GuiComboBoxEx.au3> ;Fonts #include <FontConstants.au3> ;obter imagem de arquivo #include <GDIPlus.au3> #include <WinAPIGdi.au3> Example() Func Example() Local $hGUI, $hImage, $hCombo, $hFont Local $idListview, $hImage Local $sWow64 = "" Local $Pasta = "C:\WINDOWS\Cursors\3dgarro.cur" Local $PastaROMs = @MyDocumentsDir & "\Stella\ROMs\" ;com barra no final $hGUI = GUICreate("ImageList", 500, 310) GUISetFont(14, 400, 0, "Arial") ;<<<<<<<<<<this does not work for _GUICtrlComboBoxEx_Create $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 494, 200) ;GUICtrlSetFont($hCombo, 14, 400, 0, "Arial");<<<<<<<<<<It does not work ; ;Create a handle to a font object $hFont = _WinAPI_CreateFont(30, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial') ;Pass the handle to _WinAPI_SetFont _WinAPI_SetFont($hCombo, $hFont) $idListview = GUICtrlCreateListView("", 2, 50, 494, 250, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT)) _GUICtrlListView_SetExtendedListViewStyle($idListview, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER)) GUISetState(@SW_SHOW) ; Initialize GDI+ library _GDIPlus_Startup() ; Load images $hImage = _GUIImageList_Create(120, 70, 6, 2) ;32,32,5,5) ; $DadosCombo = "Escolha|" & _GUIImageList_Add($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap($hCombo, 0x0000FF, 120, 70)) ;Local $aCursors[] = [32650, 32512, 32515, 32649, 32651, 32513, 32648, 32646, 32643, 32645, 32642, 32644, 32516, 32514] For $i = 1 To 10 $sFile = FileOpenDialog("Please select an image", $PastaROMs, "Image (*.jpg;*.png;*.bmp;*.gif;*.tif)", BitOR($FD_PATHMUSTEXIST, $FD_FILEMUSTEXIST)) If @error Then Exit MsgBox(BitOR($MB_TOPMOST, $MB_ICONERROR), "Error", "No image file has been selected", 30) $a = _GDIPlus_BitmapCreateFromFile ($sFile);<<<<< ok If @error Or Not $hImage Then MsgBox(BitOR($MB_TOPMOST, $MB_ICONERROR), "Error", "This file isn't supported by GDIPlus!") Else $b=_GUIImageList_Add($hImage, $a);<<<<<< Return -1 $DadosCombo &= "|" & $i & "_img_princ.gif""|" & $b EndIf Next _GUICtrlListView_SetImageList($idListview, $hImage, 1) _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage) ; Add columns _GUICtrlListView_AddColumn($idListview, "Icons - Mouses", 350) ; Add items $a = StringSplit($DadosCombo, "|") For $i = 1 To $a[0] Step 2 _GUICtrlListView_AddItem($idListview, $a[$i], $a[$i + 1]) _GUICtrlComboBoxEx_AddString($hCombo, $a[$i], $a[$i + 1], $a[$i + 1]) Next ;AutoIt_Debugger_Command:Disable_Debug ; Loop until the user exits. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() ;AutoIt_Debugger_Command:Enable_Debug EndFunc ;==>Example tks
    • aiter
      By aiter
      I  possibly misunderstood the value of combo boxes, but I thought you could type a value, press enter and the combo box would store that value.
      The reason for wanting this is to store a history of typed commands into the combo box (accepted by pressing enter).
       
      After hours of trying to trap enter on a combobox I realized that the enter event was not registering.
      I had code like this (which used to work on a input box), but it does not for a combobox (because it does not accept enter)
      unc WM_COMMAND($hWnd, $Msg, $wParam, $lParam) Local $nNotifyCode = BitShift($wParam, 16) Local $nID = BitAND($wParam, 0x0000FFFF) If $hWnd = $CmdForm Then If $nID = $ComboInput Then ; useed to work on a normal input box If _IsPressed('0D') Then ; enter was pressed, respond DoCmd() Anyone able to help?
    • Grasoft
      By Grasoft
      Greetings everyone,
      I'm writing a software that edit an ini file section by section with adding/renaming abilities
      but whenever I manually change the combobox to value other than constducted previously, I cannot get this value.
      THIS is a clean version of the code:
      #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiStatusBar.au3> #include <GuiEdit.au3> #include <MsgBoxConstants.au3> #Region ### START Koda GUI section ### Form=C:\Program Files (x86)\AutoIt3\SciTE\Koda\Forms\QuickRepEditList7.kxf $SecMgr = GUICreate("Sections Manager", 1159, 690) GUISetFont(12, 800, 0, "MS Sans Serif") $EditSec = GUICtrlCreateEdit("", 45, 45, 1090, 644, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_HSCROLL, $ES_NOHIDESEL)) $Edit2 = GUICtrlCreateEdit("", 11, 45, 33, 617, BitOR($ES_RIGHT, $ES_READONLY, $ES_WANTRETURN)) GUICtrlSetData(-1, StringFormat(" 1:\r\n 2:\r\n 3:\r\n 4:\r\n 5:\r\n 6:\r\n 7:\r\n 8:\r\n 9:\r\n10:\r\n11:\r\n12:\r\n13:\r\n14:\r\n15:\r\n16:\r\n17:\r\n18:\r\n19:\r\n20:\r\n21:\r\n22:\r\n23:\r\n24:\r\n25:\r\n26:\r\n27:\r\n28:\r\n29:\r\n30:")) $Label1 = GUICtrlCreateLabel("Select Section:", 7, 13, 126, 24) GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif") $Savesec = GUICtrlCreateButton("Save Changes", 375, 7, 129, 33) $NewSec = GUICtrlCreateButton("New Section", 700, 7, 121, 33) $SecDwn = GUICtrlCreateButton("Section Down", 830, 7, 137, 33) $SecUp = GUICtrlCreateButton("Section Up", 980, 7, 129, 33) $copystrs = GUICtrlCreateButton("*******", 507, 7, 73, 33) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") $HeavySep = GUICtrlCreateButton("====", 581, 7, 73, 33) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") Global $SecSel Global $secno Global $secn = "NULLz" Global $sFilePathtemp Global $aArray Global $SecNames Global $secnnew Global $ssecn $SecSel = GUICtrlCreateCombo("", 110, 10, 257, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL)) queysecs() Filledit() GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### $secno=GUICtrlRead($SecSel) $changed=0 While 1 $secn = GUICtrlRead($SecSel) $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE saveeditedmsg() Exit Case $SecSel $secno=GUICtrlRead($SecSel) queysecs() Filledit() Case $Savesec saveeditedmsg() queysecs() Case $NewSec Case $SecDwn Case $SecUp Case $copystrs ClipPut("**************************************************************************************************************************************************************") Case $HeavySep ClipPut("==============================================================================================================================================================") EndSwitch WEnd Func queysecs();query section names $sFilePath = @ScriptDir & "\" & "Txt_Reps.ini" $aArray = IniReadSectionNames($sFilePath) $SecNames = $aArray[1] If $secn = "NULLz" Then $secn = $aArray[1] EndIf If Not @error Then For $i = 2 To $aArray[0] $SecNames = $SecNames & "|" & $aArray[$i] Next GUICtrlSetData($SecSel, "", "") GUICtrlSetData($SecSel, $SecNames, $secn) $secno = $secn EndIf EndFunc ;==>queysecs Func Filledit(); transfer section values on the edit box GUICtrlSetData($EditSec, "") $sFilePath = @ScriptDir & "\" & "Txt_Reps.ini" For $i = 1 To 30 $sRead = IniRead($sFilePath, $secn, $i, "") GUICtrlSetData($EditSec, $sRead & @CRLF, 1) Next GUISetState(@SW_SHOW) EndFunc ;==>Filledit Func saveeditedmsg(); save or rename modified section If $secn <> $secno Then $iMsgBoxAnswer = MsgBox(3, "NEW/RENAME", "Press YES to Add this as NEW section" & @CRLF & "Press NO to rename and save this section from " & $secno & "To" & $secn) Select Case $iMsgBoxAnswer = 6 ;YES $secn = $secno save($secn) $secn = GUICtrlRead($SecSel) $secno = $secn Case 7 ;NO $sFilePath = @ScriptDir & "\" & "Txt_Reps.ini" IniRenameSection($sFilePath, $secno, $secn) save($secn) $secn = GUICtrlRead($SecSel) $secno = $secn EndSelect Else $iMsgBoxAnswer = MsgBox(4, "Do you want to save changes to this section", "Save Section: " & $secn) Select Case $iMsgBoxAnswer = 6 ;yes save($secn) EndSelect EndIf EndFunc ;==>saveeditedmsg ;MsgBox(4, "Do you want to add this to Database?",$secn) Func save($ssecn); save edit control to a file and then rewrite modified values by line order. $sFilePathtemp = FileOpen(@ScriptDir & "\" & "tempo.quickrep", $FO_READ + $FO_OVERWRITE + $FO_CREATEPATH + $FO_UTF8) $sFilePath = @ScriptDir & "\" & "Txt_Reps.ini" FileWrite($sFilePathtemp, GUICtrlRead($EditSec)) $sFilePathtemp = FileOpen(@ScriptDir & "\" & "tempo.quickrep", $FO_READ + $FO_UTF8) For $i = 1 To 30 $sRead = FileReadLine($sFilePathtemp, $i) IniWrite($sFilePath, $ssecn, $i, $sRead) Next GUISetState(@SW_SHOW) EndFunc ;==>save And this is with som test msg boxes to know how to get it
      #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiStatusBar.au3> #include <GuiEdit.au3> #include <MsgBoxConstants.au3> #Region ### START Koda GUI section ### Form=C:\Program Files (x86)\AutoIt3\SciTE\Koda\Forms\QuickRepEditList7.kxf $SecMgr = GUICreate("Sections Manager", 1159, 690) GUISetFont(12, 800, 0, "MS Sans Serif") $EditSec = GUICtrlCreateEdit("", 45, 45, 1090, 644, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_HSCROLL, $ES_NOHIDESEL)) $Edit2 = GUICtrlCreateEdit("", 11, 45, 33, 617, BitOR($ES_RIGHT, $ES_READONLY, $ES_WANTRETURN)) GUICtrlSetData(-1, StringFormat(" 1:\r\n 2:\r\n 3:\r\n 4:\r\n 5:\r\n 6:\r\n 7:\r\n 8:\r\n 9:\r\n10:\r\n11:\r\n12:\r\n13:\r\n14:\r\n15:\r\n16:\r\n17:\r\n18:\r\n19:\r\n20:\r\n21:\r\n22:\r\n23:\r\n24:\r\n25:\r\n26:\r\n27:\r\n28:\r\n29:\r\n30:")) $Label1 = GUICtrlCreateLabel("Select Section:", 7, 13, 126, 24) GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif") $Savesec = GUICtrlCreateButton("Save Changes", 375, 7, 129, 33) $NewSec = GUICtrlCreateButton("New Section", 700, 7, 121, 33) $SecDwn = GUICtrlCreateButton("Section Down", 830, 7, 137, 33) $SecUp = GUICtrlCreateButton("Section Up", 980, 7, 129, 33) ;$LineNo = GUICtrlCreateInput("LineNo", 664, 7, 65, 28) $copystrs = GUICtrlCreateButton("*******", 507, 7, 73, 33) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") $HeavySep = GUICtrlCreateButton("====", 581, 7, 73, 33) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") Global $SecSel Global $secno Global $secn = "NULLz" Global $sFilePathtemp Global $aArray Global $SecNames Global $secnnew Global $ssecn $SecSel = GUICtrlCreateCombo("", 110, 10, 257, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL)) queysecs() Filledit() GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### $secno=GUICtrlRead($SecSel) $changed=0 While 1 $secn = GUICtrlRead($SecSel) ;If $secn <> $secno and $changed=0 Then ; $secns = $secn ; $changed=1 ;EndIf $nMsg = GUIGetMsg() ;MsgBox(4, "TEST1?", $secn) Switch $nMsg Case $GUI_EVENT_CLOSE saveeditedmsg() Exit Case $SecSel ;MsgBox(4, "TEST?", GUICtrlRead($SecSel)) ;MsgBox(4, "TEST1?", $secns) ;MsgBox(4, "TEST2?", $secn) $secno=GUICtrlRead($SecSel) ;saveeditedmsg() queysecs() Filledit() ;$changed=0 Case $Savesec saveeditedmsg() queysecs() Case $NewSec Case $SecDwn Case $SecUp Case $copystrs ClipPut("**************************************************************************************************************************************************************") Case $HeavySep ClipPut("==============================================================================================================================================================") EndSwitch ; MsgBox(4, "TEST2?", $secn) WEnd Func queysecs();query section names $sFilePath = @ScriptDir & "\" & "Txt_Reps.ini" $aArray = IniReadSectionNames($sFilePath) $SecNames = $aArray[1] ; MsgBox(4, "test3?", $secn) If $secn = "NULLz" Then $secn = $aArray[1] EndIf If Not @error Then For $i = 2 To $aArray[0] $SecNames = $SecNames & "|" & $aArray[$i] Next GUICtrlSetData($SecSel, "", "") GUICtrlSetData($SecSel, $SecNames, $secn) $secno = $secn ;MsgBox(4, "test4?", $secn) EndIf EndFunc ;==>queysecs Func Filledit(); transfer section values on the edit box GUICtrlSetData($EditSec, "") $sFilePath = @ScriptDir & "\" & "Txt_Reps.ini" For $i = 1 To 30 $sRead = IniRead($sFilePath, $secn, $i, "") GUICtrlSetData($EditSec, $sRead & @CRLF, 1) Next GUISetState(@SW_SHOW) EndFunc ;==>Filledit Func saveeditedmsg(); save or rename modified section If $secn <> $secno Then $iMsgBoxAnswer = MsgBox(3, "NEW/RENAME", "Press YES to Add this as NEW section" & @CRLF & "Press NO to rename and save this section from " & $secno & "To" & $secn) Select Case $iMsgBoxAnswer = 6 ;YES $secn = $secno save($secn) $secn = GUICtrlRead($SecSel) $secno = $secn Case 7 ;NO $sFilePath = @ScriptDir & "\" & "Txt_Reps.ini" IniRenameSection($sFilePath, $secno, $secn) save($secn) $secn = GUICtrlRead($SecSel) $secno = $secn EndSelect Else $iMsgBoxAnswer = MsgBox(4, "Do you want to save changes to this section", "Save Section: " & $secn) Select Case $iMsgBoxAnswer = 6 ;yes save($secn) EndSelect EndIf EndFunc ;==>saveeditedmsg ;MsgBox(4, "Do you want to add this to Database?",$secn) Func save($ssecn); save edit control to a file and then rewrite modified values by line order. $sFilePathtemp = FileOpen(@ScriptDir & "\" & "tempo.quickrep", $FO_READ + $FO_OVERWRITE + $FO_CREATEPATH + $FO_UTF8) $sFilePath = @ScriptDir & "\" & "Txt_Reps.ini" FileWrite($sFilePathtemp, GUICtrlRead($EditSec)) $sFilePathtemp = FileOpen(@ScriptDir & "\" & "tempo.quickrep", $FO_READ + $FO_UTF8) For $i = 1 To 30 $sRead = FileReadLine($sFilePathtemp, $i) IniWrite($sFilePath, $ssecn, $i, $sRead) Next GUISetState(@SW_SHOW) EndFunc ;==>save The ini file withthe au3 attached
      This is how I want: when the user changes the combo, the script will check the text combo. In case of changed text it will ask user if I should rename or add it as a new section and then save. If not changed the text of combo it will ask to save only.
      IF NOT possible, Will it possible with _GUICtrlComboBox__GUICtrlComboBoxEx_Create or _GUICtrlComboBoxEx_Create or not
       
      THANK you very much in advance
      QuickSecEdit.zip
    • Xandy
      By Xandy
      I have a bunch of SDL_Surfaces loaded into memory.  I want to list them in a ComboBox.
      Using this code, I can load images to the combobox from file but not from existing SDL_Surface memory
      CODE ISN"T MEANT TO RUN
      ; Create combobox pic list example $aControl[$iControl_id][$eControl_data] = _GUICtrlComboBoxEx_Create($gui, $data_value, $data_x, $data_y, $data_w, $data_h, $CBS_DROPDOWNLIST) ; Image List for ComboboxEx Local $hImage = _GUIImageList_Create($gTile_w, $gTile_h, 6) ; Fill hImage with SDL_Surfaces stored in memory: aNPC_surf[scale][type][way][frame] For $i = 0 To 1 ; This works but only from file: ;_GUIImageList_AddBitmap($hImage, $gFolder_graphics & $gaWorld_info[$player.iWorld_cur][$eWi_filename] & "Tiles\" & $i & ".bmp") ; I've broken up a sprite sheet and want to insert into combobox from memory ;_GUIImageList_Add($hImage, $aNPC_surf[1][1][1][$i]) _GUIImageList_Add($hImage, _GDIPlus_BitmapCreateFromMemory($aNPC_surf[1][1][1][$i]), True) ;_GDIPlus_BitmapCreateFromMemory($aNPC_surf[1][1][1][$i]) ; Add the index number to combobox item _GUICtrlComboBoxEx_AddString($aControl[$eNPC_iPic_type][$eControl_data], $i, $i, $i) Next ; Set hImage list to combobox control _GUICtrlComboBoxEx_SetImageList($aControl[$eNPC_iPic_type][$eControl_data], $hImage) Anyone know if I can convert from SDL_Surface to hBitmap?  Maybe I'm doing something else wrong.
       
      I've seen hBitmap converted to SDL_Surface but I don't really understand it yet: 
       
      My full script can be found here:
       
    • Ian_Mac
      By Ian_Mac
      hello, i just wanted to ask if how........
       I have a gui combo box with a list and i wanted it to remember the last item that i selected, that when i close the gui and then open the gui again, my last selected item will be automatically show in the combobox as selected item already.
      thank you in advance.
×