c ++ - Hvordan kan jeg kontrollere, om et vindue har synlige scrollbars ved hjælp af hans HWND?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne kontrollere, om vinduet i en ekstern applikation har den lodrette eller vandrette rullepanel synlig ved hjælp af HWND (håndtaget) i vinduet, findes der nogen WinApi-funktion for at få disse oplysninger? Jeg prøver virkelig funktionen GetScrollInfo, men det ser ud til, at der ikke hentes oplysninger om synligheden af ​​rullebjælkerne. [9]

Bedste reference


Hvad med GetScrollBarInfo med OBJID\_HSCROLL eller OBJID\_VSCROLL [10]



  Hvis idObject er OBJID\_CLIENT, og det vindue, der er angivet af hwnd, ikke er en styring af systemrullebjælken, sender systemet SBM\_GETSCROLLBARINFO meddelelsen til vinduet for at hente rullefeltoplysninger. Dette gør det muligt for GetScrollBarInfo at fungere på en brugerdefineret kontrol, som efterligner en rullepanel. Hvis vinduet ikke håndterer SBM\_GETSCROLLBARINFO beskeden, fejler funktionen GetScrollBarInfo ikke.



Du kan teste rgstate i strukturen SCROLLBARINFO, der er et STATE\_SYSTEM\_INVISIBLE flag der. [11]





En anden mulig måde er at teste GetWindowLong(hWnd, GWL\_STYLE) and (WS\_HSCROLL or WS\_VSCROLL) <> 0