Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Color Constants v0.80 build 2023-11-08 [nur Windows]

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
UEZ



Anmeldungsdatum: 24.06.2016
Beiträge: 129
Wohnort: Opel Stadt

BeitragVerfasst am: 24.02.2020, 13:13    Titel: Color Constants v0.80 build 2023-11-08 [nur Windows] Antworten mit Zitat

Hier ein kleines Tool zum Anzeigen von Farbwerten zwecks z.B. GUI Farbgestaltung.



Nach dem Starten wir die Datei ColorConstants.txt erstellt, die dann in der GUI dargestellt wird.

Ein Doppelklick auf den Eintrag in der Spalte "Color Name" kopiert den Farbwert in den Zwischenspeicher.

Das Input Feld kann benutzt werden, um nach bestimmten Farben zu filtern.

Download Code + Exe: Color Constants v0.80 build 2023-11-08.zip (80 kb)

Code:

'Coded by UEZ build 2023-11-08

#Include "fbgfx.bi" 'needed for LZW
#Include "VBcompat.bi"
#Include "windows.bi"
#Include "win\commctrl.bi"
#include "win\shellapi.bi"

Declare Function WndProc(hWnd As HWND, wMsg As Uint, wParam As WPARAM, lParam As LPARAM) As LRESULT
Declare Function LV_InsertColumn(Byval hWndControl As HWND, Byval iPosition As Integer, Byref sString As String, Byval nAlignment As Integer = LVCFMT_LEFT, Byval nWidth As Integer = 100) As Integer
Declare Function LV_InsertItem(Byval hWndControl As HWND, Byval iRow As Integer, Byval iColumn As Integer, Byref sString As String, Byval lParam As Integer = 0, Byval iImage As Integer = 0) As Integer
Declare Function _WinAPI_CreateToolTip(hDlg As HWND, sToolTipText As String, bBalloon As Ubyte = 1, iWidth As Ushort = 500, toolID As Integer = 0) As HWND
Declare Function Base64Decode(sString As String, Byref iBase64Len as Uinteger) As Ubyte Ptr
Declare Function LZW_Decode Alias "fb_hDecode" (Byval in_buffer As Any Ptr, Byval in_size As Integer, Byval out_buffer As Any Ptr, Byref out_size As Integer) As Integer

#Define LV_WM_SETREDRAW  11

Const sTitle = "Color Constants v0.80 by UEZ"

Dim As String sFile = Curdir & "\ColorConstants.txt"
If Fileexists(sFile) = 0 Then
   Dim As Uinteger iLines, iCompression, iFileSize, iCompressedSize, l
   Dim as String aB64(1), sB64, sBaseType

   Restore __Label0:
   Read iLines
   Read iCompression
   Read iFileSize
   Read iCompressedSize
   Read sBaseType

   For i as uByte = 0 to iLines
      Read aB64(0)
      sB64 &= aB64(0)
   Next

   Dim As UByte Ptr aBinary = Base64Decode(sB64, l)
    If l <> iCompressedSize Then
      ? "Error in decoding base64!"
      Beep
   Else
      Dim As Integer hFile
      hFile = Freefile()
      Open sFile For Binary Access Write As #hFile
      If iCompression Then
         Dim As Ubyte Ptr aBinaryC = Allocate(iFileSize)
         LZW_Decode(aBinary, iCompressedSize, aBinaryC, iFileSize)
         Put #hFile, 0, aBinaryC[0], iFileSize
         Deallocate(aBinaryC)
      Else
         Put #hFile, 0, aBinary[0], iFileSize
      Endif
      Close #hFile
      aBinary = 0
   End If
End If

Dim Shared As HFONT hFont
Dim Shared As HWND hGUI, hButton_exit, hListView, hCheckbox, hCheckbox2, hButton_pick, hInput
Dim Shared As Boolean bChkBox = FALSE, bChkBox2 = FALSE
Dim Shared As HMENU hSysMenu
Dim As HICON hIcon
Const id_About = 5000

' Create  Window Class:
Dim As WNDCLASS WinCls

#Ifdef unicode
   Dim szClassName As Wstring * 64
   Dim szCaption   As Wstring * 64
#Else
   Dim szClassName As Zstring * 64
   Dim szCaption   As Zstring * 64
#Endif

szClassName = "FB_GUI"

With WinCls
    .style          = CS_HREDRAW Or CS_VREDRAW
    .lpfnWndProc    = Cast(WNDPROC, @WndProc)
    .hInstance      = GetModuleHandle(NULL)
    .hIcon          = LoadIcon(NULL, IDI_APPLICATION)
    .hCursor        = LoadCursor(NULL, IDC_ARROW)
    .hbrBackground  = GetSyscolorbrush(COLOR_3DFACE) 'GetStockObject(WHITE_BRUSH)
    .lpszMenuName   = NULL
    .lpszClassName  = Strptr(szClassName)
End With

If RegisterClass(@WinCls) = False Then
    MessageBox(NULL, "RegisterClass('WindowClass') FAIL!", "Error!", MB_OK Or MB_ICONERROR)
    End
End If

#Define CrLf Chr(13) & Chr(10)
Dim As Ushort iW = 455, iH = 700, lvh = iH - 95

