Anfänger ;) - einige Fragen zu VC++



  • denial schrieb:

    Na ich glaub ich programmier mir lieber die Finger wund 😃

    Ich glaube du unterschätzst da etwas gewaltig 😉 😃

    Ehm gibt es gute Tutorials zum Thema? Die Erklärung von Rapha war zwar gut, aber grad im Bezug auf Background-Änderung und so etwas kurz 😉

    Zu was genau?
    Das mit dem Hintergrund habe ich folgendermaßen gemeint:
    Du "zeichnest" den Hintergrund des Fensters in WM_PAINT selbst (und hast die Farbe in einer Variable gespeichert).
    Dann kannst du einfach den Wert der Variable ändern und der Hintergrund ist geändert....tata 😃

    Grüße Rapha



  • Hi danke.
    Also ich hab da jetz n tolles Tutorial gefunden, dass sehr viel erklärt, aber das Ganze kommt mir für meine Zwecke zumindest weder sehr viel noch schwer vor! 🙂 Also so wund werden die Finger nich. Außerdem haben die ja dicke Hornhaut von der E-Gitarre. 😃

    Also los gehts!



  • Hi

    denial schrieb:

    Also so wund werden die Finger nich. Außerdem haben die ja dicke Hornhaut von der E-Gitarre.

    Solange du nur ein Programm schreibst, das die Hintergrundfarbe ändern kann 😉

    denial schrieb:

    Außerdem haben die ja dicke Hornhaut von der E-Gitarre.

    Unter abgestorbenen Fingerkuppen läuft nichts 😃

    Grüße Rapha



  • Da du dich ja nicht mit der MFC zu programmieren scheinst, verschieb ich dich auch mal ins WinAPI-Forum. ➡



  • simon.phoenix schrieb:

    MFC sind einfach C++, WINAPI ist C.

    Diese Aussage geht an der Wahrheit vorbei.

    Wer MFC als C++ bezeichnet, verwechselt "C++" und "C mit Klassen".



  • Zum Ändern der Hintergrundfarbe eines Fensters empfiehlt sich folgendes Makro(sofern man den Hintergrund nicht selbst zeichnet):

    #define SetBKColor(hwnd,color) ((BOOL)SendMessage((hwnd),(EM_SETBKGNDCOLOR),(WPARAM)0,(LPARAM)(color)));
    


  • Warum nicht so?

    inline bool SetBKColor(HWND hWnd, COLORREF color)
    {
        return SendMessage(hWnd, EM_SETBKGNDCOLOR, 0, static_cast<LPARAM>(color));
    }
    

    Wenn er eine .cpp-Datei schreibt (was anzunehmen ist), sind inline-Funktionen den Makros immer vorzuziehen.

    edit: GDI hat bereits die Funktion SetBkColor. Es ist sehr unübersichtlich, dann noch eine Funktion SetBKColor anzubieten. Besser wäre so was wie SetWindowBkColor.



  • Ich verwende die Makroversion, weil sie nicht gefährlich ist und keinen Funktionscode erzeugt. Für das TreeView-Control gibt es haufenweise solcher Makros. Stell dir vor, du inkludierst die entsprechende Header-Datei und deine Exe-Datei bläht sich unnötigerweise auf...

    Generell sind Makros gefährlich, aber nur für Anfänger 😉



  • Aziz schrieb:

    Ich verwende die Makroversion, weil sie nicht gefährlich ist und keinen Funktionscode erzeugt.

    a) Mag sein, dass dieses eine Makro nicht gefährlich ist. Dann verschreibst du dich einmal (passiert jedem mal) und suchst längere Zeit nach dem Fehler.
    b) Funktionscode? Wo wird bei meiner Funktion Funktionscode erzeugt? Es wird genau (bytegenau) derselbe Code erzeugt wie bei deinem Makro. Mit dem Unterschied, dass meine Funktion Typsicherheit bietet und debugbar ist.

    Aziz schrieb:

    Für das TreeView-Control gibt es haufenweise solcher Makros.

    Stellt sich die Frage ob dieses Design ein Vorbild ist.

    Aziz schrieb:

    Stell dir vor, du inkludierst die entsprechende Header-Datei und deine Exe-Datei bläht sich unnötigerweise auf...

    Das ist bei inline-Funktionen definitiv nicht der Fall.



  • cd9000 schrieb:

    simon.phoenix schrieb:

    MFC sind einfach C++, WINAPI ist C.

    Diese Aussage geht an der Wahrheit vorbei.

    Wer MFC als C++ bezeichnet, verwechselt "C++" und "C mit Klassen".

    Was ist mit Templates (Template-Container) und Exceptions (CException, etc.)?

    edit: Will damit nicht sagen, dass MFC wirklich dem Ideal von C++ entspricht, aber es ist imho bisschen mehr als ein "C mit Klassen".



  • Funktionscode? Wo wird bei meiner Funktion Funktionscode erzeugt? Es wird genau (bytegenau) derselbe Code erzeugt wie bei deinem Makro. Mit dem Unterschied, dass meine Funktion Typsicherheit bietet und debugbar ist.

    Ok, ich geb mich geschlagen 😉



  • Danke für die Antworten. Meine Fragen sind weitestgehend geklärt, und ich verstehe den Umgang nun langsam ziemlich gut, dank ein paar guter Tutorials (und euren Antworten natürlich :D)


Anmelden zum Antworten