Jump to content

ProGUI V1.31 Professional User Interface Library (Office 2007 styles + more)


Recommended Posts

Posted Image

Posted ImagePosted Image

Posted Image

Posted Image

Posted Image

Posted Image

Posted ImagePosted Image

Posted Image

V1.32 : Hi guys! this release fixes the huge amount of private-bytes/virtual memory (400 meg :);) ) that was being allocated due to the use of nested hash map structures in the skin sub-system. I've now re-factored the sub-system to use just linked lists and should be just as quick as the map method.

Please note ProGUI is license-ware and will timeout at around 5 minutes per session so that you can trial out ProGUI with your applications. A license for the standard version is only €30 (EUR) however! There is also a ProGUI Gold license which is slightly more expensive but Includes full source code of ProGUI and a license to use it in your own projects: €45 (EUR)

http://www.progui.co.uk

ProGUI Forums

http://www.progui.co.uk/phpBB/index.php

ProGUI Main Archive: Includes DLL version, AutoIt wrapper and reference manual. (both native 32 bit and 64 bit versions of each)

http://www.progui.co.uk/downloads/ProGUI.rar

http://www.progui.co.uk/downloads/ProGUI.zip

Examples:

http://www.progui.co.uk/downloads/ProGUI_AutoIt_Examples.rar

http://www.progui.co.uk/downloads/ProGUI_AutoIt_Examples.zip

Main Features

· Easy to use and simple API with commands such as "MenuTitleEx(title.s)"

· Easy Installation

· Extremely fast rendering with internal caching and intelligent double-buffering.

· One of the most accurate replica of Whidbey, Office 2007 and Office 2003 styles that exist as well as improvements over Microsoft's engine such as flicker free menu tracking and superior menu scrolling!

· Native 32 bit and 64 bit versions!

· Windows 7, Vista and XP compatible.

· Unicode support.

. Full Source Code included in ProGUI Gold edition.

· Rebars! (IE Explorer style container control for toolbars), multiple rebars on multiple windows!

· Extended rebar functionality including new Office 2007 and Office 2003 style, auto vertical resizing and user vertical resizing.

· Super smooth window resizing of components, no wild jumping or flickering!

· Option for automatic double buffering of rebars when resizing!

· Full Automatic Chevron support for rebars, see IE Explorer - resize the window too small and click on the chevron to see a popup menu with toolbar icons.

· Extended toolbars, full 32bit Alpha masked icon/image support of any size for toolbar buttons with separate images for normal, hot and disabled states. As many toolbars as you want on multiple windows!

· New Office 2007/Office 2003 Toolstrip style toolbars!

. Office 2007/Office 2003 styled ComboBoxes in toolbars/rebars.

· Support for drop down buttons in toolbars, just pass a popup menu or extended popup menu to the command!

· Extended menus! Have cool "floating" menus contained in a rebar/container with ease! Full support for 32bit Alpha masked icons/images of any size in menus with support for different images for normal, hot and disabled states! Includes extended system menu and popup menu. Different styles of menus available for example: Office 2007 style menus, Office 2003 style menus, Office XP/Whidbey style menus, IE Explorer style, Classic/Mozilla Firefox Style and other styles. Automatic chevrons on menus when window resized too small! Automatic detection of system font change and resized accordingly. Full keyboard navigation and hot-key support. When menu goes off screen automatically fits inside screen (see Explorer for a bad implementation of this, see Firefox for a good implementation).

· Theme adaptive custom user defined colours for User Interface styles.

Thanks!

Chris.

Edited by PrincieD

Chris Deeney, developer of ProGUI - Professional Graphical User Interface Library - [url]http://www.progui.co.uk[/url]

Link to post
Share on other sites

If I wasn't a student I'd get the source... Unfortunately for you I am :)

hehe thats ok Mat and thanks I know what it's like to be a poor student, it sucks lol

Chris Deeney, developer of ProGUI - Professional Graphical User Interface Library - [url]http://www.progui.co.uk[/url]

Link to post
Share on other sites

This is the ExplorerBar example code and shows how easy it is to get up and running with ProGUI :)

; Demonstrates how to use ExplorerBars
Global $Use64BitProGUI = False ; Use 64bit version of ProGUI (True/False)
#include <ProGUI_AutoIt.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Func WindowHeight($hWnd)
    $rc = _WinAPI_GetClientRect($hWnd)
    Return DllStructGetData($rc, "bottom")-DllStructGetData($rc, "top")