hFont = CreateFont(16, 0, 0, 0, FW_MEDIUM, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial")

hGUI = CreateWindowEx(0, szClassName, sTitle, WS_VISIBLE Or WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, iW, iH, NULL, NULL, NULL, NULL)

hListView = CreateWindowEx(0, "SysListView32", "", WS_BORDER Or WS_CHILD Or WS_VISIBLE Or WS_CLIPSIBLINGS Or _
                                       LVS_REPORT Or LVS_SINGLESEL Or LVS_SHOWSELALWAYS, _
                                       10, 10, iW - 35, lvh - 20, hGUI, NULL, NULL, NULL)
SendMessage(hListView, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, WS_EX_CLIENTEDGE Or LVS_EX_GRIDLINES Or LVS_EX_FULLROWSELECT)
                                             
hButton_pick = CreateWindowEx(0, "Button", "Pick Color", WS_VISIBLE Or WS_CHILD, iW - 170, lvh + 20, 75, 24, hGUI, NULL, NULL, NULL)
_WinAPI_CreateToolTip(hButton_pick, "Not implemented yet!")
'_WinAPI_CreateToolTip(hButton_pick, "Pick a color from your desktop")
EnableWindow(hButton_pick, False)

hButton_exit = CreateWindowEx(0, "Button", "Exit", WS_VISIBLE Or WS_CHILD, iW - 85, lvh + 20, 60, 24, hGUI, NULL, NULL, NULL)

hCheckbox = CreateWindowEx(0, "Button", "Add &&h prefix for hex color value", BS_AUTOCHECKBOX Or WS_VISIBLE Or WS_CHILD, 10, lvh + 20, 240, 24, hGUI, Cast(HMENU, 2), NULL, NULL)
CheckDlgButton(hGUI, 2, BST_CHECKED)
_WinAPI_CreateToolTip(hCheckbox, "If checked than the prefix &h will be added to the color value" & CrLf &  "which will be copied to the clipboard")

hCheckbox2 = CreateWindowEx(0, "Button", "Use 32-bit hex length (ARGB)", BS_AUTOCHECKBOX Or WS_VISIBLE Or WS_CHILD, 10, lvh + 40, 240, 24, hGUI, Cast(HMENU, 3), NULL, NULL)
_WinAPI_CreateToolTip(hCheckbox2, "Adds Alpha channel to color value")

hInput = CreateWindowEx(0, "Edit", NULL, WS_VISIBLE Or WS_CHILD Or WS_BORDER, 10, lvh - 5, iW - 202, 20, hGUI, NULL, NULL, NULL)
_WinAPI_CreateToolTip(hInput, "Enter a text to filter by color name (min. 2 chars)")

SendMessage(hInput, WM_SETFONT, Cast(WPARAM, hFont), MAKELPARAM(True, 0))
SendMessage(hButton_pick, WM_SETFONT, Cast(WPARAM, hFont), MAKELPARAM(True, 0))
SendMessage(hButton_exit, WM_SETFONT, Cast(WPARAM, hFont), MAKELPARAM(True, 0))
SendMessage(hCheckbox, WM_SETFONT, Cast(WPARAM, hFont), MAKELPARAM(True, 0))
SendMessage(hCheckbox2, WM_SETFONT, Cast(WPARAM, hFont), MAKELPARAM(True, 0))

LV_InsertColumn(hListView, 0, "Color Name", LVCFMT_LEFT, 150)
LV_InsertColumn(hListView, 1, "RGB Hex Value", LVCFMT_LEFT, 100)
LV_InsertColumn(hListView, 2, "RGB Color Preview", LVCFMT_LEFT, 150)


hSysMenu = GetSystemMenu(hGUI, False)
AppendMenu(hSysMenu, MF_SEPARATOR, 0, 0)
AppendMenu(hSysMenu, MF_STRING, id_About, "&About")

Dim SystemDir As Zstring * 32767
GetSystemDirectory(@SystemDir, 32767)
ExtractIconEx(SystemDir & "\Shell32.dll", 161, NULL, @hIcon, 1)
SendMessageW(hGUI, WM_SETICON, 1, Cast(lParam, hIcon))

Dim As String sLine
Dim As Integer iFilenum, iRes, iLine = 0
Dim Shared As Long iTokens
Dim Shared As String aColorTable()
Redim aColorTable(10000, 1)

iFilenum = Freefile
iRes = Open (sFile, For Input, As #iFilenum)
While (Not Eof(iFilenum))
   Line Input #iFilenum, sLine
   If sLine <> "" Then
        If iLine > Ubound(aColorTable) Then Redim Preserve aColorTable(2 * iLine, 1)
        aColorTable(iLine, 0) = Left(sLine, Instr(sLine, ";") - 1)
        aColorTable(iLine, 1) = Right(sLine, Len(sLine) - Instr(sLine, ";"))
      LV_InsertItem(hListView, iLine, 0, aColorTable(iLine, 0))
      LV_InsertItem(hListView, iLine, 1, aColorTable(iLine, 1))
      iLine += 1
   End If
Wend
Close #iFilenum
iTokens = iLine
SetWindowText(hGUI, sTitle & " / " & iTokens & " colors displayed")

SendMessage(hListView, LV_WM_SETREDRAW, True, 0)
ShowWindow(hGUI, SW_SHOWNORMAL)
UpdateWindow(hGUI)

Dim As MSG uMsg

If IsDlgButtonChecked(hGUI, GetDlgCtrlID(hCheckbox)) Then bChkBox = True
If IsDlgButtonChecked(hGUI, GetDlgCtrlID(hCheckbox2)) Then bChkBox2 = True

'SendMessage(hListView, LVM_DELETEITEM, CInt(0), 0) 'delete one item from LV
'SendMessage(hListView, LVM_DELETEALLITEMS, 0, 0) 'delete all items from LV
'? iTokens, SendMessage(hListView, LVM_GETITEMCOUNT, 0, 0)

Dim Shared As Long iLVPos
iLVPos = -1

While GetMessage(@uMsg, 0, 0, 0)
   TranslateMessage(@uMsg)
   DispatchMessage(@uMsg)
   
   Select Case uMsg.hwnd
      Case hListView
         Select Case uMsg.message
            Case WM_KEYDOWN
               Select Case uMsg.wParam
                  Case VK_ESCAPE
                            DestroyWindow(hGUI)                  
               End Select
         End Select
   End Select
Wend
DeleteObject(hFont)

End

Function WndProc(hWnd As HWND, wMsg As Uint, wParam As WPARAM, lParam As LPARAM) As LRESULT
    Select Case hWnd
      Case hGUI 
         Select Case wMsg            
            Case WM_DESTROY
               PostQuitMessage(NULL)
               Return 0
                Case WM_SYSCOMMAND
                    Select Case Loword(wParam)
                        Case id_About
                            MessageBox(hGUI, sTitle, "About", MB_OK Or MB_ICONINFORMATION Or MB_TOPMOST)
                            Return 0
                    End Select
            Case WM_COMMAND
               Select Case lParam 
                  Case hButton_exit
                     DestroyWindow(hGUI)
                     Return 0
                  Case hCheckbox
                     If IsDlgButtonChecked(hWnd, 2) Then
                        bChkBox = 1
                     Else
                        bChkBox = 0
                     End If
                     Return 0
                  Case hCheckbox2
                     If IsDlgButtonChecked(hWnd, 2) Then
                        bChkBox2 = 1
                     Else
                        bChkBox2 = 0
                     End If
                     Return 0
                  Case hButton_pick
                        Case hInput
                            Dim As Long i, j = 0, iLen = GetWindowTextLength(hInput)
                            SendMessage(hListView, LV_WM_SETREDRAW, False, 0)
                            If iLen > 1 Then
                                Dim As ZString * 255 sInput
                                GetWindowText(hInput, sInput, iLen + 1)
                                SendMessage(hListView, LVM_DELETEALLITEMS, 0, 0)
                                For i = 0 To iTokens
                                    If Instr(Lcase(aColorTable(i, 0)), Lcase(sInput)) Then
                                        LV_InsertItem(hListView, j, 0, aColorTable(i, 0))
                                        LV_InsertItem(hListView, j, 1, aColorTable(i, 1))
                                        j += 1
                                    End If
                                Next
                            Else
                                If SendMessage(hListView, LVM_GETITEMCOUNT, 0, 0) < iTokens Then
                                    SendMessage(hListView, LVM_DELETEALLITEMS, 0, 0)
                                    For i = 0 To iTokens
                                        LV_InsertItem(hListView, i, 0, aColorTable(i, 0))
                                        LV_InsertItem(hListView, i, 1, aColorTable(i, 1))
                                    Next
                                Endif
                            Endif
                            SendMessage(hListView, LV_WM_SETREDRAW, True, 0)
               End Select
                Case WM_CTLCOLOREDIT
               If lParam = hInput Then
                        Dim As Long iBGColor = Iif(SendMessage(hListView, LVM_GETITEMCOUNT, 0, 0), &hFFFFFF, &h0000FF) 'BGR
                  Dim As HDC hdcStatic = Cast(HDC, wParam)
                  SetTextColor(hdcStatic, &h000000)
                  SetBkColor(hdcStatic, iBGColor)
                  Return Cast(INT_PTR, iBGColor)
               End If
                    Return 0
            Case WM_KEYDOWN
               Select Case wParam
                        Case VK_ESCAPE
                            DestroyWindow(hGUI)
                            Return 0
               End Select
            Case WM_NOTIFY
               Static As Integer aHit(2) = {-1, -1}
               Dim As NMHDR Ptr pNMHDR = Cast(NMHDR Ptr, lParam)
               Select Case pNMHDR->hwndFrom
                  Case hListView
                     Select Case pNMHDR->Code
                                Case LVN_KEYDOWN
                                    Dim As NMLVKEYDOWN Ptr pKeyDown = Cast(NMLVKEYDOWN Ptr, lParam)
                                    If pKeyDown->wVKey = VK_RETURN Then 'if enter is pressed then send NM_CLICK event to trigger clipboard copy action
                                        Dim As Long iSelectedItem = SendMessage(hWnd, LVM_GETNEXTITEM, -1, LVNI_SELECTED)
                                        If iSelectedItem <> -1 Then
                                            Dim As NMITEMACTIVATE tNMIA
                                            With tNMIA
                                                .hdr.hwndFrom = hListView
                                                .hdr.idFrom = GetDlgCtrlID(hListView)
                                                .hdr.code = NM_DBLCLK
                                                .iItem = iSelectedItem
                                                .iSubItem = 0
                                                .ptAction.x = 0
                                                .ptAction.y = 0
                                            End With
                                            SendMessage(hGUI, WM_NOTIFY, 0, Cast(LPARAM, @tNMIA))
                                        End If
                                    End If
                        Case NM_DBLCLK
                           Dim As ZString * 255 sHexColor, sName
                           Dim tLV_item As LV_ITEM
                           With tLV_item
                              .mask = LVIF_TEXT
                              .iItem = SendMessage(hListView, LVM_GETSELECTIONMARK, 0, 0)
                              .iSubItem = 1
                              .pszText = Strptr(sHexColor)
                              .cchTextMax = 256
                           End With
                           If tLV_item. iItem <> -1 Then                     
                              SendMessage(hListView, LVM_GETITEM, 0, Cint(@tLV_item))
                              If bChkBox2 Then sHexColor = "FF" & sHexColor
                              If bChkBox Then sHexColor = "&h" & sHexColor
                                                            
                              Dim As Byte hClipboard = OpenClipboard(hGUI)
                              If hClipboard = 0 Then
                                 MessageBox(hGUI, "Error opening the clipboard", "ERROR", MB_OK)
                              Else
                                 If EmptyClipboard() = 0 Then
                                    CloseClipboard()
                                    MessageBox(hGUI, "Error cleaning the clipboard", "ERROR", MB_OK)
                                 Else
                                    Dim As Any Ptr pMemClip, hMemClip = GlobalAlloc(GMEM_MOVEABLE Or GMEM_SHARE, Len(sHexColor) + 1)
                                    pMemClip = GlobalLock(hMemClip)
                                    CopyMemory(pMemClip, Strptr(sHexColor), Len(sHexColor))
                                    GlobalUnlock(pMemClip)
                                    SetClipboardData(CF_TEXT, hMemClip)
                                    CloseClipboard()
                                    
                                    tLV_item.iSubItem = 0
                                    tLV_item.pszText = Strptr(sName)
                                    SendMessage(hListView, LVM_GETITEM, 0, Cint(@tLV_item))   
                                    
                                    MessageBox(hGUI, "Hex color value " & sHexColor & " (" & sName & ") has been copied to clipboard.", "Information", MB_ICONINFORMATION Or MB_OK)
                                    GlobalFree(hMemClip)
                                 End If         
                              End If
                           End If
                           Return 1
                        Case NM_CUSTOMDRAW
                           Dim As NMLVCUSTOMDRAW Ptr pCustomDraw = Cast(NMLVCUSTOMDRAW Ptr, lParam)
                           Select Case pCustomDraw->NMCD.dwDrawStage
                              Case CDDS_PREPAINT
                                 Return CDRF_NOTIFYITEMDRAW
                              Case CDDS_ITEMPREPAINT
                                            Return CDRF_NOTIFYSUBITEMDRAW
                              Case CDDS_ITEMPREPAINT OR CDDS_SUBITEM 'thanks to Velted for the code
                                            Dim As Long bIsSelected = SendMessage(hListView, LVM_GETITEMSTATE, pCustomDraw->nmcd.dwItemSpec, LVIS_SELECTED)
                                            If bIsSelected Then pCustomDraw->nmcd.uItemState = pCustomDraw->nmcd.uItemState And Not(CDIS_SELECTED)                              
                                            Select Case pCustomDraw->iSubItem
                                    Case 0 To 1
                                                    pCustomDraw->ClrText = Iif(bIsSelected, &hFFFFFF, 0)
                                                    pCustomDraw->ClrTextBk = Iif(bIsSelected, &hCC6600, &hFFFFFF)
                                                Case 2
                                                   pCustomDraw->ClrText = &h000000
                                       Dim As ZString * 255 sText
                                       Dim tLV_item As LV_ITEM
                                       With tLV_item
                                          .mask = LVIF_TEXT
                                          .iItem = pCustomDraw->NMCD.dwItemSpec
                                          .iSubItem = 1
                                          .pszText = Strptr(sText)
                                          .cchTextMax = 256
                                       End With
                                       SendMessage(hListView, LVM_GETITEM, 0, Cint(@tLV_item))
                                       pCustomDraw->clrTextBk = BGR(Valint("&h" & Left(sText, 2)), Valint("&h" & Mid(sText, 3, 2)), Valint("&h" & Right(sText, 2)))                                       
                                 End Select
                              Return CDRF_NEWFONT 'CDRF_DODEFAULT
                           End Select
                     End Select
                     Return CDRF_DODEFAULT
                    End Select
         End Select
    End Select
    Return DefWindowProc(hWnd, wMsg, wParam, lParam)
End Function


'LV Function taken from https://www.freebasic.net/forum/viewtopic.php?f=6&t=17060
Function LV_InsertColumn(   Byval hWndControl As HWND, _
                     Byval iPosition   As Integer, _
                     Byref sString     As String, _
                     Byval nAlignment  As Integer = LVCFMT_LEFT, _
                     Byval nWidth      As Integer = 100 _
                     ) As Integer

    Dim tlvc As LV_COLUMN

    ' Do a check to ensure that this is actually a Window handle
    If IsWindow(hWndControl) Then 
       tlvc.mask     = LVCF_FMT Or LVCF_WIDTH Or LVCF_TEXT Or LVCF_SUBITEM
       tlvc.fmt      = nAlignment
       tlvc.cx       = nWidth
       tlvc.pszText  = Strptr(sString)
       tlvc.iSubItem = 0
       Function = SendMessage( hWndControl, LVM_INSERTCOLUMN, iPosition, Cint(@tlvc))
    End If
End Function

Function LV_InsertItem( Byval hWndControl As HWND, _
                  Byval iRow        As Integer, _         
                  Byval iColumn     As Integer, _
                  Byref sString     As String, _
                  Byval lParam     As Integer = 0, _
                  Byval iImage      As Integer = 0 _
                  ) As Integer

    Dim tLV_item As LV_ITEM

    ' Do a check to ensure that this is actually a Window handle
    If IsWindow(hWndControl) Then 
        tLV_item.iItem     = iRow
        tLV_item.iSubItem  = iColumn
        tLV_item.pszText   = Strptr(sString)
        tLV_item.iImage    = iImage
        tLV_item.lParam    = lParam
       
        If iColumn = 0 Then
           tLV_item.mask      = LVIF_TEXT Or LVIF_PARAM Or LVIF_IMAGE
           Function = SendMessage( hWndControl, LVM_INSERTITEM, 0, Cint(@tLV_item))
        Else
           tLV_item.mask      = LVIF_TEXT Or LVIF_IMAGE
           Function = SendMessage( hWndControl, LVM_SETITEM, 0, Cint(@tLV_item))
        End If
    End If
End Function

'https://msdn.microsoft.com/en-us/library/windows/desktop/hh298368(v=vs.85).aspx
Function _WinAPI_CreateToolTip(hDlg As HWND, sToolTipText As String, bBalloon As Ubyte = 1, iWidth As Ushort = 500, toolID As Integer = 0) As HWND
   If hDlg = 0 Or Len(sToolTipText) = 0 Then Return 0
   If Len(sToolTipText) > 79 Then Left(sToolTipText, 79)
   Dim hToolTip As HWND
   
   bBalloon = Iif(bBalloon > 1, 1, bBalloon)
   Dim As Long iStyle = bBalloon * TTS_BALLOON
   hToolTip = CreateWindowEx(Null, TOOLTIPS_CLASS, NULL, _
                       TTS_NOPREFIX Or TTS_ALWAYSTIP Or iStyle, _
                       CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, _
                       hDlg, Null, Null, Null)

   If hToolTip = 0 Then Return 0
   SetWindowPos(hToolTip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE)
   SendMessage(hToolTip, TTM_SETTIPBKCOLOR, &hFFFFFF, 0)
   SendMessage(hToolTip, TTM_SETTIPTEXTCOLOR, &h000000, 0)
   SendMessage(hToolTip, TTM_SETMAXTIPWIDTH, 0, iWidth) 'multi line tooltip text
   
   Dim As HWND hwndTool = GetDlgItem(hDlg, toolID)
   Dim tToolInfo As TOOLINFO
   With tToolInfo
      .cbSize = Sizeof(tToolInfo)
      .uFlags = TTF_SUBCLASS
      .hwnd = hDlg
      .hinst = Null
      .lpszText = Strptr(sToolTipText)
      .uId = Cptr(UINT_PTR, hwndTool)
   End With
   GetClientRect(hDlg, @tToolInfo.rect)

   SendMessage(hToolTip, TTM_ADDTOOL, 0, Cast(lPARAM, @tToolInfo))

   Return hToolTip
End Function

'Original code by D.J.Peters
Function Base64Decode(sString As String, Byref iBase64Len As Uinteger) As Ubyte Ptr
   #Define P0(p) InStr(B64, Chr(sString[n + p])) - 1
   Dim As String * 64 B64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
   Dim As String sDecoded
   Dim As Integer nChars = Len(sString) - 1
   If nChars < 0 Then Return 0
   For n As Integer = 0 To nChars Step 4
      Var b = P0(1), c = P0(2), d = P0(3)
      If b >-1 Then
         Var a = P0(0)
         sDecoded += Chr((a Shl 2 + b Shr 4))
      End If
      If c > -1 Then sDecoded += Chr((b Shl 4 + c Shr 2))
      If d > -1 Then sDecoded += Chr((c Shl 6 + d      ))
   Next
   iBase64Len = Len(sDecoded)
   
    'workaround For multiple embedded file other crash will occure
    Static As Ubyte aReturn(0 To iBase64Len - 1)
    Redim aReturn(0 To iBase64Len - 1) As Ubyte
   
   For i As Uinteger = 0 to Len(sDecoded) - 1 'convert result string to ascii code values
      aReturn(i) = Asc(sDecoded, i + 1)
   Next
   Return @aReturn(0) 'return pointer to the array
End Function

'Code below was generated by: FB File2Bas Code Generator v1.01 build 2020-02-27 beta

'ColorConstants.txt
__Label0:
Data 12,8,6733,4346,"Base64"
Data "QsAGYTAGa7ADMGAQB9EACuAEaXAGaEAHBTEEMJADMBAECXEEdeAGbVAGdBAGbLADMjAEM1ADM5ADCdEEaUAGbsAQDvERQhADLnEDCTEEaBAGcjAGb9AROzADNCADOAASCUEENbEGIDAFAUEHZQACRyAHZZAHHzESODADQ5AQT5AGHjEDQjADMZAVCQEQAjEUQxAGD0EDWgEVJaEASSAHKJEGddAGOkEEUTEDFaEAXTEQIFAEZeARNGADM1AEM2AEXBEQdTEEb3AHO0ADQ6AXemERchAGeQACV/AGbGAGO1ADMEADQUADQpAQVhAGbQAHabAUScEYTVEDNlAZNRADi9EYIEAEkQEHaJAGbkAZQ1ADOFAbMlETYvAGbiAajbEDNiADNUAEwpEQQTAHaNAbTWEDyzEDwCETbPAGdUAGjqEUvmEDRGADOWADOJAQU9AGb7AGTJEcO3ADMmADRXAdqtEUN9AcRnAeqqESR7EDUHEDRXADUjEXYUEH"
Data "bFAGx5EGcDAeOEADAuIT6gECQwAd0rEDQmADDCIENGAgR/AGbzAHZbADRBADRAADQ1AECQEFRhEbbLEDRVADRUADRSADJrERHcEGaTAGRFEVdlAGcrAgQzAENmAjgFEHSFEdTZEDOBAERjAEMaEATLASdEAURsEjo/EbRHADQoADRNAdSjIepsEeUJEQSrARVRID11EfJpEGc4AkALEjv6EXTtIhCtAEucEfIEAmFlIaXpImRREWSPEm5DED9xEEqaEAU3AUeOEmbFAmA7IXQQADOoIUSuAbMiAENUADX6IAQSEHQ0EnRxEoZcIoM2AbNgAmKXEkl2IhMYAajQIhChEGduAYd3IQMIADhzIXgoIUV0AT/KETPIEmCcEEYfAZcwAqOyAqWQEpRFAGKtEGrCEUvSIqLxElCVEENUEHyKEqB2EoMvEGYtARYwIrBQEDMrAhKfIqOyIGMyIHqZItBjEWQ+AtU6ArrwEadpItweEoQ4IodpEH/eEr"
Data "pZED8qIAUvAGedARvcIoNgADRJAmbwICT2ATsEEGvmIENFADQjIvTPAGdFAHc/Ab2gEDRYAfRtIQSFIp7lIm7GEDQfIXCnAFsUEGhMErdyIS9aEvRxAYafAvBpMEY2AhzYEDQjAEfDIFVTEUdzIgQKIvNIMqOiERG0IkBrMEb5AGv1EDOaAxRDIYgtIGYiAzvYIDNxAkQxMGYkAuZZIDNSAE+UIkHOMQRPEnbNAr5YEDQpImT2AzYcAbdxIwJYIfBiMFaSAGuiEbMwAD52EEJWMwRLAUc2AxonIDBIMfrUEGZzAjyFIbORA41CIHbmAG0HEHj3MnNkADYVMEUtIna/A1FrIcPzI5c1EHdHAUcnA5o6MTQqMxCVEzZRAucnAGlDEydiMT4yImM5MtNTAEWHE6wlIGADIFotMrVzE2wzMsaVAsd3IDOSAEQRA7RfIpx+M6PjEEQSIXQeEY2IM1IEEyWVIGcrMy2WIoQ2AE1WMwQeAGjuMRQnAf"
Data "RVA9UBAGYgIod/Ig6lM9U1A+vYIuRBA4JQMFhEEGmpMtN0IwpzMYjKE2dxIkRMAhG/MpEEQEAnQ6/GI1vFEEZ3AGvSIEBINBHtIRIIMURsIGTcE/E4QrnzIE/iIbRQADA1QyV1AnNFIEQtAwRiAXQdAiNnMnRjBDbVMyQaAHdbAUOyBENNRCHZMkdbIDNsJE1uNEQRAHddAZNREbFpIDfrE+3KEARcAfY0AHafEid5IDQVIEp2NFWNQGWuQGFnIDA0QEpfJCcgMCbyAHINBGYaAtU0QFcrAbayNAAlQwsAICWgAaNyEbNTBHayQ4iJQrZzAhsoED9CME1TMEeNEf8lEZOcQ+iEQEMvMdbrAwJ4Ii1UMFaWAGZiA32ZMhUeIqd8QbTwAHYXBFXAQS95E0iIQEFMIR5PEkQkIkTqBHzzIjvGE2dHA+IYMDQ6IvTVAGZLAWxUIFSHRFTFMhhvFMNgI61yQH2RQmFkIDUXEdmqEAWsIGKWQGYYIG"
Data "hoEjvDQvZ7AUw0IeOhM8NWASAhEGdwAqolEG9lROOqQvy0QU/6MUAdU3RRAEOSA5QHEs4CRO23QV+ZIv3fE/4LQfS6JQhqEpRNAqKkJNbMFHV5RFaRFHtZI1OMAnCdU8x5E8MJA4kNIj7gQCElUH2gQn9nErcxFQGwVQAjUkWZMmVFA+HmEQrRJSfYJQ9SQbJ4IDOXAD+qQAYPEddXA5YeA4QSUbN4ADOLAc6KQuW+VSljQgYhA9CYEEYaAHgFJWvxED93EbCmAFw/IGxfJWbBMRrmIEycRVv2ED92EeEDUpIGAEetRJfxUcYxFXIlVNBxUGf+U3geUojkVSh1U4SPJWO1EeIoFR/RRQZPBX5XQfjaUAULBFkpU1iFEqSoARZ9Amm/Uo6IIfU0ATbSBIdSFbpUUk0jRSxTIFcIBSHyRbrWJamJVYb3UiORAcYFRWB6MSu/EbQbAnMsAzwhUbxOVUhkFd20JBGjFaMRAEwPIcbyAje7RZDAUD"
Data "NUBVzzUFbhAG4fEbwYMV+OFDaTAsf4UjiGFazxUEcAAHtHIY/EUkWYAXmPNXNSADGmJaS3Bg1LFdA8Ze3qIFd2U1HGVP8eJIfGIEgqRdHeVQN3JJi6FQIAAF5WMxURUSwAMUkREQeyQEVaE2b2UbQsAgVCUplNJUHZUzWMFSsnMGWARff5UvQiBTfBIEdvAGYxAGKfNXQgASMjAgHhImHDEGsPEGRCZB3GIW6hIQovVWezIEXURVSMAWbZBdViMHYLZdj8RSxUQ7dRAQCQY1b9YddPAGAfYpEpJg9aEdpeJDZxAGGCYbnFMEP8Ip6dRkhEYZa8QgafJWBhE4BsEsGuFAbNZRD2MEMIEr/cQbNDZHN2BaM+EsS1ExFgIkm2ZahKNVg/RWI7NpzAUmboAk9ARiRPQjJJZfVIAGbCEGC1Ii1CUXBqUoBxRFfkEEUJIQRhVZbyVFjQI6z2Vg60QYCxIDqkYkReE8jKYzh1ZZCiAhbHBAbiBIC/M5"
Data "RBAEN1AqayUHMiImSREZ5kYwMjBV3YERIDBtmKNEX3QfCZFv1UZDlFZVesQb/1YYA6QprmI/CaMRtLZvgYMuu1M+bUFDOVIkZVBKBwIbrSRdA/RMidZAbjAHPvNwUXI3ZcAQFmIEDyMcdwMdpqRyOnQdZuE+dJAGuSQraSAfPJRDTiITt3VLZ5BSRlAf8wMYcnNl0+RDpbQwgZNDQwA6nKES6+RHRsAXNRAE6EQFeCQEgnQHMcQhYpNoJyYQ7+R0YlMqTVAxHLFm+5ZscyUFdbA3j0MEdTAQjmFwbmdcXJEWThRuTXdBMNBf8ZZfYuB1MRQEO2Naa8JkgqQSICA3ojUTAbVNRsAoDJJo6tJKjqdENpYDpiUEAUUjm+YSoyY3HJEgcKByPAQcghNQ+HZg1XZoWQd6h0cUdSBoOCQD6WYDgoNEKQQZb7AwBAMlWQMUAQUgZHdl+xY8mGER2aU5hxdF0oMe6XJlE/JAFQN71FYYRQAk5NUnkZcq"
Data "0kc/aUQDoGMELAICTFA+ZuAm0jcEOVMaroIwckNW8XYhlyF42RZ5UcQoPTFLE7IG+PV+hCEbQzJepscYGuERIlYEtXc/FtMoQcA53rIENDGAOxAE6KYdaWJVgGJ4BhhFMZBGDcJ3u9FWUeQkVuctq+Q4e1R/72Mh8cdSYyETsQFfpRRFkQN6csYfHoMGB6aBRiA9AkNYQ/F3w1JuQ+hVo5ZnqkcjUMIeMzADCRF8C6MdvUeFUxFfBfh18/E3qNFbS8ZkI2dJ9FYWxSEHbTB+IugTT2KE4WdKYrIbcgRWw1EyTbBkNGEYXUQEg6UAW1cHqsdNcOEtg9FKAfUbDdMXSWN7oVcT8yESIYFOUjBNrAEaDzFHCmZa/vMZfjRHevETChCDW+VlOogY6oYaCRF3YnJswGGD+3KJh4UHx1Ybo4YGSxYZUBR/WNeJ07QbfmQjyyFw9nNL/nIwjCGDI1IaokYka8V9JVaKFoIeODKKUMAWcDCAtaSMjqNE"
Data "WWNdUrMbYiIHdmdzgzQYcZSM9qdyWVNOPIMRaVEh67iM6KGKfLIm75Nl07hvrUIDrpJj9OiNRvBV+0c5ORE4m+gqQnA/4TEm6sePBMlSc2VQp9hxDhVWy8aOKEWNXkWBfBKQFhlDMZAzJkhFZ9NAOWEf6iZqXFE+vGGJTTdVw2EWnMEftJZaMcmMjrKKfZKLA5FdAkmN7FVfrDhN+7Yq3dF4P7hvUiZwcec1IKCT7iED4ZgQfSUHjJEWUnmURDcw4nWV7WIX75OTXQkcdlYkpxJZOmkiVWlaEiMjXGluY8Fp4MYYqmcG5ahzFxISLFUykycmbpA6cnlslzGKk5eVjqGT6JIY+BgGuShobqBCloEQVQUb65QGJlY8UDiCLzFqylg747IDknMQJROTj7FFozkRguctQoBEQWZKTfFMBgGWltlJgvkQYeMwnvUqEyJaOlkfItGJ+OUG8DUfmBEDnWh/aQGKfYGWRtAuhuciBNEq67V4NVFJ8xED"
Data "6xWLH0JSqCVHGuIofFJXbCAjSLImgiRdwekooOOdxVKe50ke4qlgrEghjgGdbrB8oUgi3oKNNkMeKxcEc1V362RiSBRgcrRywQE6/DIHbfiFPjYgfHKB8ZWZDjqDT8MqaYJabvAz1YYYLBVVLQQHYjKdJhYbBBGi0VOF+0Ih1Agk6CYXGApv4jYiNgI8ANkfM+Ix/fc5YxYkVPZBHUoQRnBB9WFHE4NnvAEWsalEUDdAVOahbiJ3YhBbIhI4hQQ6JyEmivminWdjYyOlRUpdm5YmBkWkSlSm03OVAYFm+oiiHqpEafQkCpeiUvml9rEnRjamxhImTWEfDjVeuEFNVPciaeqc1OWBNQFf58gbaUp0HsknZAJTbFkah7ZuExOnRUqMWWeFN8SAgwSpN9KLm5EGkbElU7kXtdE9yLepSqRgX0UkRHogg8hk8mUiJZID7nmn7FdKizYiPLFaCeEEZSCqKQqrIkFd++Q4tFZ1QjRDJTNK3yEHrzEx"
Data "QchkILAmzRpMfZEVu8p3n1KsxyqnDUOFp2M/bWIFp/qDhIkhpmF8gShn//Gq6IJ1/aYm0/RY64qqSLKYQVCVJskvQYYUabozPZEdXIFEtFavMRCwSXM/aGAGclavwdETLRqQYFE5YXGqj4qsB3uxHkI1C9JFUFIy/Dpn2FittFIftQEpKpugIIAWYUIZoiY/HEo1B7qycEIfTyM7psQQb2AYRsYq/omgbaKHIrc68PQSL3u0SLFWKXgimgIpHXQGAXZ6cPWPPVkdhFgiWLdUMNsmitIWI9MTwXIsCHNlKDGfTcuhT2tYmDMjGqhuiddb+kpSaqswC2IZ8uchcBsEGvEseeCK1ihBRBKQKLsR82ErHGKq/Tofb/FMZiG2SDFWdlIx76Q1LVc25oUXjlG5Aaop9fO089EXJVJEenAUV6azCTofJXs6vvVYoSsggeVzijYHb1qwpQuwV0G6O2ssHFeofDsWp0MFecCcj1q6iIF1mpRb2he6n1ce"
Data "vxuzJ/Edc+BHUDNMJYMEeHGqZZRnu7uz+dd6f5kWbTAH0oUio4sflcsajEFJB8i+ZVMVAhFFQAISYESpyIGoIwM1+LEmdSAjIwIDRnY6J4M/zNm6tHIj1DM00GE4d/WqRCg/xgsbYkIrfzg2b+EhM5IGd5CitHJoK9RpMgJze9ShZIhlIxJC81bCw3JAe2SlZdIXJsJDHVwTHmGk9NMwn2VbQjhAJZImJ8EGQ5FzO7dG6lNDsLFzNFQy/w8="


Hier der Inhalt der Datei ColorConstants.txt, die beim ersten Start erzeugt wird:

    Black;000000
    Night;0C090A
    Gunmetal;2C3539
    Midnight;2B1B17
    Charcoal;34282C
    Dark Slate Grey;25383C
    Oil;3B3131
    Black Cat;413839
    Iridium;3D3C3A
    Black Eel;463E3F
    Black Cow;4C4646
    Gray Wolf;504A4B
    Vampire Gray;565051
    Gray Dolphin;5C5858
    Carbon Gray;625D5D
    Ash Gray;666362
    Cloudy Gray;6D6968
    Smokey Gray;726E6D
    Gray;736F6E
    Granite;837E7C
    Battleship Gray;848482
    Gray Cloud;B6B6B4
    Gray Goose;D1D0CE
    Platinum;E5E4E2
    Metallic Silver;BCC6CC
    Blue Gray;98AFC7
    Light Slate Gray;6D7B8D
    Slate Gray;657383
    Jet Gray;616D7E
    Mist Blue;646D7E
    Marble Blue;566D7E
    Slate Blue;737CA1
    Steel Blue;4863A0
    Blue Jay;2B547E
    Dark Slate Blue;2B3856
    Midnight Blue;151B54
    Navy Blue;000080
    Blue Whale;342D7E
    Lapis Blue;15317E
    Denim Dark Blue;151B8D
    Earth Blue;0000A0
    Cobalt Blue;0020C2
    Blueberry Blue;0041C2
    Sapphire Blue;2554C7
    Blue Eyes;1569C7
    Royal Blue;2B60DE
    Blue Orchid;1F45FC
    Blue Lotus;6960EC
    Light Slate Blue;736AFF
    Windows Blue;357EC7
    Glacial Blue Ice;368BC1
    Silk Blue;488AC7
    Blue Ivy;3090C7
    Blue Koi;659EC7
    Columbia Blue;87AFC7
    Baby Blue;95B9C7
    Light Steel Blue;728FCE
    Ocean Blue;2B65EC
    Blue Ribbon;306EFF
    Blue Dress;157DEC
    Dodger Blue;1589FF
    Cornflower Blue;6495ED
    Sky Blue;6698FF
    Butterfly Blue;38ACEC
    Iceberg;56A5EC
    Crystal Blue;5CB3FF
    Deep Sky Blue;3BB9FF
    Denim Blue;79BAEC
    Light Sky Blue;82CAFA
    Day Sky Blue;82CAFF
    Jeans Blue;A0CFEC
    Blue Angel;B7CEEC
    Pastel Blue;B4CFEC
    Sea Blue;C2DFFF
    Powder Blue;C6DEFF
    Coral Blue;AFDCEC
    Light Blue;ADDFFF
    Robin Egg Blue;BDEDFF
    Pale Blue Lily;CFECEC
    Light Cyan;E0FFFF
    Water;EBF4FA
    AliceBlue;F0F8FF
    Azure;F0FFFF
    Light Slate;CCFFFF
    Light Aquamarine;93FFE8
    Electric Blue;9AFEFF
    Aquamarine;7FFFD4
    Cyan or Aqua;00FFFF
    Tron Blue;7DFDFE
    Blue Zircon;57FEFF
    Blue Lagoon;8EEBEC
    Celeste;50EBEC
    Blue Diamond;4EE2EC
    Tiffany Blue;81D8D0
    Cyan Opaque;92C7C7
    Blue Hosta;77BFC7
    Northern Lights Blue;78C7C7
    Medium Turquoise;48CCCD
    Turquoise;43C6DB
    Jellyfish;46C7C7
    Blue green;7BCCB5
    Macaw Blue Green;43BFC7
    Light Sea Green;3EA99F
    Dark Turquoise;3B9C9C
    Sea Turtle Green;438D80
    Medium Aquamarine;348781
    Greenish Blue;307D7E
    Grayish Turquoise;5E7D7E
    Beetle Green;4C787E
    Teal;008080
    Sea Green;4E8975
    Camouflage Green;78866B
    Sage Green;848b79
    Hazel Green;617C58
    Venom Green;728C00
    Fern Green;667C26
    Dark Forest Green;254117
    Medium Sea Green;306754
    Medium Forest Green;347235
    Seaweed Green;437C17
    Pine Green;387C44
    Jungle Green;347C2C
    Shamrock Green;347C17
    Medium Spring Green;348017
    Forest Green;4E9258
    Green Onion;6AA121
    Spring Green;4AA02C
    Lime Green;41A317
    Clover Green;3EA055
    Green Snake;6CBB3C
    Alien Green;6CC417
    Green Apple;4CC417
    Yellow Green;52D017
    Kelly Green;4CC552
    Zombie Green;54C571
    Frog Green;99C68E
    Green Peas;89C35C
    Dollar Bill Green;85BB65
    Dark Sea Green;8BB381
    Iguana Green;9CB071
    Avocado Green;B2C248
    Pistachio Green;9DC209
    Salad Green;A1C935
    Hummingbird Green;7FE817
    Nebula Green;59E817
    Stoplight Go Green;57E964
    Algae Green;64E986
    Jade Green;5EFB6E
    Green;00FF00
    Emerald Green;5FFB17
    Lawn Green;87F717
    Chartreuse;8AFB17
    Dragon Green;6AFB92
    Mint green;98FF98
    Green Thumb;B5EAAA
    Light Jade;C3FDB8
    Tea Green;CCFB5D
    Green Yellow;B1FB17
    Slime Green;BCE954
    Goldenrod;EDDA74
    Harvest Gold;EDE275
    Sun Yellow;FFE87C
    Yellow;FFFF00
    Corn Yellow;FFF380
    Parchment;FFFFC2
    Cream;FFFFCC
    Lemon Chiffon;FFF8C6
    Cornsilk;FFF8DC
    Beige;F5F5DC
    Blonde;FBF6D9
    AntiqueWhite;FAEBD7
    Champagne;F7E7CE
    BlanchedAlmond;FFEBCD
    Vanilla;F3E5AB
    Tan Brown;ECE5B6
    Peach;FFE5B4
    Mustard;FFDB58
    Rubber Ducky Yellow;FFD801
    Bright Gold;FDD017
    Golden brown;EAC117
    Macaroni and Cheese;F2BB66
    Saffron;FBB917
    Beer;FBB117
    Cantaloupe;FFA62F
    Bee Yellow;E9AB17
    Brown Sugar;E2A76F
    BurlyWood;DEB887
    Deep Peach;FFCBA4
    Ginger Brown;C9BE62
    School Bus Yellow;E8A317
    Sandy Brown;EE9A4D
    Fall Leaf Brown;C8B560
    Orange Gold;D4A017
    Sand;C2B280
    Cookie Brown;C7A317
    Caramel;C68E17
    Brass;B5A642
    Khaki;ADA96E
    Camel brown;C19A6B
    Bronze;CD7F32
    Tiger Orange;C88141
    Cinnamon;C58917
    Bullet Shell;AF9B60
    Dark Goldenrod;AF7817
    Copper;B87333
    Wood;966F33
    Oak Brown;806517
    Moccasin;827839
    Army Brown;827B60
    Sandstone;786D5F
    Mocha;493D26
    Taupe;483C32
    Coffee;6F4E37
    Brown Bear;835C3B
    Red Dirt;7F5217
    Sepia;7F462C
    Orange Salmon;C47451
    Rust;C36241
    Red Fox;C35817
    Chocolate;C85A17
    Sedona;CC6600
    Papaya Orange;E56717
    Halloween Orange;E66C2C
    Pumpkin Orange;F87217
    Construction Cone Orange;F87431
    Sunrise Orange;E67451
    Mango Orange;FF8040
    Dark Orange;F88017
    Coral;FF7F50
    Basket Ball Orange;F88158
    Light Salmon;F9966B
    Tangerine;E78A61
    Dark Salmon;E18B6B
    Light Coral;E77471
    Bean Red;F75D59
    Valentine Red;E55451
    Shocking Orange;E55B3C
    Red;FF0000
    Scarlet;FF2400
    Ruby Red;F62217
    Ferrari Red;F70D1A
    Fire Engine Red;F62817
    Lava Red;E42217
    Love Red;E41B17
    Grapefruit;DC381F
    Chestnut Red;C34A2C
    Cherry Red;C24641
    Mahogany;C04000
    Chilli Pepper;C11B17
    Cranberry;9F000F
    Red Wine;990012
    Burgundy;8C001A
    Chestnut;954535
    Blood Red;7E3517
    Sienna;8A4117
    Sangria;7E3817
    Firebrick;800517
    Maroon;810541
    Plum Pie;7D0541
    Velvet Maroon;7E354D
    Plum Velvet;7D0552
    Rosy Finch;7F4E52
    Puce;7F5A58
    Dull Purple;7F525D
    Rosy Brown;B38481
    Khaki Rose;C5908E
    Pink Bow;C48189
    Lipstick Pink;C48793
    Rose;E8ADAA
    Rose Gold;ECC5C0
    Desert Sand;EDC9AF
    Pig Pink;FDD7E4
    Cotton Candy;FCDFFF
    Pink Bubble Gum;FFDFDD
    Misty Rose;FBBBB9
    Pink;FAAFBE
    Light Pink;FAAFBA
    Flamingo Pink;F9A7B0
    Pink Rose;E7A1B0
    Pink Daisy;E799A3
    Cadillac Pink;E38AAE
    Carnation Pink;F778A1
    Blush Red;E56E94
    Hot Pink;F660AB
    Watermelon Pink;FC6C85
    Violet Red;F6358A
    Deep Pink;F52887
    Pink Cupcake;E45E9D
    Pink Lemonade;E4287C
    Neon Pink;F535AA
    Magenta;FF00FF
    Dimorphotheca Magenta;E3319D
    Bright Neon Pink;F433FF
    Pale Violet Red;D16587
    Tulip Pink;C25A7C
    Medium Violet Red;CA226B
    Rogue Pink;C12869
    Burnt Pink;C12267
    Bashful Pink;C25283
    Dark Carnation Pink;C12283
    Plum;B93B8F
    Viola Purple;7E587E
    Purple Iris;571B7E
    Plum Purple;583759
    Indigo;4B0082
    Purple Monster;461B7E
    Purple Haze;4E387E
    Eggplant;614051
    Grape;5E5A80
    Purple Jam;6A287E
    Dark Orchid;7D1B7E
    Purple Flower;A74AC7
    Medium Orchid;B048B5
    Purple Amethyst;6C2DC7
    Dark Violet;842DCE
    Violet;8D38C9
    Purple Sage Bush;7A5DC7
    Lovely Purple;7F38EC
    Purple;8E35EF
    Aztech Purple;893BFF
    Medium Purple;8467D7
    Jasmine Purple;A23BEC
    Purple Daffodil;B041FF
    Tyrian Purple;C45AEC
    Crocus Purple;9172EC
    Purple Mimosa;9E7BFF
    Heliotrope Purple;D462FF
    Crimson;E238EC
    Purple Dragon;C38EC7
    Lilac;C8A2C8
    Blush Pink;E6A9EC
    Mauve;E0B0FF
    Wisteria Purple;C6AEC7
    Blossom Pink;F9B7FF
    Thistle;D2B9D3
    Periwinkle;E9CFEC
    Lavender Pinocchio;EBDDE2
    Lavender blue;E3E4FA
    Pearl;FDEEF4
    SeaShell;FFF5EE
    Milk White;FEFCFF
    White;FFFFFF


Die App ist noch in der Entwicklung...[/list]
_________________
Gruß,
UEZ


Zuletzt bearbeitet von UEZ am 09.11.2023, 12:57, insgesamt 11-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 25.02.2020, 15:46    Titel: Antworten mit Zitat

Hallo URZ!

Beim Compilieren bekomme ich die Fehlermeldung:
    ...\FreeBASIC-1_05_0\bin\win32\ld.exe: cannot find -lz
Liegt das an meiner veralteten FB-Version (1.05) oder brauche ich noch irgendeine externe Bibliothek?

Ansonsten: Tolles Tool, die Idee könnte glatt von mir sein. zwinkern Daumen rauf! Vielleicht (nur mal als Anregung) könnte man noch einen Farbeditor integrieren?

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
UEZ



Anmeldungsdatum: 24.06.2016
Beiträge: 129
Wohnort: Opel Stadt

BeitragVerfasst am: 25.02.2020, 16:10    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Hallo URZ!

Beim Compilieren bekomme ich die Fehlermeldung:
    ...\FreeBASIC-1_05_0\bin\win32\ld.exe: cannot find -lz
Liegt das an meiner veralteten FB-Version (1.05) oder brauche ich noch irgendeine externe Bibliothek?

Ansonsten: Tolles Tool, die Idee könnte glatt von mir sein. zwinkern Daumen rauf! Vielleicht (nur mal als Anregung) könnte man noch einen Farbeditor integrieren?

Gruß
grindstone


Hallo grindstone,

danke für dein Feedback. Ich dachte, dass die ZLib standardmäßig dabei ist, aber anscheinend doch nicht.
Im 1. Beitrag oben habe ich einen Download Link angeben, wo die benötigten Dateien in dem Zip Archiv hinterlegt sind. Ich hoffe, dass die Dateien vollständig sind.

Farbeditor?!? - hmm, muss ich mir noch überlegen, wie ich ihn integrieren soll.

Hat jemand eine Idee, wie ich bei Verwendung von LVS_EX_FULLROWSELECT verhindern kann, dass die Auswahl der Zeile nicht die letzte Spalte markiert und somit die Farbe überschreibt?

Eine Autoit Lösung habe ich, aber einige Funktionen nach FB zu übersetzen ist nicht ganz trivial...
_________________
Gruß,
UEZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 26.02.2020, 16:20    Titel: Antworten mit Zitat

Das Programm will irgendwie nicht. Mit den Dateien von dem angegebenen Link bekomme ich dieselbe Fehlermeldung, und wenn ich die einzige libz.dll, die ich auf dem System habe (von Avidemux), in den Programmodner kopiere, compiliert das Programm und startet auch, aber es erscheint nur das Fenster ohne Farben.

Ich würde gerne einen Screenshot hochladen, aber ich bekomme gerade keine Verbindung zum Server.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
UEZ



Anmeldungsdatum: 24.06.2016
Beiträge: 129
Wohnort: Opel Stadt

BeitragVerfasst am: 26.02.2020, 17:00    Titel: Antworten mit Zitat

Ich habe den Inhalt der Datei ColorConstants.txt in den Post#1 hinzugefügt. Wenn du den Inhalt als Datei erstellst, sollten die Farben sichtbar sein.

Ich werde in einer VM FB installieren und testen, warum das Kompilieren nicht funzt.

Funktioniert eigentlich das Zip Archiv mit der bereits kompilierten Exe?
_________________
Gruß,
UEZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
UEZ



Anmeldungsdatum: 24.06.2016
Beiträge: 129
Wohnort: Opel Stadt

BeitragVerfasst am: 27.02.2020, 10:20    Titel: Antworten mit Zitat

Ich habe jetzt die ZLib Komprimierung durch die Windows interne ersetzt. Jetzt sollte das Problem mit ZLib (zlib1.dll) nicht mehr existieren und die Farbtabelle sollte erstellt werden!
_________________
Gruß,
UEZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 27.02.2020, 12:30    Titel: LZW-Codec in der Gfxlib Antworten mit Zitat

UEZ hat Folgendes geschrieben:
Ich habe jetzt die ZLib Komprimierung durch die Windows interne ersetzt.

Die FreeBASIC-gfxlib, die sowieso plattformunabhängig eingebunden wird, enthält übrigens auch schon fertige (De-)Kompressions-Routinen (LZW). lächeln

Siehe Unterabschnitt "LZW-Codec in der Gfxlib" unter:
https://www.freebasic-portal.de/befehlsreferenz/tipps-und-tricks-465.html
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
UEZ



Anmeldungsdatum: 24.06.2016
Beiträge: 129
Wohnort: Opel Stadt

BeitragVerfasst am: 27.02.2020, 14:47    Titel: Re: LZW-Codec in der Gfxlib Antworten mit Zitat

Sebastian hat Folgendes geschrieben:
UEZ hat Folgendes geschrieben:
Ich habe jetzt die ZLib Komprimierung durch die Windows interne ersetzt.

Die FreeBASIC-gfxlib, die sowieso plattformunabhängig eingebunden wird, enthält übrigens auch schon fertige (De-)Kompressions-Routinen (LZW). lächeln

Siehe Unterabschnitt "LZW-Codec in der Gfxlib" unter:
https://www.freebasic-portal.de/befehlsreferenz/tipps-und-tricks-465.html


Danke für den Tipp. Ich habe jetzt LZW in mein Tool "FB File2Bas Code Generator" integriert, aber wie kann ich das Fenster, das mit Screenres geöffnet wurde, wieder schließen?
Ich weiß, da war was, aber ich kann es momentan nicht finden...happy
_________________
Gruß,
UEZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 27.02.2020, 15:10    Titel: #include "fbgfx.bi" Antworten mit Zitat

Wenn du
Code:
#include "fbgfx.bi"

am Anfang einbindest, müsste es auch ohne SCREENRES-Aufruf gehen. lächeln

Hat bei mir gerade zumindest geklappt. lächeln
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 27.02.2020, 15:13    Titel: Re: LZW-Codec in der Gfxlib Antworten mit Zitat

UEZ hat Folgendes geschrieben:
wie kann ich das Fenster, das mit Screenres geöffnet wurde, wieder schließen?
Bei einem Klick auf das Kreuz liefert INKEY den Wert Chr(255,107).
Code:
ScreenRes 600,600
Do
   Sleep 1
Loop Until InKey = Chr(255,107)


Alternativ kannst du das Programm auch mit "console" compilieren. Dann verschwindet beim Schließen des Konsolenfensters auch das Screenres - Fenster.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
UEZ



Anmeldungsdatum: 24.06.2016
Beiträge: 129
Wohnort: Opel Stadt

BeitragVerfasst am: 27.02.2020, 15:47    Titel: Re: #include "fbgfx.bi" Antworten mit Zitat

Sebastian hat Folgendes geschrieben:
Wenn du
Code:
#include "fbgfx.bi"

am Anfang einbindest, müsste es auch ohne SCREENRES-Aufruf gehen. lächeln

Hat bei mir gerade zumindest geklappt. lächeln


Yep, danke funktioniert ohne Screenres! cool

@grindstone: danke für die alternativ Lösung.
_________________
Gruß,
UEZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 27.02.2020, 16:10    Titel: Antworten mit Zitat

@UEZ: Das Programm compiliert jetzt, beim Erstellen der Farbtabelle gibt es aber noch Probleme: Beim Erstellen von "ColorConstants.txt" stürzt das Programm mit einer Schutzverletzung ab, hinterlässt aber eine leere Datei. Beim zweiten Start erscheint dann das Fenster, aber ohne Farbwerte. Wenn ich die geposteten Farbwerte in die Datei kopiere, läuft alles einwandfrei.

Das Problem liegt in "pRtlDecompressBufferEx". Die eigentliche Ursache ist aber möglicherweise mein Betriebssystem. Ich benutze (immer noch) XP.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
UEZ



Anmeldungsdatum: 24.06.2016
Beiträge: 129
Wohnort: Opel Stadt

BeitragVerfasst am: 27.02.2020, 16:36    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
@UEZ: Das Programm compiliert jetzt, beim Erstellen der Farbtabelle gibt es aber noch Probleme: Beim Erstellen von "ColorConstants.txt" stürzt das Programm mit einer Schutzverletzung ab, hinterlässt aber eine leere Datei. Beim zweiten Start erscheint dann das Fenster, aber ohne Farbwerte. Wenn ich die geposteten Farbwerte in die Datei kopiere, läuft alles einwandfrei.

Das Problem liegt in "pRtlDecompressBufferEx". Die eigentliche Ursache ist aber möglicherweise mein Betriebssystem. Ich benutze (immer noch) XP.

Gruß
grindstone


WindowsXP!?! Daran liegt es wohl, denn laut MS setzt die Funktion RtlDecompressBufferEx mindestens Windows 8 voraus.
¯\_(ツ)_/¯
_________________
Gruß,
UEZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 27.02.2020, 17:38    Titel: Antworten mit Zitat

Na, dann hätten wir ja den Übeltäter... grinsen

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
UEZ



Anmeldungsdatum: 24.06.2016
Beiträge: 129
Wohnort: Opel Stadt

BeitragVerfasst am: 28.02.2020, 08:51    Titel: Antworten mit Zitat

Ich habe jetzt die Komprimierung auf LZW umgestellt, damit auch "ältere" BS die Datei entpacken und erstellen können.

Bitte mal testen!

Danke.

PS: danke an Sebastian für den Hinweis bezgl. LZW Komprimierung. lächeln
_________________
Gruß,
UEZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 28.02.2020, 14:40    Titel: Antworten mit Zitat

Herzlichen Glückwunsch, jetzt läuft es! happy Daumen rauf!

Einige kleine Schönheitsfehler gibt es noch: Der Inhalt des Fensters lässt sich erst dann mit dem Mausrad scrollen, wenn ein Element markiert ist, und die Pfeil- und Bildtasten funktionieren überhaupt (noch) nicht.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
UEZ



Anmeldungsdatum: 24.06.2016
Beiträge: 129
Wohnort: Opel Stadt

BeitragVerfasst am: 28.02.2020, 15:12    Titel: Antworten mit Zitat

Danke für's Testen!

Sobald ich mit der Maus über dem Fenster bin, kann ich per Scrollrad scrollen. Kann sein, dass das ein Feature von dem Maustreiber ist.

Die Tasten muss ich noch coden. lächeln

Ich habe auch das Maximieren bzw. GUI Größe ändern herausgenommen.

Ich werde noch ein Color Picker hinzufügen, so dass eine Farbe vom Desktop mit der Maus selektiert werden kann.
_________________
Gruß,
UEZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
UEZ



Anmeldungsdatum: 24.06.2016
Beiträge: 129
Wohnort: Opel Stadt

BeitragVerfasst am: 08.11.2023, 22:36    Titel: Antworten mit Zitat

Kleines Update:
    * Suchfeld hinzugefügt
    * Pfeiltasten bewegen die Selektion
    * Enter kopiert den Wert in Zwischenablage


Danke an Velted für die Unterstützung.

Siehe Beitrag #1 für die Details.
_________________
Gruß,
UEZ
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz