Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.07.2003, 19:30

Problem mit Dialog (kein MFC, normale Dialogfeldresource)

Hi Leute! Ich code gerade einen Starter für meine Engine, der auch farbig sein soll. Und jetzt meine Frage dazu: Wie kann ich bei einem normalen Dialogfeld die Farben ändern? Ich brauche: Hintergrundfarbe (Dialogfeld), Hintergrundfarbe (Textfeld) und Schriftfarbe (Textfeld). Ich habe im Dialogfeldeditor keine Möglichkeit dazu gefunden. Zu den Textfeldern: die sind Schreibgeschützt (nur für Engineausgabe, Labels sind nicht so schön). Danke im Voraus!

2

20.07.2003, 11:06

Die Hintergrundfarbe für das Dialogfenster kannst du in der WNDCLASS(EX)-Struktur im Element Background festlegen.

Bei der Schrift musst du mal nach SetBKColor, oder so in der MSDN suchen.

3

20.07.2003, 12:17

Eine Dialogfeldresource hat keine WNDCLASSEX-Struktur. Sonst hätte ich die ja verwendet. Und SetBKColor schlägt bei der Verwendung in Dialogfeldern auch kläglich fehl.

DarthB

Treue Seele

Beiträge: 265

Beruf: Schüler

  • Private Nachricht senden

4

20.07.2003, 15:15

WM_CTLCOLOR,
WM_CTLBTNCOLOR,
schau danach einfach mal in der MSDN.
Damit kannste dir schön bunte Fenster zusammencoden, habe aber keine Ahnung ob das mit diesen Dialogfeld Zeugs funzt, da ich dass nur in der reinen WinAPI Programmierung benuzt hab!

5

20.07.2003, 15:17

ja, das geht einfach mit SendDlgItemMessage()
stay tight, project universe comes back!
### project earth <> 2004 ###

DarthB

Treue Seele

Beiträge: 265

Beruf: Schüler

  • Private Nachricht senden

6

20.07.2003, 15:22

Hab ich mir schon fast gedacht... irgendwie muss man ja auch Messages an Dialoge schicken können! Hab mich nur noch net damit so sehr beschäftigt... Werd mir das aber wohl mal reinziehen müssen wenn ich ne Grafikartenauswahl progge!

7

20.07.2003, 16:58

Also ich habe mir ein Testprogramm für die Colors geschrieben (Template-Anwendung, ein zusätzliches Textfeld in der Aboutbox) aber ich bekomme es nicht zum laufen, die Suchergebnisse in der Hilfe waren schlecht. Derzeit habe ich den SendDlgItemMessage Befehl unter

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_INITDIALOG:
        SendDlgItemMessage(IDD_ABOUTBOX, IDC_EDIT1, TextColor, RGB(255,0,0), WM_CTLCOLOR);
        return TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
        {
            EndDialog(hDlg, LOWORD(wParam));
            return TRUE;
        }
        break;
    }
    return FALSE;
}
und der Compiler meint dazu

Zitat

TextColor: nichtdeklarierter Bezeichner
WM_CTLCOLOR: nichtdeklarierter Bezeichner
Kann mir jemand näheres dazu sagen?

8

20.07.2003, 17:09

du musst deinen button owner-draw machen!

dann kriegst du ne message, wenn der button gezeichnet werden soll:

Quellcode

1
2
3
4
5
6
7
8
WinProc(...)
{
  switch(Msg)
  {
     case WM_CTLCOLORBTN:
       return CreateSolidBrush(RGB(255, 0, 0));
  }
}


siehe auch WM_CTLCOLORDLG etc...
stay tight, project universe comes back!
### project earth <> 2004 ###

9

20.07.2003, 17:36

Aaaalso. Wenn ich deinen Code hinzufüge, bekomme ich folgenden Fehler:

Zitat

error C2440: 'return': HBRUSH kann nicht in LRESULT konvertiert werden
Ich habe keine Ahnung, wie man für einen Dialog Owner-Drawn Buttons erstellt und der Sample aus der Hilfe funktioniert nicht...

10

20.07.2003, 17:42

caste es halt:

Quellcode

1
return (LRESULT)CreateSolidBrush(RGB(255, 0, 0));


und um einen button ownerdraw zu machen, musste einfach bei den dialogeigenschaften "Owner-Draw" anklicken

allerdings hab ich selber noch nie damit gearbeitet, deswegen kann ich dir nich so stark helfen :(
stay tight, project universe comes back!
### project earth <> 2004 ###

Werbeanzeige