toolkit\miniwdgt.c) vilken inneh†ller
en absolut minimal widget utan n†gon uppbl†st funktionalitet. Allt denna widget g”r „r att visa
upp ett fr†getecken.
Denna mini-widget lades till f”r att visa dig n†got att starta med. Den kan definitivt f”rb„ttras. Den g”r inte
a) "init" export (ordningstal 1) blir anropad endast en g†ng av &xcenter; n„r
din DLL blir laddad. DLL'en kan bli laddad i andra situationer „n f”r skapande av widgets, s†
r„kna inte med att det h„r alltid „r fallet. Vid init, b”r DLL'en registrera widgetens PM f”nsterklass
(genom att anropa WinRegisterClass). Som till„gg, kan den importera funktioner fr†n
XFLDR.DLL, vars modulhandtag ges till den (detta „r en option). Emellertid, den m†ste
alltid returnera en pekare till ordningen hos
XCENTERWIDGETCLASS strukturer i DLL'en
s† att &xcenter; k„nner till allt om klasserna i DLL'en.
Se toolkit\miniwdgt.c f”r hur det h„r „r utf”rt.
b) "uninit" export (ordningstal 2) blir anropad n„r DLL'en „r urladdad av &xcenter;. Den kan utf”ra en st„dning, om n”dv„ndigt.
c) "query version" export (ordningstal 3) blir anropad till och med f”re "init" exporten f”r att kontrollera &xwp;'s versionsnummer som den widgeten erfordrar.
fnwpSampleWidget proceduren. "Init" export „r ansvarigt f”r
anrop av WinRegisterClass hos den f”nsterproceduren f”r att skapa en PM f”nsterklass fr†n den.
Detta „r det vanliga v„xlingsfall sakerna som anv„nds av varje PM f”nsterprocedur. Det finns dock ett par extra ”verv„ganden som m†ste g”ras, vilka „r f”rklarade nedanf”r.
WM_CREATE, m†ste widgeten lagra
XCENTERWIDGET pekaren som den erh†ller med mp1
i dess QWL_USER f”nsterord. Detta „r varf”r mini-widget exemplet anropar
WinSetWindowPtr(hwnd, QWL_USER, mp1); p† WM_CREATE.
WM_CONTROL, skall den hantera tillk„nnagivanden fr†n &xcenter;. &xcenter;
kommer att skicka WM_CONTROL meddelanden till widgeten n„r den vill veta widgetens storlek, till exempel.
Tillk„nnagivande-koderna som &xcenter; anv„nder med WM_CONTROL „r listade i
toolkit\center.h. Det kommer troligtvis att bli fler av dom i framtiden.
WinDefWindowProc.
Med widgets, „r detta annorlunda: du m†ste alltid passa oprocessade meddelanden till
"&xcenter; standard widgetprocedur", vars adress ges till din widget i
XCENTERWIDGET
strukturen p† WM_CREATE i pfnwpDefWidgetProc f„ltet. (Ja, detta „r
sk„let till att du m†ste lagra den strukturen ocks† i dina f”nsterord.)
Om du inte skickar oanv„nda meddelanden vidare, kommer du att allvarligt skada widgetens funktionalitet. Žnnu v„rre, du kommer att orsaka minnesl„ckor d„rf”r att standard widgetproceduren „r ansvarig f”r uppst„dning av resurser och viktiga &xcenter; tillk„nnnagivanden.
WM_DESTROY, m†ste du alltid, alltid
passa WM_DESTROY till pfnwpDefWidgetProc. Annars kan inte &xcenter; st„da upp din widgets
resurser p† ett snyggt s„tt.