C ++-program reagerer ikke på flise/kaskadvindue fra proceslinjen

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et kompliceret program i C ++ (hybrid af old-school Win32 og WTL), der ikke reagerer på nogen proceslinje flise/kaskade anmodning (dvs. højreklik på proceslinjen og vælg 'Cascade Windows' eller 'Vis vindue side om side') . Når jeg bruger spion ++, fandt jeg at ingen af ​​mine vinduer modtager nogen vinduemeddelelse, mens andre programmer (i dette tilfælde Firefox) får en række WM\_GETMINMAXINFO, WM\_SIZE, WM\_PAINT ...


Mit vindue er stylet som WS\_OVERLAPPEDWINDOW. Jeg opretter flere skjulte vinduer, før du opretter ramvinduet. Jeg har testet på flere forskellige OS'er, og symptomerne er de samme. Er der nogen begrænsninger eller forudsætninger for, at Windows Shell skal sende meddelelser til mit ramvindue?

Bedste reference


Windows sender beskederne til vinduet, som er repræsenteret af proceslinjeknappen.


I din app, og jeg gætter lidt her, er det et af de skjulte vinduer, der er repræsenteret af proceslinjeknappen. Vinduestyreren har ikke vundet nogen af ​​disse meddelelser til et skjult vindue.


Du kan løse problemet ved at arrangere, at hovedvinduet er det, der er repræsenteret i proceslinjen. Du kan læse alt om de gory detaljer om hvilke vinduer der vises i proceslinjen i det fremragende MSDN emne med titlen Window Features. [1]