• [BLOCK]
    Set("FastMode",1)
    $H windows.ph
    $H messages.ph

    Declare brush&


    Proc editcall
    Parameters wnd&,msg&,wparam&,lparam&
    IF msg&=~WM_CTLCOLOREDIT
    'If Lparam&=multiedit&
    IF brush&
    ~DeleteObject(brush&)
    EndIf
    brush&=~CreateSolidBrush(Rgb(25,5,255)) Farbe
    ~SetBkMode(wParam&,~TRANSPARENT)
    ~SetTextColor(wParam&,RGB(205,5,0))
    ' wParam Handle to the device context for the static control 'window.
    ' lParam Handle to the static control.

    RETURN brush&
    'EndIf
    If Lparam&=edit&
    IF brush&
    ~DeleteObject(brush&)
    EndIf
    brush&=~CreateSolidBrush(Rgb(255,5,255))
    ~SetBkMode(wParam&,~TRANSPARENT)
    ~SetTextColor(wParam&,RGB(25,5,25))
    ' wParam Handle to the device context for the static control
    ' window.
    ' lParam Handle to the static control.

    RETURN brush&
    endif
    EndIf


    If msg&=~WM_CLOSE
    ~DeleteObject(brush&)
    ~RemoveProp(edit&,"editcall")
    ~RemoveProp(multiedit&,"editcall")
    raus&=1
    Endif

    RETURN ~CallWindowProc(editcallback&,wnd&,msg&,wparam&,lparam&)
    EndProc

    cls
    var editcallback&=~SetWindowLong(%hwnd,~GWL_WNDPROC,ProcAddr("editcall",4))

    var edit&=Create("EDIT",%hwnd,"",16,96,60,20)
    var multiedit&=Create("Multiedit",%hwnd,"",16,136,120,120)

    Var raus&=0
    WhileNot raus&
    WaitInput
    EndWhile
    End

    [/BLOCK]

    Ich will beiden Controls unabhängig voneinander Farben
    (Text:-),Hintergrund:-),Markierung:() zuweisen.

    Wieso funktioniert die Abfrage von Lparam& nicht:?:

    Der Versuch mit zwei Callback-Routinen
    ist auch gescheitert.:(

    Wer kann mir einen Tip geben. :smile:

    (xprofan 11,XP prof mit allen SP)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress, WoltLab & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

    Wenn du Fragen hast, kannst du dich gerne jederzeit an @Maximilian Rupp wenden

    Hinweis:

  • Funktioniert doch :)

    Gruss
    Andreas

    ______________________
    http://www.ampsoft.eu

    Profan 3.3 - XProfanX2
    Windows 95,98,ME,2000,XP
    Vista - Windows 7 32 / 64 Bit

    ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher

  • Einfach superb, wie der Franzose sagt!
    Kleiner Wermuthstropfen: Löschen mit PfeilNachLinks-Taste löscht nicht sofort, überschriebene Zeichen sieht man - aber ohnehin nur, solange der Cursor noch in der selben Zeile steht. Ist aber wirklich kein Beinbruch :)
    Gruss

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • Nein, das Multiedit ist so nicht benutzbar. Schreib mal ein paar Zeilen, bis die Box scrollt und geh dann in die erste Zeile und lösche sie per Entf auf dem linken Buchstaben. Da kommt der ganze Text durcheinander.
    Hab auch schon öfter mit Styles und Multiedits rumprobiert. Irgendwie ist immer ein Haken drin.

    Ehrlich gesagt sollte man die Farben auch nicht ändern, wenn es nicht unbedingt sein muss. Viele User mögen sowas gar nicht. ;)

  • Ich kann's durchaus brauchen. Kann man Neuzeichnen nicht einfach per Timer auslösen? Und geht dann vielleich umfärben? Vielleicht sogar zeilenweise? (Nurmalsofrag)

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • Kann mir mal jemand sagen warum sich das Beispiel mit Subclassproc so seltsam verhält. Erstmal passiert gar nichts. Beim einzeiligen Edit kommt die Farbe wenn ich mit dem Cursor darüber fahre. Beim Multiedit muss ich ich reinklicken, damit die Farbe erscheint.

    Mache ich da einen Fehler oder ist das ein Fehler in XProfan X2
    Getestet mit Win 7 32bit

  • Das Problem wird sein, dass dein Subclassing erst greift, wenn das Control schon einmal gezeichnet wurde. Das sollte anfangs immer in WM_INITDIALOG (im Messageloop des Controls) passieren, also wenn das Control gerade erstellt wird.
    Einmal gezeichnet, meldet Windows auch nur noch eine nötige Restaurierung betroffener Bereiche in WM_PAINT.

  • Hier eine Lösung aus einem C++ - Forum:
    > case WM_CTLCOLOREDIT:
    > hCtrl=(HWND)lParam;
    > hdc=(HDC)wParam;
    > SetBkMode(hdc,TRANSPARENT);:evil:
    SetBkColor(hdc, RGB(0, 0,255)):-)
    > SetTextColor(hdc,RGB(255,0,0));
    > return (int)hBrush;
    >
    > where hBrush is my brush create with
    > CreateSolidBrush(RGB(0,0,255));
    >
    > this code works perflectly if the edit control is not multiline
    > (ES_MULTILINE style), otherwise I have refresh problems when the
    > content is modified (you can't read no more the characters you type).
    >
    > If I comment the SetBkMode statement it works but when I type some
    > characters the background becomes white...

    If you return a valid brush handle, you should also SetBkColor to the same
    color as the brush. Calling SetBkMode is not expected, and as so, the
    control stops working properly.

    So just replace SetBkMode(hdc, TRANSPARENT) with SetBkColor(hdc, RGB(0, 0,
    255)) and you should get what you expected.

    I don't know how the control would behave like in the case of a bitmap
    brush. You probably would end up with the brush being used to fill the empty
    space not overwritten by the BkColor generated by the text output functions
    called by the Edit control.

  • Da steht aber, daß bei Multiline Controls genau die selben Probleme auftauchen: > Dieser Code arbeitet ziemlich perfekt solange das Control kein Multline Control ist...
    Als Abhilfe wird vorgeschlagen, SetBkMode(hdc, TRANSPARENT) durch SetBkColor(hdc, RGB(0, 0,255)) zu ersetzen.
    Aber wie lautet da die XProfan-Entsprechung?
    Gruss

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • Zitat von p. specht;851900

    Da steht aber, daß bei Multiline Controls genau die selben Probleme auftauchen: > Dieser Code arbeitet ziemlich perfekt solange das Control kein Multline Control ist...
    Als Abhilfe wird vorgeschlagen, SetBkMode(hdc, TRANSPARENT) durch SetBkColor(hdc, RGB(0, 0,255)) zu ersetzen.
    Aber wie lautet da die XProfan-Entsprechung?
    Gruss

    So sollte das gehen !

    Gruss
    Andreas

    ______________________
    http://www.ampsoft.eu

    Profan 3.3 - XProfanX2
    Windows 95,98,ME,2000,XP
    Vista - Windows 7 32 / 64 Bit

    ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher

  • Ja genau Andreas, man sollte sich schon etwas Zeit nehmen beim Lesen und
    kopieren.Damit wäre dieses Problem vom Tisch


    brush&=~CreateSolidBrush(Rgb(0,05,255))
    ~SetBkColor(wparam&, RGB(0, 05,255))

    Der RGB Wert muß jeweils gleich sein.

    In meinem Beispiel hier funktioniert es so.
    Gruß Ralph

  • Beide RGB müssen gleich sein.

    brush&=~CreateSolidBrush(Rgb(0,05,255))
    ~SetBkColor(wparam&, RGB(0, 05,255))

    SetBkMode(hdc, TRANSPARENT) ist wohl der falsche Befehl.


    So funktioniert es bei beiden Edittypen

  • Ich bräuchte jetzt nur noch Tips:


    - Markierung beim Edit einfärben.

    - Button , Buttontext farbig

    - Listbox Markierung farbig.(geht glaube ich mit Sendmessage)


    Ich werde mal weiter suchen.

  • Grosses DANKE, Andreas und allen Beteiligten! Funktioniert super!
    Gruss

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!