
Hallo Xin,
danke erst mal, dann muss ich wohl doch ein bisschen ausführlicher werden.
Ich lerne die Winapi weil das Erscheinungsbild etwas über die Möglichkeiten der Konsole hinausgehen soll und ich keine andere Tools z.B GTK zur Verfügung habe.
Nach meinen Informationen ist die WinApi in C geschrieben und ich habe mal windows.h in den Compiler geladen, um zu sehen, was da includiert ist und dann habe ich das dort Includierte geladen um diese Header -Dateien zu sehen und so habe ich das weiter aufgetröselt bis ich ursprüngliche C-Header gefunden habe.- Das nur zu meinem Verständnis. Daraus schließe ich aber auch, dass man eine Anwendung mit graphischer Benutzer-Oberfläche auch in rein ursprünglichem C schreiben kann, wenn man den Code für jede spezifische WinApi-Funktion ausschreibt.
Du hast mir mal Code für eine Cursor-Position geschrieben. Das habe ich dann einfach als curspos.h im Header-Verzeichnis des Compilers abgespeichert und includiert. Und so verstehe ich auch die WinApi vom Wirkungsprinzip her.
Soweit es nicht direkt mit der Oberfläche zu tun hat, schreibe ich alles was hinter dem Bildschirm als Programmablauf passiert grundsätzlich in C ohne ungarische Notation. Also z.B. statt LPTCTSTR schreibe ich const char *, statt DWORD unsigned int. Soweit ich bis jetzt vestanden habe ist C allgemeiner, weniger spezifisch, universeller. Und diese Methode hilft mir beides ein bischen besser zu verstehen, auch wenn es noch nicht so aussieht, denn nur Code-Bausteien zu lernen ohne vVerständnis ist wie das Tel-Buch zu lernen.
Das Problem mit der undeclared Variable hat sich inzwischen gelöst, was daran lag, dass ich sie nicht am Anfang dekleriert hatte sondern in einer anderen Funktion später:
Code: Alles auswählen
static int Schwarz = RGB( 0, 0, 0);
static int Weiss = RGB(255,255,255);
Jetzt stet's am Anfang und klappt. Aber COLORREF = DWORD = unsigned int. Jedoch reichen für 16 Mill Farben auch 2 Mrd integer im pos Bereich weshalb ich bei static int bleibe.
Aber ich habe noch die Frage warum dieses so nicht geht:
Das Fenster bleibt durchsichtig und der Compiler meldet: "[Warning] assignment makes pointer from integer without a cast"
Es funktioniert nur so:
Aber wo soll da ein Zeiger sein? Laut Erklärung ist hbrBackground eine Variable und es gilt:
Also hat Variable2 auch den Wert1
Wozu brauche ich die Funktion CreateSolidBrush?
Ich bitte um Korrektur, wenn ich entsprechend meinen Erklärungen was falsch verstanden habe oder etwas unsinnig ist in meiner Vorgehensweise.
Danke
Gruß, Tonio
