c ++ - Passerer parametre til et vinduesopkald i Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er ny til programmering mod Windows-opkald, og jeg forsøger at finde ud af en måde at overføre en parameter til lpfnWndProc-funktionen. Jeg har følgende kode:


HWND hwnd;
WNDCLASS wc1 = {0};

wc1.lpszClassName = TEXT( "sample" );
wc1.hInstance     = 0;
wc1.hbrBackground = GetSysColorBrush(COLOR\_3DFACE);
wc1.lpfnWndProc   = DepthWndProc;


Bemærk linjen wc1.lpfnWndProc = DepthWndProc; Kan jeg overføre DepthWndProc en parameter? Hvis ja, hvordan ser syntaxen ud?


Tak!

Bedste reference


Du tildeler en funktionspeger her, ikke ringe. Således er der ingen argumenter.


At skulle gemme ekstra tilstand med en HWND er ikke usædvanlig, et meget almindeligt krav til en C ++-klasseindpakning omkring et vindue. Du skal f.eks. Beholde et kort <> for at hente wrapperobjektet fra vinduets håndteringsværdi. Brug af SetWindowLongPtr () med GWLP\_USERDATA er også muligt, men mindre ideel, hvis du ikke kontrollerer vinduesoprettelsen.

Andre referencer 1


Du kan ringe DepthWndProc direkte og videregive sine parametre, men hvorfor i alverden ville du gøre det? Det er ikke sådan, at Windows programmering virker.


Du giver Windows en funktion til at ringe, når det har en besked at sende til dit vindue.