Desktop neuzeichnen nach TextOut (Repaint)
-
Hallo Leute,
ich mach (versuche) eine Art OSD (OnScreenMenu) wie beim TV, auf
den Kompletten Desktop.Ich schreibe einmal pro Sekunde mit TextOut die Uhrzeit auf dem Desktop,
wie kann ich den Desktop neuzeichnen ohne diese Ausgabe, damit die neue
Zeit nicht übermalt wird?Hier mal der Code:
HWND hwnd = GetDesktopWindow(); HDC ddc = GetWindowDC(hwnd); RedrawWindow(hwnd,NULL,NULL,RDW_ALLCHILDREN); // HIER liegt mein Frage LPCTSTR txt = TimeToStr(Now()).c_str(); //TimeToStr und Now von BCB HFONT hFont = CreateFont(-MulDiv(24, GetDeviceCaps(ddc, LOGPIXELSY), 72), 0, 0, 0, 700, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, "Arial"); SelectObject(ddc,hFont); SetBkMode(ddc, TRANSPARENT); SetTextColor(ddc,RGB(255,255,0)); TextOut(ddc,10,10," ",14); TextOut(ddc,10,10,txt,8); ReleaseDC(hwnd,ddc);gruß Micha
-
Ich denke, dass du über direktes Zeichnen auf den Desktop keine sauberen Ergebnisse (ohne Flackern) bekommst. Du könntest entweder versuchen ein transparentes Fenster darüber zu legen, oder mittels Hooking und / oder SubClassing die entsprechenden Nachrichten abzufangen

-
Hmmm,
meines Wissens funktioniert Transparentes Fenster nicht bei win98.
Die Message abzufangen habe ich auch schon daran gedacht und halt den
ursprünglichen Hintergrund zwischen zu speichern und und und...Das Flackern (ist bei mir nicht) zu Verhindern ist im Moment nicht mein
Ziel, ich gebe in der linken-oberen Ecke die Uhrzeit aus, und per Timer
soll 1 Sekunde Später dies überschrieben werden, nur das wird auf die
alte Uhrzeit drauf gemalt, daher muß ich den alten Hintergrund wieder
Herstellen.Meine jetzige Idde ist:
Ich fang die Paint Message ab, und speichere den neuen Hintergrund, den mein
Timer als Hintergrund Brush verwendet.Wenn es bessere oder einfachere Möglichkeiten geben sollte, bitte mitteilen.
gruß Micha
-
promicha schrieb:
meines Wissens funktioniert Transparentes Fenster nicht bei win98.
Doch!
Du könntest auch ein STATIC auf dem Desktop platzieren.
-
WebFritzi schrieb:
Doch!
Du könntest auch ein STATIC auf dem Desktop platzieren.
Ich habe schon mal experimental mit Trans. Windows gearbeitet,
das Resultat war nicht berauschend und bei XP super.Ne STATIC drauf hauen ist ne Idee, probiere ich mal aus ob es
für mich zu genüge kommt.Ich habe zwischenzeitlich einiges versucht was auch hinhaut, aber
es sollte so einfach wie möglich sein und nicht viel an Resourcen
verbrauchen.Ich probier das aber auch nochmal mit dem Glass-Window, vieleicht
bekomme ich es ja sauber, ist 2 Jahre her wo ich mich damit beschäftigt habe,
jetzt weiß ich mehr.OFFTOPIC<<<
@WebFritzi
ich Plane im Spätsommer oder ehr ein kostenloses DevTool ins Net zu schmeisen,
mit einigen Funktionen (AutoClass, VarManeger etc..) also einige Hilfreiche
Funktionen für Progger, dein RegionBuilder passt da rein und vieleicht noch
anderes, wenn du lust hast (auch andere) mittzumachen und paar Klassen zur verfühgung
stellen kannst, melde dich dann bei mir unter devtool@24day.de .
Und wenn du jetzt meinnst, er will nur an mein RengBuilder-Code, ja will ich,
so brauche ich es nicht selbst schreiben, die Quelle wie es geht habe ich auch
und verstehen tue ich es auch
ist auch gar nicht so schwer.
Aber ich will mir auch Arbeit erleichtern, sozusagen Progger4Progger.OFFTOPIC_END<<<