(het artikel)
Allereerst, weer een geweldig artikel over het uitbreiden van Delphi, klasse!
Ik heb alleen een hele kleine opmerking over je gebruik van GetWindow om zo door alle windows heen te lopen. Het werkt, maar MS raadt aan om liever EnumChildWindows te gebruiken met een callback functie, de reden: (quote uit de Platform SDK help)
Remarks
The EnumChildWindows function is more reliable than calling GetWindow in a loop. An application that calls GetWindow to perform this task risks being caught in an infinite loop or referencing a handle to a window that has been destroyed.
Om het compleet te maken, zo zou de code er dan ongeveer uit komen te zien (even uit m'n hoofd, vergeef me dat ik 't nog niet getest heb ):
Code:
function ToggleNVsCallback(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
var
cClassName: array[0..255] of Char;
begin
// Bepaal de class van het "window"
FillChar(cClassName, SizeOf(cClassName), #0);
GetClassName(hWnd, @cClassName, SizeOf(cClassName));
// Als het een TContainer is dan is het een non-visual component.
// Toggle deze.
if String(cClassName) = 'TContainer' then
if not IsWindowVisible(hWnd) then
ShowWindow(hWnd, SW_SHOW)
else
ShowWindow(hWnd, SW_HIDE);
// Geef aan Windows door dat we door willen gaan met zoeken
Result := True;
end;
procedure ToggleNVs(Form: TCustomForm);
begin
// Vraag alle child window handles aan
EnumChildWindows(Form.Handle, @ToggleNVsCallback, 0);
end;
Voorderest, toppie! Van de week maar eens al die uitbreidingen installeren
Bookmarks