Ga naar inhoud

Alweer VBA: Min Max Buttons


Aanbevolen berichten

Min Max Buttons zijn twee knopjes in de "blauwe" balk, en die knopjes staan naast het "kruisje" (het knopje sluiten). Met Min minimaliseer je het scherm, met Max maximaliseer je het scherm: standaard Windows handelingen kortom. Dat kan wel met een MS Access formulier, maar kan dat ook met een MS Word formulier?
Link naar reactie
Ik heb al een beetje lopen rommelen - er gebeurde helaas wienig. Op een site waarnaar flvanSon wij in ander onderdeel van dit forum een verwees - zo'n 10 min. nadat ik een vraag zelf had opgelost! - las ik echter dat "the hWnd property of Word's various windows" niet beschikbaar zijn in VBA - geen flauw idee wat dat betekent, maar veel goeds voorspelt het niet.
Link naar reactie
De h staat voor handle en Wnd is kort voor Window oftewel venster. Windows gebruikt een handle (uniek nummer) als identificatie voor een venster. Als er geen hWnd voor een Word venster is dan kun je ook een flink aantal api functies niet aanroepen. In de code op de site van Andrea hebben vier van de vijf functies de hWnd nodig. Je kunt een hWnd met een functie opvragen, kijk maar naar het volgende simpele voorbeeld: [code:1:1e2911421d]Option Explicit Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub Form_Load() Dim WinWnd As Long, Ret As String 'Vraag naar de exacte titel van het venster Ret = InputBox("Geef de exacte titel van het venster:") 'Zoek het venster WinWnd = FindWindow(vbNullString, Ret) If WinWnd = 0 Then MsgBox "Kon het venster niet vinden ..." Else MsgBox "hWnd = " & WinWnd End If End Sub[/code:1:1e2911421d] Dit gaat uiteraard alleen op als die word vensters een titel hebben Oh ja, als je geen tekst in het tekstvak doet dan vindt hij toch ergens een hWnd, heb alleen geen zin om uit te zoeken waarvan. _________________ I'm not a complete idiot, some parts are missing. [ Dit Bericht is bewerkt door: DarkScribe op 2002-03-09 19:54 ]
Link naar reactie
Dat werkt inderdaad prima. Bedankt! Inmiddels had ik overigens ontdekt dat de functie GetActiveWindow() uit user32 hetzelfde resultaat geeft, maar jouw Sub lijkt zo op het eerste gezicht beter, want niet afhankelijk van de vraag welk Window nu actief is (of is dat onzin?). Enfin, ik heb de Code van de site van Andrea gebruikt en ... er verschijnen zowaar Min Max Buttons op het form zonder dat de boel crasht. De buttons doen ook wat ze moeten doen, dus we zijn er bijna. Nog niet helemaal: mijn buttons verschijnen namelijk pas nadat je of met de muis over hun "plaats" beweegt of de desbtreffende titelbalk aanklikt! Iemand enig idee waar ik moet zoeken om die (laatste) hobbel te nemen?
Link naar reactie
Het bleek makkelijker dan ik dacht: omdat ik eerst GetActiveWindow() gebruikte, had ik de MinMaxButtons-Sub maar "aangeroepen" in Sub UserForm_Activate(). Of het echt nodig was om die Sub daar te roepen weet ik eigenlijk niet, maar dan moet je kennelijk wel eerst de titelbalk aanraken om het UserForm te activeren (dat klinkt in ieder geval logisch). Maar met de formule van DarkScribe werkt het ook prima als je de desbtreffende Sub aanroept in Sub UserForm_Initialize(). En dan ziet alles er precies zo uit als ik het gehoopt had! Kortom: eind goed, al goed. Dank voor alle suggesties - en dat geldt dus vooral voor DarkScribe!
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...