Flisker Posted December 4, 2013 Share Posted December 4, 2013 Hello, I would like to ask if anybody knows simple solution for adding background to _GUICtrlEdit_Create(). All I want now is add background picture to this GUI while text would be visible over the picture. Thanks in advance guys. ps: Attached picture of finished script. expandcollapse popup#include <GuiEdit.au3> #include <File.au3> Global $GUI Global $MAIN Global $guiData = @CRLF&@CRLF Func GUIInit() $MAIN = GUICreate("Aktualizace",@DesktopWidth,@DesktopHeight,0,0) $GUI = _GUICtrlEdit_Create($MAIN,"",1,1,@DesktopWidth,@DesktopHeight,BitOR(0x0004,0x00200000)) ;~ GUICtrlCreatePic("C:\win7_bg.jpg",0,0) GUISetState(@SW_SHOW,$MAIN) EndFunc Func GUIMessage($message,$type) ; Show Message If $type == 1 Then $message = $message&@CRLF _GUICtrlEdit_AppendText($GUI,$message) EndIf If $type == 2 Then $message = $message&@CRLF&@CRLF _GUICtrlEdit_AppendText($GUI,$message) EndIf If $type == 3 Then $message = @CRLF&$message&@CRLF&@CRLF _GUICtrlEdit_AppendText($GUI,$message) EndIf Return $message EndFunc GUIInit() $guiData &= GUIMessage("» Mapovani disku","2") $guiData &= GUIMessage("Disk I:","1") DriveMapDel("I:") DriveMapAdd("I:","\\S-doa-25\data") $guiData &= GUIMessage("Disk P:","1") DriveMapDel("P:") DriveMapAdd("P:","\\S-doa-25\okprace") $guiData &= GUIMessage("Disk R:","1") DriveMapDel("R:") DriveMapAdd("R:","\\10.186.66.50\intranet\aplikace\dopisy") ......... and so on Link to comment Share on other sites More sharing options...
UEZ Posted December 4, 2013 Share Posted December 4, 2013 Have a look here: '?do=embed' frameborder='0' data-embedContent>> Br, UEZ Flisker 1 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!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Flisker Posted December 5, 2013 Author Share Posted December 5, 2013 Ok, thanks. Guess there is no "easy" one/two line solution for this right ? Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted December 5, 2013 Moderators Share Posted December 5, 2013 Flisker,Save the difficult code in a file - then using it becomes a 2-line matter: one to #include the file and one to call the function within it. M23 Flisker 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...
Flisker Posted December 6, 2013 Author Share Posted December 6, 2013 You're right M23. Thank you both guys. I was thinking I want to understand completely my whole script... but I just realised that I already use functions so why not make one for this too Started working with MPVs script () but got another issue, when I run few lines in GUI, font gets bold till I click somewhere else Could you help me with this one too please ? Modded MPVs script : expandcollapse popup#include <WindowsConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> ;required for: $GUI_EVENT_CLOSE #include <Constants.au3> #include <WinAPIEx.au3> ;url: http://www.autoitscript.com/forum/topic/98712-winapiex-udf/ #include <Color.au3> ;required for: _RGBtoBGR #include <Debug.au3> ;required for: _Assert #region Global Vars Global Const $WM_APP_REDRAWWINDOW = $WM_APP + 1 Global $_hBrushBack = 0, $_hBitmapBack = 0, $_pfnDefEditProc = 0 Global Const $_sBkBitmapFullPath = @ScriptDir & "\win7_bg.bmp" Local $hNew_WndProc = DllCallbackRegister("_MyEdit_Proc", "int", "hwnd;uint;wparam;lparam") Global $_pNew_WndProc = DllCallbackGetPtr($hNew_WndProc) #endregion Global Vars #region GUI Local Const $hGUI = GUICreate("Aktualizace Softwaru", 1024, 764, -1, -1, BitOR($DS_MODALFRAME, $WS_POPUP, $WS_CAPTION, $WS_SYSMENU)) Global Const $tbMyEdit = GUICtrlCreateEdit("Welcome", 0, 0, 1024, 764, BitOR($ES_MULTILINE, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL)) ;~ GUIRegisterMsg($WM_INITDIALOG, "WM_INITDIALOG") WM_INITDIALOG($hGUI) GUIRegisterMsg($WM_CTLCOLOREDIT, "WM_CTLCOLOREDIT") GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND") GUIRegisterMsg($WM_DESTROY, "WM_DESTROY") GUISetState(@SW_SHOW, $hGUI) #endregion GUI ;~ MsgBox("","» Aktualizace","» Probihaji aktualizace, prosim vyckejte",1) GUICtrlSetData($tbMyEdit,"» "&@ComputerName&@CRLF&@CRLF,1) GUICtrlSetData($tbMyEdit,"» Mapovani disku"&@CRLF&@CRLF,1) If Ping("10.186.66.25",1000) <> 0 Then GUICtrlSetData($tbMyEdit,"Disk I:"&@CRLF,1) DriveMapDel("I:") DriveMapAdd("I:","\\S-doa-25\data") GUICtrlSetData($tbMyEdit,"Disk P:"&@CRLF,1) DriveMapDel("P:") DriveMapAdd("P:","\\S-doa-25\okprace") GUICtrlSetData($tbMyEdit,"Disk S:"&@CRLF,1) DriveMapDel("S:") DriveMapAdd("S:","\\S-doa-25\ips") GUICtrlSetData($tbMyEdit,"Disk T:"&@CRLF,1) DriveMapDel("T:") DriveMapAdd("T:","\\S-doa-25\texty") GUICtrlSetData($tbMyEdit,"Disk H:"&@CRLF,1) DriveMapDel("H:") DriveMapAdd("H:","\\s-doa-25\user$\UP\"&@UserName&"\dokumenty") Else GUICtrlSetData($tbMyEdit,"» Disky I,P,S,T,H(10.186.66.25) Nejsou dostupne !"&@CRLF,1) EndIf GUICtrlSetData($tbMyEdit,"Disk I:"&@CRLF,1) GUICtrlSetData($tbMyEdit,"Disk I:"&@CRLF,1) GUICtrlSetData($tbMyEdit,"Disk I:"&@CRLF,1) GUICtrlSetData($tbMyEdit,"Disk I:"&@CRLF,1) GUICtrlSetData($tbMyEdit,"Disk I:"&@CRLF,1) GUICtrlSetData($tbMyEdit,"Disk I:"&@CRLF,1) GUICtrlSetData($tbMyEdit,"Disk I:"&@CRLF,1) GUICtrlSetData($tbMyEdit,"Disk I:"&@CRLF,1) #region Loop While GUIGetMsg() <> $GUI_EVENT_CLOSE Sleep(10) WEnd GUIDelete($hGUI) #endregion Loop #region WM Func WM_INITDIALOG($hWnd) ;bool $_hBitmapBack = _WinAPI_LoadImage(0, $_sBkBitmapFullPath, $IMAGE_BITMAP, 0, 0, $LR_LOADFROMFILE) _Assert("$_hBitmapBack <> 0") $_hBrushBack = _WinAPI_CreatePatternBrush($_hBitmapBack) _Assert("$_hBrushBack <> 0") ; Subclass edit control Local $hWndEdit = _WinAPI_GetDlgItem($hWnd, $tbMyEdit) ;~ _Assert("$hWndEdit <> 0") ;commented, reason: bug $_pfnDefEditProc = _WinAPI_SetWindowLong($hWndEdit, $GWL_WNDPROC, $_pNew_WndProc) Return False EndFunc ;==>WM_INITDIALOG Func WM_CTLCOLOREDIT($hWnd, $uMsg, $wParam, $lParam) ;HBRUSH Local $hBrush = 0 Switch $uMsg Case $WM_CTLCOLOREDIT _WinAPI_SetTextColor($wParam, _RGBtoBGR(0xffffff)) _WinAPI_SetBkMode($wParam, $TRANSPARENT) $hBrush = $_hBrushBack EndSwitch Return $hBrush EndFunc ;==>WM_CTLCOLOREDIT Func WM_ERASEBKGND($hWnd, $uMsg, $wParam, $lParam) ;bool Local $tRect = _WinAPI_GetClientRect($hWnd) Local $hOldBrush = _WinAPI_SelectObject($wParam, $_hBrushBack) _WinAPI_PatBlt($wParam, 0, 0, DllStructGetData($tRect, "Right") - DllStructGetData($tRect, "Left"), DllStructGetData($tRect, "Bottom") - DllStructGetData($tRect, "Top"), $PATCOPY) _WinAPI_SelectObject($wParam, $hOldBrush) Return True EndFunc ;==>WM_ERASEBKGND Func WM_DESTROY($hWnd, $uMsg, $wParam, $lParam) ;void _WinAPI_DeleteObject($_hBitmapBack) _WinAPI_DeleteObject($_hBrushBack) EndFunc ;==>WM_DESTROY #endregion WM Func _MyEdit_Proc($hWnd, $uMsg, $wParam, $lParam) ;LRESULT CALLBACK Switch $uMsg Case $WM_VSCROLL, $WM_HSCROLL, $WM_MOUSEWHEEL, $WM_KEYDOWN _WinAPI_PostMessage($hWnd, $WM_APP_REDRAWWINDOW, $hWnd, 0) Case $WM_APP_REDRAWWINDOW Return _MyEdit_OnRedrawWindow($wParam, $lParam) EndSwitch Return _WinAPI_CallWindowProc($_pfnDefEditProc, $hWnd, $uMsg, $wParam, $lParam) EndFunc ;==>_MyEdit_Proc Func _MyEdit_OnRedrawWindow($wParam, $lParam) ;HRESULT Local $uFlags = BitOR($RDW_INVALIDATE, $RDW_UPDATENOW, $RDW_ERASE) _WinAPI_RedrawWindow($wParam, 0, 0, $uFlags) Return 0 EndFunc ;==>_MyEdit_OnRedrawWindow Func _WinAPI_CreatePatternBrush($hbmp) ;By ProgAndy Local $brush = DllCall("gdi32.dll", "long", "CreatePatternBrush", "long", $hbmp) If Not @error Then Return $brush[0] Return 0 EndFunc ;==>_WinAPI_CreatePatternBrush Func _RGBtoBGR($iColor) ;by FireFox Return "0x" & Hex(_ColorGetRed($iColor), 2) & Hex(_ColorGetGreen($iColor), 2) & Hex(_ColorGetBlue($iColor), 2) EndFunc ;==>_RGBtoBGR 34-71 Lines and changed bg pic and font color. Got only few lines there to try it out. Link to comment Share on other sites More sharing options...
Flisker Posted December 10, 2013 Author Share Posted December 10, 2013 Still can't make this "bold" issue right anybody has idea what's the problem please ? Link to comment Share on other sites More sharing options...
FireFox Posted December 11, 2013 Share Posted December 11, 2013 (edited) Hi,Unfortunately I don't have this issue It should be fixed by the repaint triggered on some WM (VSCROLL, HSCROLL, MOUSEWHEEL, KEYDOWN).I suggest you to check if one of the above is not triggered or if there is a WM I forgot to add (make a ConsoleWrite of the $uMsg in the _MyEdit_Proc function).Have you tried the richedit solution in the thread you linked?Br, FireFox. Edited December 11, 2013 by FireFox Wombat 1 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