Page 1 sur 1
L'adresse mémoire de la classe d'une fenêtre par son handle?
Publié : mar. 21/juin/2005 12:45
par Lna
(Obtenir l'adresse mémoire de la classe d'une fenêtre par son handle)
Bonjour à toutes et à tous,
Sauriez-vous s'il vous plaît, s'il existe une instruction API qui retourne l'adresse mémoire, où est stockée la classe d'une fenêtre de sa structure WNDCLASS (comme au moment de sa création uniquement par API, par exemple) ?
Merci d'avance
A +
Publié : mar. 21/juin/2005 19:38
par erix14
Je ne pense pas que l'on puisse avoir l'adresse mémoire où est stockée la classe ( Window la garde secrète

) Mais on peut en avoir une copie !

grâce aux fonctions GetClassName et GetClassInfoEx
Regarde mon petit exemple :
Code : Tout sélectionner
If OpenWindow(0, 100, 200, 200, 200,#PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Window Class")
handle = WindowID()
StartDrawing(WindowOutput())
class$=Space(255)
GetClassName_(handle,@class$,Len(class$))
class$ = Left(class$,Len(class$))
wc.WNDCLASSEX
wc\cbSize = SizeOf(WNDCLASSEX)
If GetClassInfoEx_(GetModuleHandle_(#Null),@class$,@wc)
DrawingMode(1)
Locate(10,30)
DrawText("Class : "+PeekS(wc\lpszClassName))
Locate(10,50)
DrawText("WndProc : "+Hex(wc\lpfnWndProc))
Locate(10,70)
DrawText("Style : "+Hex(wc\style))
;typedef struct _WNDCLASSEX { // wc
; UINT cbSize;
; UINT style;
; WNDPROC lpfnWndProc;
; int cbClsExtra;
; int cbWndExtra;
; handle hInstance;
; hIcon hIcon;
; hCursor hCursor;
; HBRUSH hbrBackground;
; LPCTSTR lpszMenuName;
; LPCTSTR lpszClassName;
; hIcon hIconSm;
;} WNDCLASSEX;
EndIf
StopDrawing()
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
EndIf
End
Publié : mer. 22/juin/2005 11:36
par Lna
Bonjour erix14,
Je te remercie pour ta réponse, ainsi que pour le temps passé à réaliser le programme d'exemple.
Oui, c'est la bonne API pour copier la classe d'une fenêtre.
Vue le nombre des API avec leurs noms pas toujours explicites, il devient bien difficile de s'y retrouver.
Encore un grand merci
A +