Jump to content
PrincieD

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

Recommended Posts

PrincieD

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]

Share this post


Link to post
Share on other sites
PrincieD

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]

Share this post


Link to post
Share on other sites
PrincieD

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]

Share this post


Link to post
Share on other sites
Mikeman27294

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.

Share this post


Link to post
Share on other sites
PrincieD

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.

  • Like 1

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

Share this post


Link to post
Share on other sites
engjcowi

This is awesome. Defo gonna look into this further

Thanks


Drunken Frat-Boy Monkey Garbage

Share this post


Link to post
Share on other sites
PrincieD

This is awesome. Defo gonna look into this further

Thanks

Thanks engjcowi! :)

Chris.


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

Share this post


Link to post
Share on other sites
Xenobiologist

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

Share this post


Link to post
Share on other sites
PrincieD

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]

Share this post


Link to post
Share on other sites
PrincieD

New update! V1.32, see top of thread.

Chris.


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

Share this post


Link to post
Share on other sites
acidman

damn this is nice, good work man!!!


[u]My dream is to have a dream...[/u]

Share this post


Link to post
Share on other sites
TheDcoder

@Rizonetech You better contact him at his website since he hasn't visited the forum since 2012...


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Spoiler

My contributions to the AutoIt Community

Some messages & Apologizes:

If I hurt you, Please accept my apologies, I never (regardless of the situation) mean to hurt anybody!!!

Also, I am very busy with my project so I will appear in the last row of the online list, if you want to contact me: Email@TheDcoder.xyz

Or you can have a nice chat with me in freenode, I use the same nick on freenode too!

3fHNZJ.gif

PLEASE JOIN ##AutoIt AND HELP THE IRC AUTOIT COMMUNITY!

Share this post


Link to post
Share on other sites
TheDcoder
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


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Spoiler

My contributions to the AutoIt Community

Some messages & Apologizes:

If I hurt you, Please accept my apologies, I never (regardless of the situation) mean to hurt anybody!!!

Also, I am very busy with my project so I will appear in the last row of the online list, if you want to contact me: Email@TheDcoder.xyz

Or you can have a nice chat with me in freenode, I use the same nick on freenode too!

3fHNZJ.gif

PLEASE JOIN ##AutoIt AND HELP THE IRC AUTOIT COMMUNITY!

Share this post


Link to post
Share on other sites
water
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 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
TheDcoder

Yes, I just noticed that... still the same opinion, will have to wait a few weeks before getting a response.


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Spoiler

My contributions to the AutoIt Community

Some messages & Apologizes:

If I hurt you, Please accept my apologies, I never (regardless of the situation) mean to hurt anybody!!!

Also, I am very busy with my project so I will appear in the last row of the online list, if you want to contact me: Email@TheDcoder.xyz

Or you can have a nice chat with me in freenode, I use the same nick on freenode too!

3fHNZJ.gif

