AcidUser Posted November 22, 2011 Share Posted November 22, 2011 Hello all! I'm trying to imitate "Tooltip" window using GuiCreate function. "Tooltip" has an option for title, but if I use "WS_CAPTION" for GuiCreate it automatically draws border around window. I want to make visible only title without any border. Is there any way to implement title for GuiCreate to look like a Tooltip title ? Thank you in advance! Here is the code: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <GuiMenu.au3> #include <WinAPI.au3> $WINDOW_TITLE = "Adobe Reader 10.1.1 installation:" $Form1 = GUICreate($WINDOW_TITLE, @DesktopWidth/5, @DesktopHeight/8, -1, -1, $WS_POPUP, $WS_EX_TOPMOST) $size = WinGetClientSize($Form1) ;$Button1 = GUICtrlCreateButton("Cancel", ($size[0]/4), $size[1]-($size[1]/4), $size[0]/2, $size[1]/8,BitOR($BS_CENTER,$BS_FLAT)) $Button1 = GUICtrlCreateButton("Cancel", ($size[0]/4), $size[1]-($size[1]/4), $size[0]/2, -1,BitOR($BS_CENTER,$BS_FLAT)) GUICtrlSetState(-1,$GUI_NOFOCUS) GUICtrlSetResizing($Button1,$GUI_DOCKALL) $Button2 = GUICtrlCreateButton("1", 1, 1, 1, 1,BitOR($BS_CENTER,$BS_FLAT)) GUICtrlSetState($Button2,@SW_HIDE) GUICtrlSetState($Button2,$GUI_FOCUS) GUICtrlSetBkColor($Button1,0xFFEC8B) GUICtrlSetStyle($Form1,$WS_EX_CLIENTEDGE) GUISetBkColor(0xFFEC8B) GUIRegisterMsg($WM_SYSCOMMAND, "On_WM_SYSCOMMAND") GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 Exit EndSwitch WEnd Func On_WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam) If BitAND($wParam, 0xFFF0) = $SC_MOVE Then Return False Return $GUI_RUNDEFMSG EndFunc Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted November 22, 2011 Moderators Share Posted November 22, 2011 AcidUser,If you look at my Toast UDF (link in my sig) you will see that I create a label to act as the title bar within the Toast GUI which has the $WS_POPUPWINDOW and $WS_EX_TOOLWINDOW styles to get rid of the border. Not quite what you wanted to know, but shows you are not alone in having problems in finding out how do it! M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
AcidUser Posted November 22, 2011 Author Share Posted November 22, 2011 Hi Melba! Thank you for the tip! I added the following code snippet to my project: $iTitle_Height = 20 Global $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", 8) ; $COLOR_WINDOWTEXT = 8 Global $iToast_Header_BkCol = $aRet[0] $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", 5) ; $COLOR_WINDOW = 5 Global $iToast_Header_Col = $aRet[0] GUICtrlCreateLabel("blablabla", 20, 0, @DesktopWidth/5, $iTitle_Height, 0x0200) ; $SS_CENTERIMAGE GUICtrlSetBkColor(-1,$iToast_Header_BkCol) GUICtrlSetColor(-1, $iToast_Header_Col) but the Title-bar is coloured black. I expected it will take default Title-bar setting (like default blue) Am I doing something wrong? Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted November 22, 2011 Moderators Share Posted November 22, 2011 AcidUser,Those DLLCalls get the default colours for the text and background of a standard window. On my system that usually means 0x000000 (black) for the text and 0xFEFEFE (nearly white) for the background. I reversed these colours for the default "title" label to make it stand out, but there is no reason not to use other colours - as you can in the UDF bu using the _ExtMsgBoxSet function.Just assign the colours you want to the $iToast_Header_BkCol and $iToast_Header_BkCol variables - then your "title" label will be in the colours you wish. All clear? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
AcidUser Posted November 22, 2011 Author Share Posted November 22, 2011 I wanted not to set colours that I like, but rather take default system colour for window's title.I don't understand why these DLL calls return Black for Windows title and White for text: Global $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", $COLOR_WINDOWTEXT) ; $COLOR_WINDOWTEXT = 8 Global $iToast_Header_BkCol = $aRet[0] $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", $COLOR_WINDOW) ; $COLOR_WINDOW = 5 Global $iToast_Header_Col = $aRet[0]as I run on Windows 7 and Windows XP and on both machines the default colour is be "blue".Would not it suppose to take a default colour?... wait, I found that changing "$COLOR_WINDOWTEXT" to "$COLOR_ACTIVECAPTION" is almost what I wantedTook from here: http://code.google.com/p/autoit-cn/source/browse/trunk/Include/WindowsConstants.au3?r=669The problem is that it sets incorrect colour, instead of blue it sets dark red.Maybe it's required to mess with colour schemes or something like this? Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted November 22, 2011 Moderators Share Posted November 22, 2011 AcidUser,The system colour constants are also found in the Help file for _WinAPI_GetSysColor. Maybe it's required to mess with colour schemes or something like this?No idea - you should get what the user has selected in the Windows appearance dialog. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
AcidUser Posted November 22, 2011 Author Share Posted November 22, 2011 (edited) You could run this script and you'll see that It does show incorrect colour, even that I specified "$COLOR_ACTIVECAPTION" expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <GuiMenu.au3> #include <WinAPI.au3> #include <date.au3> Opt("GUIOnEventMode", 1)$WINDOW_TITLE = "Adobe Reader 10.1.1 installation:" Global $afksleep, $lasth, $lastm, $lasts Global $begin = 1000 * 60 * 60 * 2 ; 2 Hours $afksleep = $begin Global $start = TimerInit() $Form1 = GUICreate("", @DesktopWidth/5, @DesktopHeight/8, -1, -1, $WS_POPUP) ;, $WS_EX_CLIENTEDGE $size = WinGetClientSize($Form1)$iTitle_Height = 20 Global $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", $COLOR_ACTIVECAPTION) ; $COLOR_WINDOWTEXT = 8 Global $iToast_Header_BkCol = $aRet[0] $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", $COLOR_WINDOW) ; $COLOR_WINDOW = 5 Global $iToast_Header_Col = $aRet[0]GUICtrlCreateLabel($WINDOW_TITLE, 0, 0, @DesktopWidth/5, $iTitle_Height, 0x0200) ; $SS_CENTERIMAGE GUICtrlSetBkColor(-1,$iToast_Header_BkCol) GUICtrlSetColor(-1, $iToast_Header_Col) Global $CD_TIMER_LABLE = GUICtrlCreateLabel("", 0, 20, $size[0], -1, 0x0200) ; $SS_CENTERIMAGE ;GUICtrlSetBkColor($CD_TIMER_LABLE,0xCD3700) $Button1 = GUICtrlCreateButton("Cancel", ($size[0]/4), $size[1]-($size[1]/4), $size[0]/2, -1,BitOR($BS_CENTER,$BS_FLAT,$GUI_ONTOP)) $Button2 = GUICtrlCreateButton("", 1, 1,1, 1,BitOR($BS_FLAT,$GUI_FOCUS)) GUICtrlSetState($Button1,$GUI_NOFOCUS) GUICtrlSetState($Button2,$GUI_FOCUS) GUICtrlSetState($Button2,@SW_HIDE) GUICtrlSetBkColor($Button1,0xFFEC8B) GUISetBkColor(0xFFEC8B) GUICtrlSetResizing($Button1,$GUI_DOCKALL) GUICtrlSetResizing($Button2,$GUI_DOCKALL) GUICtrlSetResizing($CD_TIMER_LABLE,$GUI_DOCKALL) GUIRegisterMsg($WM_SYSCOMMAND, "On_WM_SYSCOMMAND") GUISetState(@SW_SHOW) GUICtrlSetOnEvent($Button1, "F_Button1") While ($afksleep > 0) $afksleep = $begin - TimerDiff($start) GoToBathroom() Sleep(1000) WEnd;If Not (ProcessExists("iexplore.exe") OR ProcessExists("Firefox.exe")) Then ; Exit(0) ;Else ; Exit(1) ;EndIf Func F_Button1() Exit EndFunc Func On_WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam) If BitAND($wParam, 0xFFF0) = $SC_MOVE Then Return False Return $GUI_RUNDEFMSG EndFunc Func GoToBathroom() Local $iHours, $iMins, $iSecs, $CD_TIMER _TicksToTime($afksleep, $iHours, $iMins, $iSecs) If $lasth <> $iHours Or $lastm <> $iMins Or $lasts <> $iSecs Then $CD_TIMER = "Estimated wait time: " & $iHours & ":" & StringFormat("%02d",$iMins) & ":" & StringFormat("%02d",$iSecs) GUICtrlSetData($CD_TIMER_LABLE,$CD_TIMER) ;ToolTip("Please close all open Internet Browsers (IE, FireFox) and Adobe Reader" & @CR & "Estimated wait time: " & $iHours & ":" & StringFormat("%02d",$iMins) & ":" & StringFormat("%02d",$iSecs), @DesktopWidth/2, @DesktopHeight/2, "Adobe Reader X Installation:", 2, 6) $lasth = $iHours $lastm = $iMins $lasts = $iSecs EndIfEndFunc ;==>GoToBathroom Any ideas, why this might happen? Edited November 22, 2011 by AcidUser Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted November 22, 2011 Moderators Share Posted November 22, 2011 (edited) AcidUser, Any ideas, why this might happen?Yes. The DllCall returns the BGR value of the colour - we need to convert it to RGB like this: Global $aRet = DllCall("User32.dll", "int", "GetSysColor", "int", $COLOR_HIGHLIGHT) $iColor = Hex($aRet[0], 6) Global $iToast_Header_BkCol = '0x' & StringMid($iColor, 5, 2) & StringMid($iColor, 3, 2) & StringMid($iColor, 1, 2) And something similar for the other call. Now you will get the proper colour. Thanks for pointing it out - I may have to amend the UDF now! M23 Edit: The plot thickens - it seems the DLLCall should return the RGB colour. I will explore further tomorrow. Edited November 22, 2011 by Melba23 AcidUser 1 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area 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