Dela via


Kommandoroutning

Ditt ansvar för att arbeta med kommandon är begränsat till att skapa anslutningar för meddelandekarta mellan kommandon och deras hanteringsfunktioner, en uppgift som du använder MFC-klassguiden för. Du måste också skriva koden för kommandohanterarna.

Windows-meddelanden skickas vanligtvis till huvudramfönstret, men kommandomeddelanden dirigeras sedan till andra objekt. Ramverket dirigerar kommandon via en standardsekvens av kommando-målobjekt, varav ett förväntas ha en hanterare för kommandot. Varje kommando-målobjekt kontrollerar sin meddelandekarta för att se om det kan hantera det inkommande meddelandet.

Olika kommandomålklasser kontrollerar sina egna meddelandekartor vid olika tidpunkter. Vanligtvis dirigerar en klass kommandot till vissa andra objekt för att ge dem första chansen vid kommandot. Om inget av dessa objekt hanterar kommandot kontrollerar den ursprungliga klassen sin egen meddelandekarta. Om den sedan inte kan ange en hanterare själv kan den dirigera kommandot till ännu fler kommandomål. Tabellen Standard-kommandoväg nedan visar hur var och en av klasserna strukturerar den här sekvensen. Den allmänna ordningen på vilket sätt ett kommandomål dirigerar ett kommando är:

  1. Till dess aktiva underordnade kommando-målobjekt.

  2. För sig själv.

  3. Till andra kommandomål.

Hur dyrt är den här routningsmekanismen Jämfört med vad din hanterare gör som svar på ett kommando är kostnaden för routningen låg. Tänk på att ramverket endast genererar kommandon när användaren interagerar med ett användargränssnittsobjekt.

Standardkommandoväg

När ett objekt av den här typen tar emot ett kommando . . . Det ger sig själv och andra kommandomålobjekt en chans att hantera kommandot i den här ordningen:
MDI-ramfönster (CMDIFrameWnd) 1. Aktiv CMDIChildWnd
2. Det här ramfönstret
3. Program (CWinApp objekt)
Dokumentramsfönster (CFrameWnd, CMDIChildWnd) 1. Aktiv vy
2. Det här ramfönstret
3. Program (CWinApp objekt)
Utsikt 1. Den här vyn
2. Dokument som är kopplat till vyn
Dokument 1. Det här dokumentet
2. Dokumentmall som är kopplad till dokumentet
Dialogruta 1. Den här dialogrutan
2. Fönster som äger dialogrutan
3. Program (CWinApp objekt)

Om numrerade poster i den andra kolumnen i föregående tabell nämner andra objekt, till exempel ett dokument, ser du motsvarande objekt i den första kolumnen. När du till exempel läser i den andra kolumnen att vyn vidarebefordrar ett kommando till dokumentet kan du läsa posten "Dokument" i den första kolumnen för att följa routningen ytterligare.

Se även

Så anropar ramverket en hanterare