Sehr simples highliting?
-
greetz,
ich habe eine Anwendung mit einem Fenster und vielen Buttons etc.
Ganz unten links der Anwendung habe ich einen static Text:
"Last Error: There was no Error."
wenn ein Error passiert, schreibe ich statt There was no Error den Error eben.
Das Problem ist jedoch, dass dies kaum auffällt. Das heißt wenn ein Error vorkommt, wird der Error zwar gesetzt, aber es fällt nicht jedem User sofort auf, dass unten ein neuer Error steht und klickt einfach weiter auf den gleichen Button. Gibt es vielleicht standard Windows Error Töne zum Abspielen oder dass es ganz leicht aufblinkt oder so? Natürlich könnte ich ne wav hinzufügen oder die Farbe kurz ändern, sollte aber nicht so aufwändig sein. Vielleicht hat jemand ne nette Idee
und p. s. ich weiß, dass man dafür eig MessageBox mit MB_ICONERROR verwendet, aber in dieser Anwendung soll es anders gemacht werden, also bitte keine Antworten ala' "so gibt man keine Errors aus!!". Danke im Voraus
-
PlaySound() mit SND_ALIAS_ID, oder vllt. den Text in anderer Farbe oder dicker machen? Oder blinken lassen... (WM_SETFONT). Oder die Hintergrundfarbe des static controls flashen... (subclass+ownerdraw? kA).
-
Es gibt in der Tat Standard-Töne für Fehler etc.
Für Fehler solltest du das verwenden:MessageBeep(MB_ICONHAND);Weiters gibt es eine Funktion um das Fenster "flashen" zu lassen - die wird von vielen Applikationen verwendet um auf bestimmte Ereignisse hinzuweisen (Mail angekommen, Operation abgeschlossen etc.):
FLASHWINFO flashInfo = {}; flashInfo.cbSize = sizeof(FLASHWINFO); flashInfo.hwnd = windowHandle; flashInfo.dwFlags = FLASHW_CAPTION | FLASHW_TRAY; // fensterleiste und taskbar-botton flashen flashInfo.uCount = 5; // 5 mal flashen flashInfo.dwTimeout = 0; // default verwenden FlashWindowEx(&flashInfo);Wenn du beides kombinierst, sollte das schonmal besser als garnix sein

Allerdings... vielleicht machst du aus der Zeile in der Status-Bar gleich ein Log-Fenster, bzw. ein read-only Edit-Control in deinem Fenster, wo du eben Log-Messages reinschreibst. Da könntest du dann auch etwas mehr als nur Fehler reinschreiben, und Änderungen da drin sind auch etwas auffälliger als nur die Änderung in der Status-Leiste, da sich etwas bewegt, wenn du eine neue Zeile da einträgst (nämlich der bereits vorhandene Text nach oben).
Da könntest du dann auch Sachen reinschreiben wie "Beginning to do xyz", "Finished sub-task so-und-so", "Failed to blubb", "Re-trying blah", "Giving up blöbber" etc.
Wäre von der Usability vermutlich besser, und ist nicht wirklich sehr schwer zu implementieren.
-
danke hustbaer
klappt super! Und ich bin noch überlegen ob ich auch andere Sachen reinschreibe.
-
Warum blendest du die Zeile nicht ganz aus, wenn kein Fehler aufgetreten ist?
In vielen Fällen genügt das schon (mit FlashWindow ist natürlich auffälliger...) - vor allem aber wird der Nutzer nicht mit unnützen Informationen überfrachtet. (Ich geh' mal davon aus, daß "kein Fehler aufgetreten" der Normalfall ist...
)
-
lol

jo könnte ich natürlich machen, aber da steht ziemlich oft was
ich nehme das auch z. B. her für solche Sachen: "Bitte erst edit feld ausfüllen bevor sie abschicken klicken"...
-
Ich würde für die schwerwiegenderen Fälle noch ein kleines Icon danebenknallen - Fehler oder Warnung - und gut ist.
-
hmm, kann man auch den normalen static Text flashen? Vielleicht wenn es nen border hat?
-
Flashwindow flasht die Titelzeile und den Taskbar-Button, hat das static control beides nicht.
Du könntest mittels SetTimer und ShowWindow das Control selbst blinken lassen.
Ist aber ungewöhnlich (und nach meinem Geschmack auch ein bißchen aufdringlich)