J'ai une fenêtre d'application dans laquelle j'ajoute le style WS_THICKFRAME et j'ai supprimé le style WS_CAPTION. Lorsque la fenêtre est agrandie, je veux masquer WS_THICKFRAME, mais conserver la fonctionnalité Aero-Snap, j'ai donc modifié mon gestionnaire pour WS_NCCALCSIZE pour renvoyer un recto gonflé par rapport à la taille des bordures de la fenêtre.Ne pas dessiner une épaisseur sur un CWnd
C'est, la partie importante du code du gestionnaire de WS_NCCLIENTSIZE ressemble à ceci:
...
CRect rc(lpncsp->rgrc[0]);
if (IsZoomed())
{
int borderSize = GetSystemMetrics(SM_CYSIZEFRAME);
rc.InflateRect(borderSize,topOff+borderSize,borderSize,borderSize);
}
else
rc.InflateRect(0,topOff+0,0,0);
lpncsp->rgrc[0] = rc;
...
ce code fait effectivement le WS_THICKFRAME caché.
Seul le problème est que lorsque la fenêtre perd le focus ou reprend le focus (lorsqu'elle est agrandie), WS_THICKFRAME est dessiné dans la limite. Y a-t-il un message dans lequel je peux retourner le rectangle gonflé ou au moins réajuster la taille de la fenêtre pour masquer à nouveau WS_THICKFRAME lorsque le focus de la fenêtre est activé/désactivé?
Si vous définissez l'option/SUBSYSTEM pour Vista/W7, le programme fonctionnera-t-il sous XP? –
Non, ce ne sera pas. –
Ok, alors ce n'est pas une option. Merci néanmoins pour l'info. –