3D-Look der Controls in einem normalen Dialog - wie?



  • Hallo,

    ein feines Forum mit vielen wertvollen Tips habt Ihr hier - und nun bräuchte ich auch einen Tip von Euch ... und gleich vorweg: Ich habe die Hilfe-Funktion in diesem Forum bereits ausgiebigst in Anspruch genommen, auch MSDN habe ich gequält ...

    Ich habe hier einen Thread zu diesem Thema gefunden:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-220378.html
    - allerdings tut sich bei mir mit WS_EX_CLIENTEDGE leider gar nix.

    aber ich such mich jetzt seit einigen Stunden zum Krüppel und ich schaff es einfach nicht, meine EDITTEXT-Controls in einem normalen Dialog (DS_MODALFRAME) Windows-like mit einem 3D-Rahmen angezeigt zu bekommen. Es ist zum Aus-der-Haut-fahren.

    Vielleicht kann mir ja einer von Euch helfen und mir mitteilen, was ich falsch mache?

    Hier erstmal die Dialog-Resouce:

    IDD_TESTDIALOG DIALOG DISCARDABLE  0, 0, 600, 400
    STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
    CAPTION "Test"
    FONT 8, "Arial"
    BEGIN
        LTEXT "Bezeichnung", IDC_STATIC,       102, 21, 80, 10
        EDITTEXT             IDC_TESTINPUT,    102, 30, 80, 12, ES_AUTOHSCROLL
    END
    

    Soweit also die Resource des Dialogs an und für sich. Korrespondierende .h-Dateien sind alle vorhanden. Funktioniert alles prima.

    Angezeigt wird der Dialog so:

    int ret = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_TESTDIALOG), hwnd, TestDialogDlgProc);
    

    Es funktioniert wie gesagt alles - ich kann alle Werte aus jedem beliebigen Control auslesen, verändern ... alles wunderbar.
    Nur diesen häßlichen, einfältigen dünnen Rahmen will ich nicht - ich will, daß das EDITTEXT einen 3D-Rahmen bekommt.

    Vielleicht erbarmt sich ja einer meiner und gibt mir den richtigen Hinweis?

    Im übrigen arbeite ich mit DevC++ und MINGW in der letzten Version. Ich programmiere NUR die WinAPI und nicht MFC oder .NET oder was auch immer sonst für Grauslichkeiten 😉



  • Schon WS_BORDER probiert?



  • Ja - WS_BORDER wird aber laut Dokumentation bei NICHt-anführen in der Resource autom. gesetzt.



  • hmmmmmmm schrieb:

    Schon WS_BORDER probiert?

    WS_BORDER wird afaik standardmäßig hinzugefügt.
    Kannst das per NOT WS_BORDER wieder entfernen.

    Ich verstehe nicht so richtig, wie du dir diesen 3D-Look vorstellt.
    Ein dickerer Rahmen?
    Zeig am besten man was, das so aussieht.



  • Vielleicht erklärt es das besser: ich lese - selten aber doch - über "Raised" und "Sunken". Also daß ein Element "erhöht" oder "versenkt" angezeigt wird. Ich schaffe es nur nicht, das auch zu machen.

    Muß ich mich hier etwa mit CreateWindowEx und dem Extended-Style beschäftigen?

    .. und wie kann ich hier Bilder anfügen? - Muß ich die auf meinen Web-Space stellen und verlinken, oder kann ich das auch direkt in einer Nachricht machen?



  • ok, hab die Screenshots auf meinen Web-Space geparkt:

    So soll es aussehen:
    http://www.teilweise.at/hilfe/dialog1_example.jpg

    und so sieht es leider noch immer aus:
    http://www.teilweise.at/hilfe/dialog_example2.jpg

    Im ersten Bild die einzeilige EDITTEXT, wo rechts davon der Button zur Directory-Auswahl ist. So muß ein EDITTEXT aussehen ...

    Ich hoffe, das veranschaulicht das ganze etwas.



  • Ach! Jetzt weiß ich was su willst!
    Also Exstyles gibts du immer nach den normalen Styles an:

    EDITTEXT IDC_TESTINPUT, 102, 30, 80, 12, ES_AUTOHSCROLL, WS_EX_WINDOWEDGE
    

    Das wäre "raised", du meinst bestimmt WS_EX_STATICEDGE

    Sieh dir am besten mal das hier an:
    Klick mich!
    Da ist eine Liste mit allen möglichen ExStyles

    Bilder kannst du ganz einfach reistellen.
    Such mal bei google nach "bilder hochladen", du wirst Hunderte finden
    Kannst aber auch deinen eigenen Webspace benutzen.
    Das Forum ziegt aber afaik keine Bilder an, also nur den Link posten.



  • eiwei - das ist super, danke!

    WS_EX_STATICEDGE führte mich zum Ziel. Jetzt ist es "versunken" und sieht gut aus. Allerdings ist noch immer der dünne Rahmen drum herum - wie bekomme ich denn den weg?



  • so, also ich gebe jetzt auf. Da geht zuviel Zeit drauf, nur um einen einfachen Rahmen um ein Control herum weg zu bekommen.

    Ich habe mir den Control Spy v6 geladen und damit ausprobiert - meine Compilate verhalten sich definitiv anders, als das der Control Spy macht.

    Nachdme ich mit MINGW compiliere, schätze ich mal, daß der mitgelieferte WINDRES.EXE (Der Resourcen-Compiler) IMMER ein WS_EX_CLIENTEDGE mitkompiliert. Ich gehe dem Problem mal in diese Richtung nach und möchte Euch bitten, wenn Ihr noch Tips in die Richtung haben solltet, sie mir hier herein zu schreiben.


Anmelden zum Antworten