Cum se depășește eroarea "1400: mâner de fereastră nevalid"?
Creez un fir în care va fi necesar să prindeți niște mesaje. Prin urmare, în proiectant creez o fereastră:
# xA0; m_hook_window: = TWinControl.Creați (zero);
# xA0; m_hook_window.Visible: = false;
# xA0; m_hook_window.Left: = - 1;
# xA0; m_hook_window.Top: = - 1;
# xA0; m_hook_window.Width: = 1;
# xA0; m_hook_window.Height: = 1;
# xA0; m_hook_window.ParentWindow: = Application.Handle;
Ei bine, îmi schimb mâna pe cont propriu.
Totul merge bine.
Opresc firul din program și sună Distruge, # xA0 și pe linie
# xA0; m_hook_window.Free;
Se produce o eroare EOSerror: "Eroare sistem. Cod 1400: mâner fereastră nevalid". Cum să depășim?
> Creez un flux în care va fi necesar să prindeți ceva
> mesaje. Prin urmare, în proiectant creez o fereastră:
În general, firul poate procesa (unele) mesaje
și fără fereastră.
> Ei bine și eu schimb agentul de ieșire pe.
> Totul funcționează bine.
> Am oprit un flux din program și am cauzat distrugerea, # xA0 și pe
> rând
> # xA0; m_hook_window.Free;
Acest act este foarte îndoielnic.
Și aplicația win32?
În opinia mea, AllocateHWND nu este sigură în legătură cu firul.
2 Leonid Troyanovsky: mulțumesc. Astfel câștigat fără excepție.
Ei bine, pentru a atribui ceva la m_hook_window.ParentWindow. Și ce altceva poți să atribui?
> # xA0; m_hook_window.Free;
> Acest act este foarte îndoielnic.
P.S. Aplicație Win32.
Și de ce a fost rău versiunea mea originală? La urma urmei, a accesat doar un thread acest m_hook_window?
De ce există "siguranța firului" aici? Din cauza prezenței mesajelor de aplicare.proces în flux?
>> # xA0; m_hook_window.ParentWindow: = Application.Handle;
>> De ce?
> Ei bine, pentru a atribui ceva la m_hook_window.ParentWindow. A
> ce altceva puteți atribui?
Mânerul ferestrei a fost creat în același fir.
Deși, aparent, nu foarte reușit este ideea utilizării unei ferestre copil.
>> # xA0; m_hook_window.Free;
>> Acest act este foarte îndoielnic.
Dacă chiar de la început, chiar crearea ferestrei este îndoielnică,
Dacă este creat în constructor, nu este o fereastră
creat fir.
Ei bine, și cu distrugerea nu este totul netedă, controalele sunt incluse
în controalele și așa mai departe. Plus consistenta -
La sfârșitul ferestrei flux nu mai este (fereastra - proprietatea de flux).
> 2 Embankments C. deci pot folosi AllocateHWND?
> Poate ceva în plus. măsuri de luat pentru a crește
Memorie: 0,74 MB
Timp: 0,085 sec