PLEASE JOIN ##AutoIt AND HELP THE IRC AUTOIT COMMUNITY!

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

    • kcvinu
      By kcvinu
      Hi all,
      I have a button created with _GUICtrlButton_Create function. I know that this function returns a handle of button instead of an ID. So i have obtain control ID by calling _WinAPI_GetDlgCtrlID function. After that i have tried the GUICtrlSetBkColor function. But it didnt worked. Any suggestions will be appreciated. Thanks in advance. 
      Note : - The window which carries this button is not created with native gui create function. Instead, it is created with CreateWindowEx api function.
    • kcvinu
      By kcvinu
      Hi all,
      I am playing with _GUICtrlButton_Create function. How can i change this button's (or the entire form's) font ?. The in-built GUICtrlSetFont function is not working even when i convert the control handle to control ID with _WinAPI_GetDlgCtrlID ( ) function.  Do i need to use CreateFont api finction and send WM_SETFONT message ? Or is there any other easy and safe ways to do this ?. Thanks in advance.
      Note : This window is created by CreateWindowEx function, not by GUICreate function. 
    • Jake_s
      By Jake_s
      Hi All, 
       
      I am a begginer in auto it. I am trying to build simple gui that will show me if for example notepad.exe process is currently running on the system. I have built something like this, but when I execute it shows me message boxes, but I want the results to show in gui. If you can help me start with this.
       
      Thanks
       
        #include <MsgBoxConstants.au3>
      #include <GUIConstantsEx.au3>

      ActiveProcess()

      Func ActiveProcess()
      GUICreate("Act")
               ProcessExists("wuauclt.exe")

             If ProcessExists("wuauclt.exe") Then
       MsgBox($MB_SYSTEMMODAL, "", "Windows Upates are running")
           Else
       MsgBox($MB_SYSTEMMODAL, "", "Windows Updates are not running")
       EndIf
         ;Notepad

               ProcessExists("notepad.exe")

               If ProcessExists("notepad.exe") Then
      MsgBox($MB_SYSTEMMODAL, "", "Notepad is running")
              Else
      MsgBox($MB_SYSTEMMODAL, "", "Notepad is not running")
      EndIf  
       
    • corz
      By corz
      This is a magnifier-color-picker thing mostly based on some code I found on Stack Overflow, of all places. At least all the clever bits are from there. 
      I'd love to use this code inside an app I'm working on. But it has an issue. The first time the mag pops up it works perfectly, but the second and subsequent times, it's a boring grey square. 
      One of you smart dudes will probably look at this and go, "Aha!", but I'm stumped.
      #include <WindowsConstants.au3> #include <WinAPI.au3> #include <StaticConstants.au3> MagWindow() MagWindow() ; Magnifier-Color-Picker.. ; Props to McBarby for the cross-hairs. func MagWindow() global $iMagZoom = 5 global $iMagWidth = Ceiling(100/$iMagZoom) global $iMagHeight = Ceiling(100/$iMagZoom) global $hDCDesk, $hDCZoom, $hPen global $hUser32 = DllOpen("user32.dll") global $hGDI32 = DllOpen("gdi32.dll") global $pixel_color, $mag_open = false local $mX, $mY global $hCross = GUICreate('', 48, 48, -1, -1, $WS_POPUP, $WS_EX_TOPMOST) WinSetTrans($hCross, '', 0) GUISetCursor(3, 1, $hCross) global $hZoom = GUICreate("MagPicker", $iMagWidth * $iMagZoom, $iMagHeight * $iMagZoom, _ MouseGetPos(0), MouseGetPos(1), $WS_POPUP+$WS_BORDER, $WS_EX_TOPMOST) global $mag_label = GUICtrlCreateLabel("placehold", (($iMagHeight * $iMagZoom)/2)+2, ($iMagHeight * $iMagZoom) - 13, _ (($iMagHeight * $iMagZoom)/2)-3, 12, $SS_RIGHT) ; put this after the GUICreate()s so that it will not error on startup with mouse already moving. (now trapped! but we will leave them here.) global $__hMouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam") global $__hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($__hMouseProc), _WinAPI_GetModuleHandle(0)) GUISetState(@SW_SHOW, $hCross) GUISetState(@SW_SHOW, $hZoom) $mag_open = true ; once at start, then from the mouse-callback-function.. _Magnify() while $mag_open Sleep(50) $mX = MouseGetPos(0) $mY = MouseGetPos(1) $pixel_color = Hex(PixelGetColor($mX, $mY), 6) GUICtrlSetData ($mag_label, $pixel_color) wend GUIDelete($hZoom) GUIDelete($hCross) ReleaseHooks() endfunc func _Magnify($_iX=-1, $_iY=-1) local Static $fInit = true if $fInit then $fInit = False $hDCDesk = (DLLCall($hUser32, "int", "GetDC", "hwnd", 0))[0] $hDCZoom = (DLLCall($hUser32, "int", "GetDC", "hwnd", $hZoom))[0] $hPen = (DLLCall($hGDI32, "int", "CreatePen", "int", 0, "int", 3, "int", 0x008b9094))[0] ; 0=PS_SOLID, dark-blue (0x00BBGGRR) DLLCall($hGDI32, "int", "SelectObject", "int", $hDCZoom, "hwnd", $hPen) $_iX = MouseGetPos(0) $_iY = MouseGetPos(1) endif local $iW = $iMagWidth * $iMagZoom, $iH = $iMagHeight * $iMagZoom if not @error then DLLCall($hGDI32, "int", "StretchBlt", "int", $hDCZoom, "int", _ 0, "int", 0, "int", $iW, "int", $iH, "int", $hDCDesk, "int", _ $_iX - $iMagWidth/2, "int", $_iY - $iMagHeight/2, "int", $iMagWidth ,"int", $iMagHeight, _ "long", $SRCCOPY) ; draw the crosshair (start x, start y, end x, end y) _GDI32_DrawLine($hDCZoom, ($iW/2)-2, $iH/8, ($iW/2)-2, 4*($iH/8)-6, $hGDI32) ; vertical top _GDI32_DrawLine($hDCZoom, ($iW/2)-2, 5*($iH/8)-10, ($iW/2)-2, 7*($iH/8), $hGDI32) ; vertical bottom _GDI32_DrawLine($hDCZoom, $iW/8, ($iH/2)-2, (3*($iW/8))+6, ($iH/2)-2, $hGDI32) ; horizontal left _GDI32_DrawLine($hDCZoom, 4*($iW/8)+3, ($iH/2)-2, 7*($iW/8), ($iH/2)-2, $hGDI32) ; horizontal right endif endfunc func _GDI32_DrawLine(ByRef $_hDC, $_iX0, $i_Y0, $_iX1, $i_Y1, $_hDll=-1) If $_hDll = -1 then $_hDll = "gdi32.dll" Local $tCurrent = DllStructCreate("struct; long X;long Y; endstruct") DllCall($_hDll, "int", "MoveToEx", "int", $_hDC, "int", $_iX0, "int", $i_Y0, "ptr", DllStructGetPtr($tCurrent)) DllCall($_hDll, "int", "LineTo", "int", $_hDC, "int", $_iX1, "int", $i_Y1) return $tCurrent endfunc func _MouseProc($_nCode, $_wParam, $_lParam) local $tMSLLHOOKSTRUCT = DllStructCreate("struct; long X;long Y; endstruct; " & _ "DWORD mouseData; DWORD flags; DWORD time; ULONG_PTR dwExtraInfo;endstruct", $_lParam) if $_nCode < 0 Then Return _WinAPI_CallNextHookEx($__hHook, $_nCode, $_wParam, $_lParam) local $iX = $tMSLLHOOKSTRUCT.X, $iY = $tMSLLHOOKSTRUCT.Y switch $_wParam case $WM_LBUTTONDOWN CloseMag() case $WM_MOUSEMOVE if not $mag_open then return WinMove($hCross, "", $iX -24, $iY -24) Local $iXz = ($iX +24 + $iMagWidth*$iMagZoom > @DesktopWidth) ? $iX -(24 + $iMagWidth*$iMagZoom) : $iX +24 Local $iYz = ($iY +24 + $iMagHeight*$iMagZoom > @DesktopHeight) ? $iY -(24 + $iMagHeight*$iMagZoom) : $iY +24 WinMove($hZoom, "", $iXz + $iMagWidth/2, $iYz) _Magnify($iX, $iY) endswitch return _WinAPI_CallNextHookEx($__hHook, $_nCode, $_wParam, $_lParam) endfunc func ReleaseHooks() DLLCall($hUser32, "int", "ReleaseDC", "int", $hDCZoom, "hwnd", $hPen) DLLCall($hUser32, "int", "ReleaseDC", "int", $hDCDesk, "hwnd", 0) DLLCall($hUser32, "int", "ReleaseDC", "int", $hDCZoom, "hwnd", 0) DllClose($hUser32) DllClose($hGDI32) _WinAPI_UnhookWindowsHookEx($__hHook) DllCallbackFree($__hMouseProc) endfunc func CloseMag() ; called by mouse left click $mag_open = false endfunc  
      Thanks for any and all insights!
      ;o) Cor
×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.