2010-08-12 3 views
0

J'utilise un SDK tiers qui obtient hwnd (handle de fenêtre) et peint quelque chose sur ma fenêtre. Et je veux spécifier la région de peinture de fenêtre (gauche, droite, haut, bas)? Comment est-ce possible de le faire? Je trouve la fonction WINAPI SetWindowRgn, mais ce n'est pas bon pour moi parce que cette fonction spécifie toute la région de la fenêtre. Je dois spécifier seulement la zone de peinture de fenêtre.Spécifier la région de peinture de fenêtre dans WINAPI

Répondre

1

S'il est possible de donner à cette bibliothèque un HDC au lieu de la poignée de la fenêtre - vous devriez le faire. En d'autres termes, obtenez le dessin DC pour la zone client de votre fenêtre (GetDC), créez la zone de découpage nécessaire et définissez-la (SelectClipRgn).

Dans le cas où votre bibliothèque insiste sur l'acceptation de la poignée de fenêtre - je peux proposer la solution suivante:

dans votre fenêtre créer une autre fenêtre enfant, définissez la région appropriée pour elle. Et donnez le handle de cette fenêtre à votre bibliothèque.

+0

Merci, j'ai créé une autre fenêtre enfant. – kesrut

3

SetWindowRgn() est exactement ce dont vous avez besoin. Vous pouvez créer votre région à partir d'un rectangle en utilisant CreateRectRgn(). Une bonne introduction aux régions de fenêtre peut être trouvée here.

Vous pouvez également modifier la zone non-client de votre fenêtre, mais je ne le recommanderais pas, car il a plusieurs effets secondaires.

Questions connexes