Fenster wird nicht angezeigt

09/01/2015 - 23:55 von Klaus Ketelaer | Report spam
Hallo zusammen,

jahrelang hat folgender Code unter allen Windows-Versionen ab Windows
2000 ohne Probleme funktioniert. Auch unter Windows 7 64 arbeitete der
Code seit mindestens 2 Jahren ohne Probleme

Call LockWindowUpdate(hWindow)
lResult = ShowWindow(hTray, SW_HIDE)
lResult = ShowWindow(hWindow, SW_SHOW)
lResult = SetParent(hWindow, hDesktop)
lResult = SetWindowPos(hWindow, HWND_TOP, m_ScreenPos.Left,
m_ScreenPos.Top, m_ScreenPos.Width, m_ScreenPos.Height, SWP_NOACTIVATE)
Call LockWindowUpdate(0&)

' Debug.Assert false

Hier wird die Taskleiste ausgeblendet, ein Steuerelement von einer
versteckten Form auf den Desktop verschoben und an die Größe der
Taskleiste angepasst. Dann wird die "Ersatz-Taskleiste" eingeblendet.

Das funktionierte immer problemlos.

Seit einigen Tagen erscheint an Stelle des Steuerelements nur noch
eine schwarze Flàche.

Eigene Tools und auch Spy++ sagen mir, dass das Steuerelement an der
richtigen Stelle ist, die richtige Größe hat, und auch sichtbar ist.
Der Parent ist auch der Desktop. Das Control wird jedoch nicht
angezeigt und auch WindowsFromPoint findet nur den Desktop an der
Position.

Wenn ich jedoch nach dem oben abgebildeten Code einen Breakpoint setze,
oder das Debug.Assert false aktiviere, dann wird das Control korrekt
angezeigt. Wenn ich den Code mit F5 weiter ausführen lasse, wird alles
korrekt angezeigt. Lasse ich den Code durchlaufen erscheint nichts.

Irgendwie bin ich ratlos. hat jemand eine Idee, woran das liegen könnte?

Gruss Klaus
 

Lesen sie die antworten

#1 Klaus Ketelaer
11/01/2015 - 17:29 | Warnen spam
Am 09.01.2015 um 23:55 schrieb Klaus Ketelaer:
[...]

Oh Mann, was bin ich blöd...

Da durchsucht meine Fenster-Hook-Routine bei gewissen Parametern nur
die Caption neuer Fenster mit z.B.

Found = Instr(1, ZuDurchsuchenderText, FensterText)

und ich Depp merke einfach nicht, dass ich die Parameter vertauscht
habe, sodass jedes mal, wenn ein Fenster keinen Text hat, Selbiges
aus dem Speicher geschossen, oder minimiert wird.

instr(1, "123456", "") liefert nunmal 1/True zurück und nicht 0/False.

(Obwohl ich das irgendwie nicht so ganz logisch finde)

Und weil mein Desktop viele Fenster ohne Text verwendet, war hier
die Verwirrung in der letzten Zeit recht groß;-)

Irgendwie gemein dieser Fehler...

Gruß Klaus

Ähnliche fragen