Lors de la création d'une classe de fenêtre pour une utilisation avec un DialogBox vous devez ajouter à DLGWINDOWEXTRA cbWndExtra. Si vous ajoutez un espace de données supplémentaire à une classe DialogBox accessible par GetWindowLongPtr, devriez-vous ajouter DLGWINDOWEXTRA pour accéder à cet espace supplémentaire?Si vous ajoutez un espace de données supplémentaire à une classe DialogBox accessible par GetWindowLongPtr, devez-vous ajouter DLGWINDOWEXTRA pour accéder à cet espace supplémentaire?
(je vous avoue que je pense que je connais la réponse, et de cette façon le code ne se casse pas. Mais, je veux vous assurer que mes raisons concordent avec la sagesse collective.)
La principale raison pourquoi les dialogues sont utilisés avec leur propre classe (plutôt que par défaut) est de permettre à chaque classe de dialogue d'avoir sa propre icône. Deux éléments séparés de données supplémentaires sont également attachés à chaque fenêtre.
...
wndclass.cbWndExtra = DLGWINDOWEXTRA+EXTRASPACE;
wndclass.lpfnWndProc = (WNDPROC) DefDlgProc;
wndclass.hIcon = LoadIcon(hInstance, "ICON_MAIN");
wndclass.lpszClassName = WND_CLASS_VLIST_POPUP;
wndclass.hIconSm = LoadImage(hInstance,
"ICON_MAIN",
IMAGE_ICON,
16,
16,
LR_DEFAULTCOLOR);
...
modifier tardif (supprimé le GWLP_USERDATA incorrect et remplacé par 0):
la question est effectivly:
GetWindowLongPtr(hWnd, 0 + DLGWINDOWEXTRA + SOMETHING_IN_EXTRASPACE);
ou
GetWindowLongPtr(hWnd, 0 + SOMETHING_IN_EXTRASPACE);
?
Apparemment, cette question est considérée subjective par le bot d'aide? Je parie que c'est l'expression "compte avec la sagesse collective". –
Helper bot n'est pas si intelligent. :) C'est le "vous" dans le sujet ... Le bot pense que vous faites référence à moi à la place de vous-même. – Shog9
La prochaine fois, je vais utiliser la voix passive! –