WinApi / TextOut / case
Verfasst: Mi Mär 02, 2016 1:41 pm
Hallo,
ich war zwischenzeitlich weg... Die Winapi ist wirklich eine sehr "um die Ecke gedachte" Telefonbuchvariante. Aber ich habe zur Zeit nichts anderes zur Wahl, Downloads sind hier blockiert und daheim ist die Kiste kaputt. Aber man lernt doch etwas über C durch die ganzen typedefs, auch wenn es anstrengend ist. Z.B. HBRUSH = HANDLE = PVOID = *PVOID. Das Problem konnte ich dann lösen. Jetzt hab ich ein anderes:
Ich kann innnerhalb der switchanweiseung nicht weiteren Text schreiben.
Um zu prüfen ob unterschiedliche Buchstaben vom Programm wahrgenommen werden und auch nur die programmierten, habe ich bei 't' bzw. 'T' den Ton eingefügt und bei 'e' bzw 'E' das Programm schließen lassen. Es fonktioniert. Aber TextOut funktioniert nicht. Wenn ich vor der switch (wPram) - Verzweigung das TextOut nicht auskommentiere, wird das "A" angezeigt. Ich habe auch alles mit if und else if probiert anstelle von switch - case. Funktioniert genauso bzw. bei 'a' / 'A' genauso nicht. Kann mir jemand helfen?
VG
Tonio
ich war zwischenzeitlich weg... Die Winapi ist wirklich eine sehr "um die Ecke gedachte" Telefonbuchvariante. Aber ich habe zur Zeit nichts anderes zur Wahl, Downloads sind hier blockiert und daheim ist die Kiste kaputt. Aber man lernt doch etwas über C durch die ganzen typedefs, auch wenn es anstrengend ist. Z.B. HBRUSH = HANDLE = PVOID = *PVOID. Das Problem konnte ich dann lösen. Jetzt hab ich ein anderes:
Ich kann innnerhalb der switchanweiseung nicht weiteren Text schreiben.
Code: Alles auswählen
switch (uMsg)
{
case WM_PAINT:
hdc = BeginPaint (hWnd, &ps);
SetTextColor(hdc, Weiss);
SetBkColor (hdc, Schwarz);
SelectObject(hdc, Ueberschrift);
TextOut (hdc, 400, 120, "MITARBEITERSTATUS", 17);
SelectObject(hdc, Eingabe);
TextOut (hdc, 550, 300, "Eingabe:", 8);
SetRect (&rc, 400, 400, 420, 420);
FillRect (hdc, &rc, CreateSolidBrush(Weiss));
TextOut (hdc, 550, 400, "A = Alle Mitarbeiter - Status", 31);
TextOut (hdc, 550, 450, "E = Einzelner Mitarbeiter - Status", 36);
TextOut (hdc, 550, 500, "T = Termine", 11);
TextOut (hdc, 550, 550, "N = Neuen Mitarbeiter hinzufügen", 32);
TextOut (hdc, 550, 600, "O = Optionen", 12);
TextOut (hdc, 529, 650, "Esq = Beenden", 13);
// DeleteObject(Ueberschrift);
// EndPaint (hWnd, &ps);
// return 0;
case WM_CHAR:
// TextOut(hdc, 400, 600, "A", 1);
switch (wParam)
{
case 'a' :
case 'A' :
TextOut (hdc, 400, 600, "A", 1);
break;
// HIER LIEGT DAS PROBLEM: ES WIRD NICHTS "OUTgeTEXTET". ES PASSIERT NICHTS.
case 't' :
case 'T' :
Beep (600,1000);
break;
case 'e' :
case 'E' :
PostQuitMessage(0);
return 0;
break;
case 27 :
PostQuitMessage(0);
return 0;
break;
}
EndPaint (hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
//falls Nachricht nicht behandelt wurde von Windows bearbeiten lassen
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
VG
Tonio