EndFunc
Func WindowWidth($hWnd)
    $rc = _WinAPI_GetClientRect($hWnd)
    Return DllStructGetData($rc, "right")-DllStructGetData($rc, "left")
EndFunc

StartProGUI("", 0, 0, 0, 0, 0, 0, 0)

;- Control Constants
Enum $ExplorerBar
; Define some global arrays for easy access of icon images
Global $imageNormal[8]
Global $imageHot[8]
Global $imageDisabled[8]
; load in some example icons
$imagenormal[0] = LoadImg("iconsshell32_1007.ico", 16, 16, 0)
$imagenormal[1] = LoadImg("iconsshell32_271.ico", 16, 16, 0)
$imagenormal[2] = LoadImg("iconsshell32_22.ico", 16, 16, 0)
$imagenormal[3] = LoadImg("iconsshell32_18.ico", 16, 16, 0)
$imagenormal[4] = LoadImg("iconsshell32_235.ico", 16, 16, 0)
$imagenormal[5] = LoadImg("iconsshell32_4.ico", 16, 16, 0)
$imagenormal[6] = LoadImg("iconsshell32_4.ico", 96, 96, 0)
;- process ProGUI Windows event messages here
Func ProGUI_EventCallback($hwnd, $message, $wParam, $lParam)
  Select
    ; handle selection of menu items And $buttons
    Case $message = $WM_COMMAND
      If Hword($wParam) = 0 Then ; is an ID Then
        $MenuID = LWord($wParam)
        ConsoleWrite($MenuID&@CRLF)
      EndIf
    ; resize panelex And $textcontrolex when main window resized
    Case $message = $WM_SIZE
      _WinAPI_MoveWindow(ExplorerBarID($ExplorerBar), 5, 5, 210, WindowHeight($Window_0)-10, True)
      _WinAPI_MoveWindow(PanelExID(0, -1), 215, 5, WindowWidth($Window_0)-220, WindowHeight($Window_0)-10, True)
  EndSelect
  Return $GUI_RUNDEFMSG
EndFunc
; creates a window
Func Open_Window_0()
  Global $Window_0 = GUICreate("ExplorerBar Example", 700, 500, -1, -1, BitOR($WS_SIZEBOX, $WS_MINIMIZEBOX, $WS_MAXIMIZEBOX))
  ; create our ExplorerBar
  CreateExplorerBar($Window_0, $ExplorerBar, 5, 5, 210, 490, 0)
  AddExplorerBarGroup("System Tasks")
    ExplorerBarImageItem(0, "View system information", $imagenormal[0], 0, 0, 0)
    ExplorerBarImageItem(1, "Add or remove programs", $imagenormal[1], 0, 0, 0)
    ExplorerBarImageItem(2, "Change a setting", $imagenormal[2], 0, 0, 0)
  AddExplorerBarGroup("Other Places")
    ExplorerBarImageItem(3, "My Network Places", $imagenormal[3], 0, 0, 0)
    ExplorerBarImageItem(4, "My Documents", $imagenormal[4], 0, 0, 0)
    ExplorerBarImageItem(5, "Shared Documents", $imagenormal[5], 0, 0, 0)
    ExplorerBarImageItem(6, "Control Panel", $imagenormal[2], 0, 0, 0)
  AddExplorerBarGroup("Details")
    ExplorerBarItem(7, "Example Item 1")
    ExplorerBarItem(8, "Example Item 2")
  ; create PanelEx as main window content
  CreatePanelEx(0, $Window_0, 215, 5, 480, 490, 0)
  AddPanelExImagePage(2, $imagenormal[6], 0, 0, 0, 0, BitOR($PNLX_CENTRE, $PNLX_VCENTRE))
  ; attach our events callback for processing Windows ProGUI messages
  GUIRegisterMsg($WM_COMMAND, "ProGUI_EventCallback")
GUIRegisterMsg($WM_SIZE, "ProGUI_EventCallback")
GUIRegisterMsg($REBAR_UPDATED, "ProGUI_EventCallback")
GUIRegisterMsg($TCX_LINK_CLICK, "ProGUI_EventCallback")
GUIRegisterMsg($TCX_LINK_HOVER, "ProGUI_EventCallback")
EndFunc

