Meine GUI sieht immer anders aus als in den Beispielen...



  • Hi,

    wenn ich z.B. eine Textbox mit

    CreateWindow(L"Edit", L"", WS_VISIBLE | WS_CHILD | WS_BORDER | WM_CTLCOLORSTATIC, 0, 0, 50, 50, hWnd, reinterpret_cast<HMENU> (IDC_EDT_USERNAME), NULL, NULL);
    

    erstelle, kommt dabei immer nur ein weißes Feld mit einem 1px dünnen, schwarzen Rahmen raus. Ich möchte aber diesen tollen 3D Rahmen mit Schlagschatten und allem Pipapo, den man sonst auch überall sieht.

    Hiiiilfe 😞



  • CreateWindowEx(WS_EX_CLIENTEDGE, L"Edit", L"", WS_VISIBLE | WS_CHILD | WS_BORDER, 0, 0, 50, 50, hWnd, reinterpret_cast<HMENU> (IDC_EDT_USERNAME), NULL, NULL);
    

    Mit CreateWindowEx und WS_EX_CLIENTEDGE sieht es jetzt besser aus. So wie ich es mir vorgestellt habe jedoch nicht. Warum hat meine Textbox eine andere Schriftart, als die aller anderen Programme?



  • Der schwarze Rand kommt vom WS_BORDER...
    Du solltest den wegnehmen, wenn du das nicht haben willst, aber das mit der Farbe kapier ich nicht, das geht nicht, oder du behandelst WM_CTLCOLOREDT (bitte keine Prügel, wenns falsch ist :/), und änderst da die Farbe...
    Ist das ein großes Programm oder kannst du es hier posten?



  • Hi,

    um den typischen XP,Vista style zu haben musst du noch folgendes einfügen wenn du mit VisualStudio arbeitest.

    #include <commctrl.h>
    #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
    #pragma comment(lib, "comctl32.lib")
    

    Die Schriftarten musst du per Hand ändern indem du eine Nachricht an das Control sendest.

    Hier mal ein Beispiel aus meinen Wrapper

    HWND edit = CreateWindowEx(WS_EX_CLIENTEDGE, /* Erweiterter Stil */
                                   _T("EDIT"),       /* Name des Fensters */
                                   label,            /* Beschriftung */
                                   WS_CHILD |        /* Kind-Fenster */
                                   WS_VISIBLE |      /* Sichtbar */ 
                                   WS_BORDER |       /* Rand */
                                   ES_AUTOHSCROLL,   /* scrollt automatisch horizontal */
                                   x,                /* pos x */ 
                                   y,                /* pos y */ 
                                   w,                /* Breite */
                                   h,                /* Hoehe */
                                   hwnd,             /* Eltern-Fenster */
                                   (HMENU)id,        /* ID */
                                   GetModuleHandle(NULL), /* Programminstanz */
                                   NULL);
    
      SendMessage(edit, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(FALSE, 0));
    

    G hibbes



  • Steht auch in der FAQ!



  • Jo und da guckt keiner rein, weil es viel zu versteckt ist



  • Das ist ja nicht mein Problem?, oder 😃



  • hibbes schrieb:

    Hi,

    um den typischen XP,Vista style zu haben musst du noch folgendes einfügen wenn du mit VisualStudio arbeitest.

    #include <commctrl.h>
    #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
    #pragma comment(lib, "comctl32.lib")
    

    Die Schriftarten musst du per Hand ändern indem du eine Nachricht an das Control sendest.

    Hier mal ein Beispiel aus meinen Wrapper

    HWND edit = CreateWindowEx(WS_EX_CLIENTEDGE, /* Erweiterter Stil */
                                   _T("EDIT"),       /* Name des Fensters */
                                   label,            /* Beschriftung */
                                   WS_CHILD |        /* Kind-Fenster */
                                   WS_VISIBLE |      /* Sichtbar */ 
                                   WS_BORDER |       /* Rand */
                                   ES_AUTOHSCROLL,   /* scrollt automatisch horizontal */
                                   x,                /* pos x */ 
                                   y,                /* pos y */ 
                                   w,                /* Breite */
                                   h,                /* Hoehe */
                                   hwnd,             /* Eltern-Fenster */
                                   (HMENU)id,        /* ID */
                                   GetModuleHandle(NULL), /* Programminstanz */
                                   NULL);
      
      SendMessage(edit, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(FALSE, 0));
    

    G hibbes

    Daaaaaaankeeeee ^^

    ... und die FAQ habe ich echt nicht gesehen! Sorry!!


Anmelden zum Antworten