Aktiv/Inaktiv
-
Hallilhallo,
ich denke meine Frage wird nicht allzu unbekannt sein, jedoch konnte ich sie - mit Sicherheit aufgrund falscher Sucheingaben - nicht finden.
Meine Applikation sollte, wenn möglich in jeder Situation kongruent arbeiten, doch schon wenn ich ein anderes Fenster (Applikation) aufrufe, und mein Fenster nun zwar nicht minimiert, sondern nur im Hintergrund schwebt, ist es ziemlich aus.
Ich wäre sehr erfreut, wenn mich jemand aufklären könnte.
lg Max
-
Also ich versteh überhaupt nicht was du willst tut mir leid.
was meinst du mit konkruent? http://de.wikipedia.org/wiki/Kongruenz ?
Was bedeutet "ist es ziemlich aus"
Also damit kann sicherlich keine etwas anfangen.schirrmie
-
Kongruent heißt deckungsgleich, das Adjektiv lernt man in der 5. Klasse in der Schule.
Nochmal, wenn mein Fenster nicht mehr im Vordergrund ist tut es nicht mehr das was es soll, zb in ein Child-Fenster zeichnen. Das tut es erst, sobald ich es wieder in den Vordergrund hole, obwohl der Befehl zum Zeichnen bereits sehr viel früher kam.
Hoffe jetzt ist es klar.
lg Max
-
MaDsTyLe schrieb:
Kongruent heißt deckungsgleich, das Adjektiv lernt man in der 5. Klasse in der Schule.
und das was du gerade gesagt hast, nennt man arrogant und überheblich und lernt man zum Beispiel in kursen wie "Wie mache ich mir möglichst wenig Freunde" oder "Wie werde ich in einem Forum möglichst schnell ignoriert"
MaDsTyLe schrieb:
Hoffe jetzt ist es klar.
nö
bei mir gibt es das problem nie, also wirst du i-wo in deinem code was drin haben, was das verursacht. mir ist bloß leider meine glaskugel runter gefallen, also müsstest du versuchen das problem weiter einzugrenzen, am besten auf ein stück code...
-
Hey BitWax,
mein Wille war es nicht, arrogant zu klingen, aber nun mal ehrlich:
"Ein kongruent arbeitendes Programm" ist schwer missverständlich, wenn man das Adjektiv "kongruent" übersetzen kann.Wie dem auch sei, mein Hauptfenster soll dem in ihm liegenden Edit-Fenster einen Text hinzufügen:
void Edit_AddText(HWND hWnd,LPCTSTR lpText) { DWORD dwStart = 0,dwEnd = 0; int nLen = GetWindowTextLength(hWnd); SendMessage(hWnd,EM_GETSEL,(WPARAM)&dwStart,(LPARAM)&dwEnd); SendMessage(hWnd,EM_SETSEL,(WPARAM)nLen,(LPARAM)nLen); SendMessage(hWnd,EM_REPLACESEL,(WPARAM)FALSE,(LPARAM)lpText); SendMessage(hWnd,EM_SETSEL,(WPARAM)dwStart,(LPARAM)dwEnd); return; } Edit_AddText(hEdit,"Hallo"); UpdateWindow(hEdit);So, angenommen jetzt liegt ein anderes Fenster über meinem, aber so, dass ich das Editfeld sehen kann. Dann kommt der Befehl Edit_AddText() aber es passiert nichts. Jetzt fahre ich mit der Maus auf Fenster und schwupp, "Hallo" erscheint. Erscheinen soll es aber sofort, egal ob Vorder- oder Hintergrund.
Was tun?
lg Max
-
Zeichnest du das Edit-Feld selber oder veränderst du es in i-einer form? (abgesehen von AddText () usw...)
-
Öhm ich fange die WM_CTLCOLORSTATIC ab und färbe das Fenster, aber das kanns ja wohl nicht sein.
Der Aufruf sieht ganz einfach so aus:
hEdit = CreateWindow("EDIT",NULL, WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_READONLY|WS_VSCROLL|ES_AUTOVSCROLL, 10,10,570,300,hWnd,NULL,hInstance,NULL);Irgendwas problematisch?
lg Max
PS: Danke für Deine Antworten.
-
öhhmmm welches Fenster? das Edit-Feld oder das Programmfenster?
am CreateWindow Aufruf ist nichts problematisch
-
^^
Mit WM_CTLCOLORSTATIC färbe ich das hEdit:
case WM_CTLCOLORSTATIC: //Hauptfenster-MSG { if ((HWND)lParam == hEdit) { return (LRESULT)CreateSolidBrush(RGB(255,255,255)); //hEdit weiß färben } break; }lg Max
-
achso, dann musste wahrscheinlich noch WM_ERASEBKGND abfangen

-
Hmm gut, sollte kein Problem sein^^
case WM_ERASEBKGND: break;Aber was mach ich letztendlich damit?^^
lg Max
-
wenn ich mich nicht irre, zeichenoperationen ausführen, die dann das edit-feld zeichenen also so mehr oder weniger

vllt. kommt ja mal jmd. vorbei der sowas schonmal gemacht hat und erklärt dir das genauer
-
Hehe, habt Ihr gehört?

Vielen Dank schonmal bis hierher!

lg Max
-
Probier mal noch ein InvalidateRect() vor UpdateWindow().
-
Hey, danke für Deine Antwort.
Hab ich versucht, bringt aber leider nichts.
lg Max