Open_Window_0() ; create window
GUISetState(@SW_SHOW) ; show our newly created window
; enter main event loop
Do
  $Event = GUIGetMsg()
Until $Event = $GUI_EVENT_CLOSE

Chris Deeney, developer of ProGUI - Professional Graphical User Interface Library - [url]http://www.progui.co.uk[/url]

Link to post
Share on other sites

You never fail to dissappoint with ProGUI, do you? I would buy it too but I'm also a student, and I don't have a job so unfortunately I can't.

Thanks Mike! :) and no worries, it's a tough time for us all at the moment with the current economic climate - hopefully things will get better soon (fingers crossed!).

Chris.

Chris Deeney, developer of ProGUI - Professional Graphical User Interface Library - [url]http://www.progui.co.uk[/url]

Link to post
Share on other sites

Looks, very good, but it is not that easy to creat buttons and react on a click on that button and so on.

Which language is it?

Thanks for sharing, I'll test a little bit.

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to post
Share on other sites

Looks, very good, but it is not that easy to creat buttons and react on a click on that button and so on.

Thanks Xenobiologist! :) yes it's a little bit more fiddly with the event capturing: AutoIT controls have their events captured like normal in the GUIGetMsg() loop (and can be mixed and matched with ProGUI controls). However ProGUI event messages are captured using the standard WinAPI WM_Command model and this needs to be registered as an AutoIT callback using the GUIRegisterMsg() command (please see the ExplorerBar code above for an example).

Which language is it?

ProGUI is wrote using PureBasic.

Thanks for sharing, I'll test a little bit.

no worries ;) and thanks! ;)

Chris.

Chris Deeney, developer of ProGUI - Professional Graphical User Interface Library - [url]http://www.progui.co.uk[/url]

Link to post
Share on other sites
  • 3 weeks later...
  • 1 year later...
  • 3 years later...
54 minutes ago, Rizonetech said:

I've contacted him on his website already. He is not replying. I will try again soon.

I highly doubt that he checks his website's emails/queries anymore... so you might have to wait a few weeks for him to reply.

56 minutes ago, Rizonetech said:

Thank you for your reply.

My pleasure :D

EasyCodeIt - A cross-platform AutoIt implementation

DcodingTheWeb Forum - Follow for updates and Join for discussion

Link to post
Share on other sites
16 minutes ago, TheDcoder said:

I highly doubt that he checks his website's emails/queries anymore...

Why do you think so?
The latest version of his tool is 1.39 and the copyright of his websites was updated 2015.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2021-06-05 - Version 1.5.4.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2021-06-14 - Version 1.6.5.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

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
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By XGamerGuide
      I'm trying to assign a faint text in the background to an input field that disappears after the input has started. This should have a certain color such as gray.
    • By Bruceway
      Hi All, 
      I am trying to mark out the middle square of this Magnify Routine "window on right" (stolen from M23 - Thanks) - I assume the DllCall is overwriting the boxes. But wherever I try and redraw, they won't stay on the Magnify Window. Can anyone advise, bet way to keep boxes around the middle square.
      Please be kind with my code, it is ripped from a MUCH bigger exe.
      The "half" transparent window, is for dragging to where you want it, and the buttons are for more precise placement.
      #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <GUIConstantsEx.au3> #include <WinAPI.au3> Global $hMag_GUI, $hMagDC, $hDeskDC, $hPen, $oObj, $aWinPos[2], $iLast_Mouse_X = 0, $iLast_Mouse_Y = 0 Global $pWindowCaptureX, $pWindowCaptureY Global $pWindowMagWinX, $pWindowMagWinY #Region - GUI3 ; *** Grabber/Picker Window Global $hGUI3 = GUICreate("Capture", 150, 150, $pWindowCaptureX, $pWindowCaptureY, $WS_EX_TOOLWINDOW) Global $Pic1 = GUICtrlCreatePic("", 70, 40, 10, 10, BitOR($GUI_SS_DEFAULT_PIC,$WS_BORDER)) Global $hButtonUp = GUICtrlCreateButton("U", 65, 60, 20, 20) Global $hButtonDown = GUICtrlCreateButton("D", 65, 100, 20, 20) Global $hButtonLeft = GUICtrlCreateButton("L", 40, 80, 20, 20) Global $hButtonRight = GUICtrlCreateButton("R", 90, 80, 20, 20) Global $hButtonOK = GUICtrlCreateButton("OK", 60, 80, 30, 20) #EndRegion - GUI3 #Region - GUI4 Global $hGUI4 = GUICreate("MagWin", 250, 250, 325, 195) Global $hButtonMOK = GUICtrlCreateButton("OK", 45, 140, 30, 20) Global $hButtonMUp = GUICtrlCreateButton("U", 50, 120, 20, 20) Global $hButtonMDown = GUICtrlCreateButton("D", 50, 160, 20, 20) Global $hButtonMLeft = GUICtrlCreateButton("L", 25, 140, 20, 20) Global $hButtonMRight = GUICtrlCreateButton("R", 75, 140, 20, 20) Global $hLabelWindow = GUICtrlCreateLabel("Window", 5, 185, 44, 15) Global $hLabelWindowText = GUICtrlCreateLabel("", 60, 185, 176, 15) Global $hLabelCheck = GUICtrlCreateLabel("Check", 5, 205, 44, 15) Global $hLabelCheckText = GUICtrlCreateLabel("", 60, 205, 176, 15) Global $hLabelScreen = GUICtrlCreateLabel("Screen", 5, 225, 44, 15) Global $hLabelScreenText = GUICtrlCreateLabel("", 60, 225, 176, 15) #EndRegion - GUI4 ;GUISetState(@SW_HIDE, $hGUI1) GUISetState(@SW_SHOW, $hGUI3) GUISetState(@SW_SHOW, $hGUI4) WinSetTrans($hGUI3, "", 100) $hMag_GUI = WinGetHandle("MagWin") ; Get device context for Mag GUI $hMagDC = _WinAPI_GetDC($hMag_GUI) If @error Then Exit ; Get device context for desktop $hDeskDC = _WinAPI_GetDC(0) If @error Then _WinAPI_ReleaseDC($hMag_GUI, $hMagDC) Exit EndIf ; Create pen $hPen = _WinAPI_CreatePen($PS_SOLID, 5, 0x7E7E7E) $oObj = _WinAPI_SelectObject($hMagDC, $hPen) ; Loop until the user exits. ; *** Static Window While 1 ; Reset position Local $aWinPos = WinGetPos("Capture") If $aWinPos[0] <> $iLast_Mouse_X Or $aWinPos[1] <> $iLast_Mouse_Y Then ; Redraw Mag GUI _FOEA_Loupe($aWinPos) ;~ Local $TWPx = $aWinPos[0]+81 ;+81 Top Left Corner; +85 Middle ;~ Local $TWPy = $aWinPos[1]+75 ;+75 Top Left Corner; +80 Middle ;~ ;*** WINDOW COORDS = x+81 & y+75 (top left of picker square) GUISetState(@SW_HIDE, $hGUI3) Local $output1 = PixelCheckSum($aWinPos[0]+81, $aWinPos[1]+75, $aWinPos[0]+91, $aWinPos[1]+85) Local $output2 = PixelCheckSum($aWinPos[0]+73, $aWinPos[1]+66, $aWinPos[0]+83, $aWinPos[1]+76) If $aWinPos[0] < 1440 Then GUICtrlSetData($hLabelWindowText, $aWinPos[0]+81 & "(" & $aWinPos[0]+81+1440 &")," & $aWinPos[1]+75 & " : " & $output1) GUICtrlSetData($hLabelCheckText, $aWinPos[0]+73 & "(" & $aWinPos[0]+73+1440 & ")," & $aWinPos[1]+66 & " : " & $output2) GUICtrlSetData($hLabelScreenText, "W: " & $aWinPos[0]+73 & "(" & $aWinPos[0]+73+1440 &")," & $aWinPos[1]+66 & " C: " & $aWinPos[0]+81 & "," & $aWinPos[1]+75) Else GUICtrlSetData($hLabelWindowText, $aWinPos[0]+81-1440 & "(" & $aWinPos[0]+81 &")," & $aWinPos[1]+75 & " : " & $output1) GUICtrlSetData($hLabelCheckText, $aWinPos[0]+89-1440 & "(" & $aWinPos[0]+89 &")," & $aWinPos[1]+84 & " : " & $output2) GUICtrlSetData($hLabelScreenText, "W: " & $aWinPos[0]+73-1440 & "(" & $aWinPos[0]+73 & ")," & $aWinPos[1]+66 & " C: " & $aWinPos[0]+81 & "," & $aWinPos[1]+75) ;GUICtrlSetData($hLabel2, $aWinPos[1]+75) EndIf GUISetState(@SW_SHOW, $hGUI3) $iLast_Mouse_X = $aWinPos[0] $iLast_Mouse_Y = $aWinPos[1] $pWindowCaptureX = $aWinPos[0] $pWindowCaptureY = $aWinPos[1] ; *** Box ; Tried it here - doesn't work ;~ Global $Graphic = GUICtrlCreateGraphic(176, 55, 2, 20) ;~ Global $Graphic = GUICtrlCreateGraphic(194, 55, 2, 20) ;~ Global $Graphic = GUICtrlCreateGraphic(176, 55, 20, 2) ;~ Global $Graphic = GUICtrlCreateGraphic(176, 73, 20, 2) ;~ Global $Graphic = GUICtrlCreateGraphic(0, 0, 1, 1) EndIf Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Local $aWinPos = WinGetPos("MagWin") $pWindowMagWinX = $aWinPos[0] $pWindowMagWinY = $aWinPos[1] ;GUISetState(@SW_HIDE, $hGUI3) GUIDelete($hGUI3) ; Clear up Mag GUI _WinAPI_SelectObject($hMagDC, $oObj) _WinAPI_DeleteObject($hPen) _WinAPI_ReleaseDC(0, $hDeskDC) _WinAPI_ReleaseDC($hMag_GUI, $hMagDC) ;GUISetState(@SW_HIDE, $hMag_G GUIDelete($hGUI4) GUIDelete($hMag_GUI) ExitLoop Case $hButtonMOK GUISetState(@SW_HIDE, $hGUI3) Local $aWinPos = WinGetPos("Capture") Local $TWPx = $aWinPos[0]+81 ;+81 Top Left Corner; +85 Middle Local $TWPy = $aWinPos[1]+75 ;+75 Top Left Corner; +80 Middle ;*** WINDOW COORDS = x+81 & y+75 (top left of picker square) If $aWinPos[0] > 1440 Then $aWinPos[0] = $aWinPos[0]-1440 $TWPx = $TWPx-1440 EndIf Local $output0 = PixelCheckSum($TWPx-8, $TWPy-9, $TWPx-8+10, $TWPy+1) ;_FOEA_WinAPI_DrawRect(LRChecksum($TWPx-8), $TWPy-9, LRChecksum($TWPx-8)+10, $TWPy+1, 0xFFFFFF, 50) MsgBox($MB_SYSTEMMODAL, "Results ", _ "Window Coords" & @CRLF & _ $TWPx & "(" & $TWPx+1440 & "), " & $TWPy & @CRLF & _ "Checksum0: " & $output0 & @CRLF) GUISetState(@SW_SHOW, $hGUI3) WinActivate($hGUI3, "Capture") Case $hButtonMUp _FOEA_ButtonMUp() Case $hButtonMDown _FOEA_ButtonMDown() Case $hButtonMRight _FOEA_ButtonMRight() Case $hButtonMLeft _FOEA_ButtonMLeft() EndSwitch WEnd Func _FOEA_Loupe($aWinPos) Local $iX, $iY DllCall("gdi32.dll", "int", "StretchBlt", _ "int", $hMagDC, "int", 10, "int", 10, "int", 110, "int", 110, _ "int", $hDeskDC, "int", $aWinPos[0]+68, "int", $aWinPos[1]+61, "int", 20, "int", 20, _ "long", $SRCCOPY) DllCall("gdi32.dll", "int", "StretchBlt", _ "int", $hMagDC, "int", 130, "int", 10, "int", 110, "int", 110, _ "int", $hDeskDC, "int", $aWinPos[0]+70, "int", $aWinPos[1]+63, "int", 7, "int", 7, _ "long", $SRCCOPY) ; Appears initially - then disappears... Global $Graph1 = GUICtrlCreateGraphic(170, 57, 8, 16, $SS_WHITERECT) Global $Graph2 = GUICtrlCreateGraphic(170, 73, 31, 8, $SS_WHITERECT) Global $Graph3 = GUICtrlCreateGraphic(193, 57, 8, 16, $SS_WHITERECT) Global $Graph4 = GUICtrlCreateGraphic(170, 49, 31, 8, $SS_WHITERECT) ; This apears to be needed to stop the Magnify window moving Global $Graph5 = GUICtrlCreateGraphic(0, 0, 1, 1) ;Tried this too - no difference GUISetState(@SW_SHOW, $Graph1) GUISetState(@SW_SHOW, $Graph2) GUISetState(@SW_SHOW, $Graph3) GUISetState(@SW_SHOW, $Graph4) EndFunc ;==>Loupe Func _FOEA_ButtonMUp() Local $aWinPos = WinGetPos("Capture") WinMove($hGUI3, "Capture", $aWinPos[0], $aWinPos[1]-1) EndFunc Func _FOEA_ButtonMDown() Local $aWinPos = WinGetPos("Capture") WinMove($hGUI3, "Capture", $aWinPos[0], $aWinPos[1]+1) EndFunc Func _FOEA_ButtonMRight() Local $aWinPos = WinGetPos("Capture") WinMove($hGUI3, "Capture", $aWinPos[0]+1, $aWinPos[1]) EndFunc Func _FOEA_ButtonMLeft() Local $aWinPos = WinGetPos("Capture") WinMove($hGUI3, "Capture", $aWinPos[0]-1, $aWinPos[1]) EndFunc  
    • By XGamerGuide
      I'm trying to display a GIF. However, the GUI should not be visible. Here is an attempt that doesn't work:
      $sGIF = "MyGIF.gif" #Include <IE.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WINAPI.au3> #include <SendMessage.au3> Global Const $SC_DRAGMOVE = 0xF012 HotKeySet("{ESC}", "_Exit") $hGui = GUICreate("Test", 400, 300, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetBkColor(0xABCDEF) $oIE = _IECreateEmbedded() GUICtrlCreateObj($oIE, 10, 10, 380, 280) _WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 250) _IENavigate($oIE, $sGIF) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_PRIMARYDOWN _SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0) EndSwitch WEnd Func _Exit() Exit  
    • By kcvinu
      Hi all,
      I am creating a GUI library in Nim with win32 API functions. Even though the syntax is similar to Python, coding is almost similar to C in Nim. 
      I can change the back color of the button in NM_CUSTOMDRAW. But I can't change the button text color. here is my pseudo code.  
      proc setBtnBackColor*(me : Button, lp: LPNMCUSTOMDRAW ) = if lp.uItemState and CDIS_SELECTED : #------------------ btn clicked # Here i am changing the button color with SelectObject & FillRect. elif lp.uItemState and CDIS_HOT : # ----------------Mouse over # Here i am changing the button's mouse hover color with SelectObject & FillRect. else: # -------------------------Default color set # Here i am changing the button's default color with SelectObject & FillRect. # Here i tried---> SetTextColor(lp.hdc, RGB(102, 255, 51) ) #------- But no luck. #------------------------------------------------------------------------- Please guide me. What i am doing wrong here ?  I am returning "CDRF_SKIPDEFAULT" after calling this function.
      Note : I am using subclassed button. So when the parent window receives WM_NOTIFY message, it sends that to my button's WndProc. There i am handling the message.
    • By paw
      I use SetSoundDevice to control my audio devices but the UI was either
       
      blurry like this:
      or unusable like this:

      so I made this horrible thing to add scaling to the GUI:
      #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Change2CUI=y #AutoIt3Wrapper_Res_HiDpi=y #AutoIt3Wrapper_AU3Check_Parameters=-w 3 -w 4 -w 5 #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/sf /sv /rm #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <File.au3> ;~ _convertGUI("") If $CmdLine[0] <> 0 Then _convertGUI($CmdLine[1]) Func _convertGUI($sFilePath) If $sFilePath <> "" Then Local $aArray = FileReadToArray($sFilePath) Else ;TEST DATA Local $aArray[6] = ['$H_Res_Language = GUICtrlCreateProgress(5, 120, 210 + 25, 480, 20, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE)) ; $CBS_DROPDOWNLIST)', _ 'Local $h_Ok = GUICtrlCreateButton("Ok", 72, 224, 81, 33, 0)', _ 'GUICreate($Warning_TiTle, 700, 310, -1, -1, $WS_SIZEBOX + $WS_SYSMENU + $WS_MINIMIZEBOX)', _ 'GUICtrlCreateLabel("Output type: ", 30, 130, 65, 20) ;, $SS_RIGHT)', _ '$H_FieldNameEdit = GUICtrlCreateEdit($INP_FieldNameEdit, 100,260+25, 500, 150 - 25) ;comment', 'Local $H_CANCEL = GUICtrlCreateGraphic("Cancel", 224, 224, 97, 33, 0)'] EndIf Local $hTimer = TimerInit(), $iGUIElementCount = 0, $sResult = "", $sFileName = "", $sDrive = "", $sDir = "", $sExtension = "" If @Compiled Then _PathSplit($sFilePath, $sDrive, $sDir, $sFileName, $sExtension) $sFileName = StringRegExpReplace($sFilePath, "^.*\\", "") EndIf For $i = 0 To (UBound($aArray) - 1) If StringRegExp($aArray[$i], "GUICtrlCreate|GUICreate") Then $sResult = _splitComma($aArray[$i]) If Not @error Then $aArray[$i] = $sResult $iGUIElementCount += 1 EndIf Next ConsoleWrite("t = " & TimerDiff($hTimer) & " GUI elements = " & $iGUIElementCount & " lines = " & (UBound($aArray) - 1) & @CRLF) If $sFileName <> "" Then Local $hFile = FileOpen("edited." & $sFileName, 2) _FileWriteFromArray("edited." & $sFileName, $aArray) FileClose($hFile) EndIf Exit EndFunc ;==>_convertGUI Func _splitComma($sString) Local $sSplitResult = "", $sTrimmedR = "", $sTrimmedL = "" Local $aSplit = StringSplit($sString, ',') If Not @error Then $sTrimmedR = "" $sTrimmedL = "" For $j = 1 To $aSplit[0] If StringRegExp($aSplit[1], "(?:.GUICtrlCreateGraphic|GUICtrlCreateProgress|GUICtrlCreateSlider|GUICtrlCreateTab|GUICtrlCreateTreeView)") Then If $j = 1 Then While StringLeft($aSplit[$j], 1) <> '(' $sTrimmedL &= StringLeft($aSplit[$j], 1) $aSplit[$j] = StringTrimLeft($aSplit[$j], 1) WEnd $aSplit[$j] = StringTrimLeft($aSplit[$j], 1) EndIf EndIf If $j = $aSplit[0] Then While StringRight($aSplit[$j], 1) <> ')' $sTrimmedR &= StringRight($aSplit[$j], 1) $aSplit[$j] = StringTrimRight($aSplit[$j], 1) WEnd $aSplit[$j] = StringTrimRight($aSplit[$j], 1) EndIf If StringRegExp($aSplit[$j], "[0-9]") And $aSplit[$j] <> -1 And $aSplit[$j] <> 0 And $aSplit[$j] <> 1 And Not StringInStr($aSplit[$j], ')') Then If StringRegExp($aSplit[$j], "\-|\+") Then ;put parenthesis around + or - $aSplit[$j] = '(' & $aSplit[$j] & ")*$g_DPI" Else $aSplit[$j] = $aSplit[$j] & "*$g_DPI" EndIf EndIf If $j < $aSplit[0] Then $sSplitResult &= $aSplit[$j] & ',' ElseIf $j = $aSplit[0] Then $sSplitResult &= $aSplit[$j] & ')' Else $sSplitResult &= $aSplit[$j] EndIf Next If $sTrimmedR <> "" Then $sSplitResult &= StringReverse($sTrimmedR) If $sTrimmedL <> "" Then $sSplitResult = $sTrimmedL & '(' & $sSplitResult Else SetError(1) Return EndIf ConsoleWrite($sSplitResult & @CRLF) Return $sSplitResult EndFunc ;==>_splitComma
      And now it looks good: 
      but it doesn't work on everything, for example the "GUICtrlCreateLabel("Output type: ", 30, 130, 65, 20) ;, $SS_RIGHT)" (from the autoit3wrapper gui)
      because the comment contains a parenthesis and it would break completely if there were variables as parameters..
      Is there some kind of parser around that I could use instead or maybe someone who has already done something like this?
×
×
  • Create New...