Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Följande tekniska anmärkning har inte uppdaterats sedan den först inkluderades i onlinedokumentationen. Därför kan vissa procedurer och ämnen vara inaktuella eller felaktiga. För den senaste informationen rekommenderar vi att du söker efter det intressanta ämnet i onlinedokumentationsindexet.
Den här anmärkningen beskriver de standardkommandoimplementeringar som tillhandahålls av MFC 2.0. Läs Technical Note 21 först eftersom det beskriver de mekanismer som används för att implementera många av standardkommandona.
Den här beskrivningen förutsätter kunskap om MFC-arkitekturer, API:er och vanliga programmeringspraxis. Dokumenterade och odokumenterade API:er för "endast implementering" beskrivs. Det här är inte en plats där du kan börja lära dig om funktionerna i eller hur du programmerar i MFC. Mer allmän information och information om dokumenterade API:er finns i Visual C++.
Problemet
MFC definierar många standardkommando-ID:er i huvudfilen AFXRES.H. Ramverksstöd för dessa kommandon varierar. Att förstå var och hur ramverksklasserna hanterar dessa kommandon visar inte bara hur ramverket fungerar internt, utan ger användbar information om hur du anpassar standardimplementeringarna och lär dig några tekniker för att implementera dina egna kommandohanterare.
Innehållet i den här tekniska anmärkningen
Varje kommando-ID beskrivs i två avsnitt:
Rubriken: det symboliska namnet på kommando-ID :t (till exempel ID_FILE_SAVE) följt av kommandots syfte (till exempel "sparar det aktuella dokumentet") avgränsat med ett kolon.
Ett eller flera stycken som beskriver vilka klasser som implementerar kommandot och vad standardimplementeringen gör
De flesta standardkommandoimplementeringar är förkopplade i ramverkets basklassmeddelandekarta. Det finns vissa kommandoimplementeringar som kräver explicita ledningar i din härledda klass. Dessa beskrivs under "Note". Om du väljer rätt alternativ i AppWizard ansluts dessa standardhanterare åt dig i det genererade skelettprogrammet.
Namnkonvention
Standardkommandon följer en enkel namngivningskonvention som vi rekommenderar att du använder om möjligt. De flesta standardkommandon finns på standardplatser i ett programs menyrad. Det symboliska namnet på kommandot börjar med "ID_" följt av standardnamnet på popup-menyn följt av menyalternativets namn. Det symboliska namnet är i versaler och orden är åtskilda med understreck. För kommandon som inte har standardnamn för menyalternativ definieras ett logiskt kommandonamn som börjar med "ID_" (till exempel ID_NEXT_PANE).
Vi använder prefixet "ID_" för att ange kommandon som är utformade för att bindas till menyalternativ, verktygsfältsknappar eller andra kommandoobjekt i användargränssnittet. Kommandohanterare som hanterar kommandona "ID_" bör använda ON_COMMAND- och ON_UPDATE_COMMAND_UI mekanismerna i MFC-kommandoarkitekturen.
Vi rekommenderar att du använder standardprefixet "IDM_" för menyobjekt som inte följer kommandoarkitekturen och behöver menyspecifik kod för att aktivera och inaktivera dem. Naturligtvis bör antalet menyspecifika kommandon vara litet eftersom följande MFC-kommandoarkitektur inte bara gör kommandohanterare mer kraftfulla (eftersom de kommer att fungera med verktygsfält) utan gör kommandohanterarkoden återanvändbar.
ID-intervall
Mer information om användningen av ID-intervall i MFC finns i Technical Note 20 .
MFC-standardkommandon hamnar i intervallet 0xE000 till 0xEFFF. Förlita dig inte på de specifika värdena för dessa ID:er eftersom de kan komma att ändras i framtida versioner av biblioteket.
Programmet bör definiera sina kommandon i intervallet 0x8000 till 0xDFFF.
Standardkommando-ID
För varje kommando-ID finns det en standardsträng för meddelanderadsprompten som finns i filen PROMPTS. RC. Sträng-ID:t för menyprompten måste vara samma som för kommando-ID:t.
ID_FILE_NEW Skapar ett nytt/tomt dokument.
Anmärkning
Du måste ansluta detta till den
CWinApphärledda klassens meddelandekarta för att aktivera den här funktionen.CWinApp::OnFileNewimplementerar det här kommandot på olika sätt beroende på antalet dokumentmallar i programmet. Om det bara finns ettCDocTemplate, kommerCWinApp::OnFileNewatt skapa ett nytt dokument av den typen, samt rätt ram och vyklass.Om det finns fler än en
CDocTemplateCWinApp::OnFileNewuppmanas användaren att använda en dialogruta (AFX_IDD_NEWTYPEDLG) så att de kan välja vilken dokumenttyp som ska användas. Den valdaCDocTemplateanvänds för att skapa dokumentet.En vanlig anpassning av ID_FILE_NEW är att tillhandahålla ett annat och mer grafiskt val av dokumenttyper. I det här fallet kan du implementera din egen
CMyApp::OnFileNewoch placera den i din meddelandekarta i stället förCWinApp::OnFileNew. Du behöver inte anropa basklassimplementeringen.En annan vanlig anpassning av ID_FILE_NEW är att tillhandahålla ett separat kommando för att skapa ett dokument av varje typ. I det här fallet bör du definiera nya kommando-ID:n, till exempel ID_FILE_NEW_CHART och ID_FILE_NEW_SHEET.
ID_FILE_OPEN Öppnar ett befintligt dokument.
Anmärkning
Du måste ansluta detta till den
CWinApphärledda klassens meddelandekarta för att aktivera den här funktionen.CWinApp::OnFileOpenhar en mycket enkel implementering av anropCWinApp::DoPromptFileNameföljt avCWinApp::OpenDocumentFilemed filens fil- eller sökvägsnamn som ska öppnas. ImplementeringsrutinenCWinAppDoPromptFileNametar upp standarddialogrutan FileOpen och fyller den med filnamnstilläggen som hämtas från de aktuella dokumentmallarna.En vanlig anpassning av ID_FILE_OPEN är att anpassa dialogrutan FileOpen eller lägga till ytterligare filfilter. Det rekommenderade sättet att anpassa detta är att ersätta standardimplementeringen med din egen FileOpen-dialogruta och anropa
CWinApp::OpenDocumentFilemed dokumentets fil- eller sökvägsnamn. Du behöver inte anropa basklassen.ID_FILE_CLOSE Stänger det öppna dokumentet.
CDocument::OnFileCloseanroparCDocument::SaveModifiedför att uppmana användaren att spara dokumentet om det har ändrats och sedan anroparOnCloseDocument. All avslutande logik, inklusive att förstöra dokumentet, görs i rutinenOnCloseDocument.Anmärkning
ID_FILE_CLOSE fungerar annorlunda än ett WM_CLOSE meddelande eller ett SC_CLOSE systemkommando som skickas till dokumentramfönstret. Om du stänger ett fönster stängs endast dokumentet om det är det sista bildrutefönstret som visar dokumentet. Om du stänger dokumentet med ID_FILE_CLOSE stängs inte bara dokumentet, utan alla ramfönster som visar dokumentet stängs.
ID_FILE_SAVE Sparar det aktuella dokumentet.
Implementeringen använder en hjälprutin
CDocument::DoSavesom används för bådeOnFileSaveochOnFileSaveAs. Om du sparar ett dokument som inte har sparats tidigare (dvs. det inte har något sökvägsnamn, som i fallet med FileNew) eller som lästes från ett skrivskyddat dokument, fungerar logikenOnFileSavesom kommandot ID_FILE_SAVE_AS och ber användaren att ange ett nytt filnamn. Den faktiska processen för att öppna filen och spara görs via den virtuella funktionenOnSaveDocument.Det finns två vanliga orsaker till att anpassa ID_FILE_SAVE. För dokument som inte sparas tar du helt enkelt bort ID_FILE_SAVE menyalternativ och verktygsfältsknappar från användargränssnittet. Se också till att du aldrig smutsar ner dokumentet (det vill säga aldrig anropar
CDocument::SetModifiedFlag) och att ramverket aldrig kommer att orsaka att dokumentet sparas. För dokument som sparas på någon annan plats än en diskfil definierar du ett nytt kommando för åtgärden.När det gäller en
COleServerDocanvänds ID_FILE_SAVE både för filsparning (för normala dokument) och filuppdatering (för inbäddade dokument).Om dina dokumentdata lagras i enskilda diskfiler, men du inte vill använda standardimplementeringen
CDocumentför serialisering, bör du åsidosättaCDocument::OnSaveDocumenti stället förOnFileSave.ID_FILE_SAVE_AS Sparar det aktuella dokumentet under ett annat filnamn.
Implementeringen
CDocument::OnFileSaveAsanvänder sammaCDocument::DoSavehjälprutin somOnFileSave. KommandotOnFileSaveAshanteras precis som ID_FILE_SAVE om dokumenten inte hade något filnamn före sparande.COleServerDoc::OnFileSaveAsimplementerar logiken för att spara en normal dokumentdatafil eller för att spara ett serverdokument som representerar ett OLE-objekt som är inbäddat i något annat program som en separat fil.Om du anpassar logiken för ID_FILE_SAVE vill du förmodligen anpassa ID_FILE_SAVE_AS på ett liknande sätt eller så kanske inte åtgärden "Spara som" gäller för dokumentet. Du kan ta bort menyalternativet från menyraden om det inte behövs.
ID_FILE_SAVE_COPY_AS Sparar en kopia av det aktuella dokumentet under ett nytt namn.
Implementeringen
COleServerDoc::OnFileSaveCopyAsliknar mycketCDocument::OnFileSaveAs, förutom att dokumentobjektet inte är "kopplat" till den underliggande filen efter sparandet. Om det minnesinterna dokumentet "ändrades" före sparande är det alltså fortfarande "ändrat". Dessutom påverkar det här kommandot inte sökvägens namn eller rubrik som lagras i dokumentet.ID_FILE_UPDATE Meddelar containern att spara ett inbäddat dokument.
Implementeringen
COleServerDoc::OnUpdateDocumentmeddelar helt enkelt containern att inbäddningen ska sparas. Containern anropar sedan lämpliga OLE-API:er för att spara det inbäddade objektet.ID_FILE_PAGE_SETUP Anropar en programspecifik dialogruta för sidkonfiguration/layout.
För närvarande finns det ingen standard för den här dialogrutan och ramverket har ingen standardimplementering av det här kommandot.
Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_FILE_PRINT_SETUP Anropa dialogrutan för standardutskriftsinställningar.
Anmärkning
Du måste ansluta detta till den
CWinApphärledda klassens meddelandekarta för att aktivera den här funktionen.Det här kommandot anropar standarddialogrutan för utskriftskonfiguration som gör att användaren kan anpassa skrivar- och utskriftsinställningarna för åtminstone det här dokumentet eller högst alla dokument i det här programmet. Du måste använda Kontrollpanelen för att ändra standardinställningarna för skrivaren för hela systemet.
CWinApp::OnFilePrintSetuphar en mycket enkel implementering som skapar ettCPrintDialogobjekt och anropar implementeringsfunktionenCWinApp::DoPrintDialog. Detta anger programmets standardinstallation av skrivare.Det vanliga behovet av att anpassa det här kommandot är att tillåta skrivarinställningar per dokument, som ska lagras med dokumentet när det sparas. För att göra detta bör du lägga till en meddelandekarta-hanterare i klassen
CDocumentsom skapar ettCPrintDialogobjekt, initierar det med lämpliga skrivarattribut (vanligtvis hDevMode och hDevNames), anroparCPrintDialog::DoModaloch sparar de ändrade skrivarinställningarna. För en robust implementering bör du titta på implementeringen avCWinApp::DoPrintDialogför att identifiera fel ochCWinApp::UpdatePrinterSelectionför att hantera lämpliga standardvärden och spåra systemomfattande skrivarändringar.ID_FILE_PRINT Standard-utskrift av det aktuella dokumentet
Anmärkning
Du måste ansluta detta till den
CViewhärledda klassens meddelandekarta för att aktivera den här funktionen.Det här kommandot skriver ut det aktuella dokumentet, eller mer korrekt, startar utskriftsprocessen, vilket innebär att du anropar dialogrutan för standardutskrift och kör utskriftsmotorn.
CView::OnFilePrintimplementerar det här kommandot och huvudutskriftsloopen. Den anropar den virtuellaCView::OnPreparePrintingför att visa utskriftsdialogrutan för användaren. Den förbereder sedan utdata-DC för att gå till skrivaren, öppnar dialogrutan för utskriftsförlopp (AFX_IDD_PRINTDLG) och skickarStartDocescape till skrivaren.CView::OnFilePrintinnehåller också den huvudsideorienterade utskriftsloopen. För varje sida anropas den virtuellaCView::OnPrepareDC, och sedan utförs enStartPage-escape följt av ett anrop till den virtuellaCView::OnPrintför den sidan. När det är klart anropas den virtuellaCView::OnEndPrintingdatorn och dialogrutan för utskriftsstatus stängs.MFC-utskriftsarkitekturen är utformad för att integreras på många olika sätt för utskrift och förhandsgranskning. Normalt är de olika
CViewåterställbara funktionerna adekvata för alla sidorienterade utskriftsuppgifter. Endast när det gäller ett program som använder skrivaren för icke-sidorienterade utdata, bör du hitta behovet av att ersätta ID_FILE_PRINT implementeringen.ID_FILE_PRINT_PREVIEW Ange förhandsgranskningsläge för det aktuella dokumentet.
Anmärkning
Du måste ansluta detta till den
CViewhärledda klassens meddelandekarta för att aktivera den här funktionen.CView::OnFilePrintPreviewstartar förhandsgranskningsläget genom att anropa den dokumenterade hjälpfunktionenCView::DoPrintPreview.CView::DoPrintPreviewär huvudmotorn för förhandsgranskningsslingan, precis somOnFilePrinthuvudmotorn för utskriftsloopen.Förhandsgranskningsåtgärden kan anpassas på flera olika sätt genom att olika parametrar skickas till
DoPrintPreview. Se Technical Note 30, som beskriver några av detaljerna i förhandsgranskningen och hur du anpassar den.ID_FILE_MRU_FILE1... FILE16 Ett intervall med kommando-ID:er för listan Fil-MRU.
CWinApp::OnUpdateRecentFileMenuär en uppdateringskommandogränssnittshanterare som är en av de mer avancerade användningsområdena för ON_UPDATE_COMMAND_UI mekanismen. I din menyresurs behöver du bara definiera ett enda menyalternativ med ID ID_FILE_MRU_FILE1. Menyalternativet förblir ursprungligen inaktiverat.När MRU-listan växer läggs fler menyobjekt till i listan.
CWinAppStandardimplementeringen har standardgränsen som standardinställning för de fyra senast använda filerna. Du kan ändra standardvärdet genom att anropaCWinApp::LoadStdProfileSettingsmed ett större eller mindre värde. MRU-listan lagras i programmets . INI-fil. Listan läses in i programmetsInitInstancefunktion om du anroparLoadStdProfileSettingsoch sparas när programmet avslutas. Hanteraren för MRU-uppdateringskommandot konverterar även absoluta sökvägar till relativa sökvägar för att visas på fil-menyn.CWinApp::OnOpenRecentFileär den ON_COMMAND-hanteraren som utför det faktiska kommandot. Det hämtar helt enkelt filnamnet från MRU-listan och anroparCWinApp::OpenDocumentFile, vilket gör allt arbete med att öppna filen och uppdatera MRU-listan.Anpassning av den här kommandohanteraren rekommenderas inte.
ID_EDIT_CLEAR Rensar den aktuella markeringen
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.CEditViewtillhandahåller en implementering av det här kommandot med hjälp avCEdit::Clear. Kommandot är inaktiverat om det inte finns någon aktuell markering.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_EDIT_CLEAR_ALL Rensar hela dokumentet.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t. Se exempel på SCRIBBLE i MFC-självstudiekursen för en exempelimplementering.
ID_EDIT_COPY Kopierar den aktuella markeringen till Urklipp.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.CEditViewtillhandahåller en implementering av det här kommandot, som kopierar den för närvarande markerade texten till Urklipp i CF_TEXT-format, med hjälp avCEdit::Copy. Kommandot är inaktiverat om det inte finns någon aktuell markering.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_EDIT_CUT Klipper den aktuella markeringen och lägger den i Windows Urklipp.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.CEditViewtillhandahåller en implementering av det här kommandot, som klipper den markerade texten till Urklipp som CF_TEXT med hjälp avCEdit::Cut. Kommandot är inaktiverat om det inte finns någon aktuell markering.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_EDIT_FIND Påbörjar sökoperationen, öppnar den modellösa sökdialogrutan.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.CEditViewtillhandahåller en implementering av det här kommandot, som anropar implementeringshjälpfunktionenOnEditFindReplaceför att använda och lagra de tidigare sök-/ersätt-inställningarna i privata implementeringsvariabler. KlassenCFindReplaceDialoganvänds för att hantera den icke-modala dialogrutan för att uppmana användaren.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_EDIT_PASTE Infogar det aktuella innehållet i urklipp.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.CEditViewtillhandahåller en implementering av det här kommandot, som använderCEdit::Pasteför att kopiera aktuella urklippsdata och ersätta den markerade texten. Kommandot är inaktiverat om det inte finns någon CF_TEXT i Urklipp.COleClientDoctillhandahåller bara en uppdateringskommandogränssnittshanterare för det här kommandot. Om Urklipp inte innehåller ett inbäddningsbart OLE-objekt/objekt inaktiveras kommandot. Du är ansvarig för att skriva hanteraren för det faktiska kommandot för att utföra den faktiska inklistringen. Om ditt OLE-program också kan klistra in andra format bör du ange en egen uppdateringshanterare för kommandogränssnittet i vyn eller dokumentet (dvs. någonstans föreCOleClientDoci kommandomåldirigeringen).Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
Om du vill ersätta ole-standardimplementeringen använder du
COleClientItem::CanPaste.ID_EDIT_PASTE_LINK Infogar en länk från det aktuella urklippet.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.COleDocumenttillhandahåller bara en uppdateringskommandogränssnittshanterare för det här kommandot. Om Urklipp inte innehåller länkbara OLE-objekt/-objekt inaktiveras kommandot. Du är ansvarig för att skriva hanteraren för det faktiska kommandot för att utföra den faktiska inklistringen. Om ditt OLE-program också kan klistra in andra format bör du ange en egen uppdateringshanterare för kommandogränssnittet i vyn eller dokumentet (dvs. någonstans föreCOleDocumenti kommandomåldirigeringen).Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
Om du vill ersätta ole-standardimplementeringen använder du
COleClientItem::CanPasteLink.ID_EDIT_PASTE_SPECIAL Infogar aktuellt innehåll från urklippet med alternativ.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass. MFC tillhandahåller inte den här dialogrutan.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_EDIT_REPEAT Upprepar den senaste åtgärden.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.CEditViewtillhandahåller en implementering av det här kommandot för att upprepa den senaste sökåtgärden. De privata implementeringsvariablerna för den senaste sökningen används. Kommandot är inaktiverat om det inte går att försöka hitta.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_EDIT_REPLACE Startar ersättningsåtgärden och öppnar den icke-modala dialogrutan för att ersätta.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.CEditViewtillhandahåller en implementering av det här kommandot, som anropar implementeringshjälpfunktionenOnEditFindReplaceför att använda och lagra de tidigare sök-/ersätt-inställningarna i privata implementeringsvariabler. KlassenCFindReplaceDialoganvänds för att hantera den icke-modala dialogruta som uppmanar användaren.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_EDIT_SELECT_ALL Väljer hela dokumentet.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.CEditViewtillhandahåller en implementering av det här kommandot, som markerar all text i dokumentet. Kommandot är inaktiverat om det inte finns någon text att välja.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_EDIT_UNDO Ångra den senaste åtgärden.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.CEditViewtillhandahåller en implementering av det här kommandot med hjälp avCEdit::Undo. Kommandot är inaktiverat omCEdit::CanUndoreturnerar FALSE.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_EDIT_REDO Gör om den senaste åtgärden.
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för varje
CView-härledd klass.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_WINDOW_NEW Öppnar ett annat fönster i det aktiva dokumentet.
CMDIFrameWnd::OnWindowNewimplementerar den här kraftfulla funktionen med hjälp av dokumentmallen för det aktuella dokumentet för att skapa en annan ram som innehåller en annan vy av det aktuella dokumentet.Precis som de flesta fönsterkommandon för flera dokumentgränssnitt (MDI) inaktiveras kommandot om det inte finns något aktivt underordnat MDI-fönster.
Anpassning av den här kommandohanteraren rekommenderas inte. Om du vill ange ett kommando som skapar ytterligare vyer eller ramfönster är det förmodligen bättre att hitta på ditt eget kommando. Du kan klona koden från
CMDIFrameWnd::OnWindowNewoch ändra den till den specifika ramen och visa klasser som du gillar.ID_WINDOW_ARRANGE Ordnar ikoner längst ned i ett MDI-fönster.
CMDIFrameWndimplementerar det här MDI-standardkommandot i en implementeringshjälpfunktionOnMDIWindowCmd. Den här hjälpen mappar kommando-ID:er till MDI Windows-meddelanden och kan därför dela mycket kod.Precis som de flesta MDI-fönstermenykommandon inaktiveras kommandot om det inte finns något aktivt underordnat MDI-fönster.
Anpassning av den här kommandohanteraren rekommenderas inte.
ID_WINDOW_CASCADE Ordnar fönster så att de delvis överlappar.
CMDIFrameWndimplementerar det här MDI-standardkommandot i en implementeringshjälpfunktionOnMDIWindowCmd. Den här hjälpen mappar kommando-ID:er till MDI Windows-meddelanden och kan därför dela mycket kod.Precis som de flesta MDI-fönstermenykommandon inaktiveras kommandot om det inte finns något aktivt underordnat MDI-fönster.
Anpassning av den här kommandohanteraren rekommenderas inte.
ID_WINDOW_TILE_HORZ Paneler fönster vågrätt.
Det här kommandot implementeras på
CMDIFrameWndsamma sätt som ID_WINDOW_CASCADE, förutom att ett annat MDI Windows-meddelande används för åtgärden.Du bör välja standardpanelens orientering för ditt program. Du kan göra detta genom att ändra ID:t för menyalternativet "Fönster" till antingen ID_WINDOW_TILE_HORZ eller ID_WINDOW_TILE_VERT.
ID_WINDOW_TILE_VERT Arrangerar fönster lodrätt.
Det här kommandot implementeras på
CMDIFrameWndsamma sätt som ID_WINDOW_CASCADE, förutom att ett annat MDI Windows-meddelande används för åtgärden.Du bör välja standardpanelens orientering för ditt program. Du kan göra detta genom att ändra ID:t för menyalternativet "Fönster" till antingen ID_WINDOW_TILE_HORZ eller ID_WINDOW_TILE_VERT.
ID_WINDOW_SPLIT tangentbordgränssnitt till splitter.
CViewhanterar det här kommandot för implementeringenCSplitterWnd. Om vyn är en del av ett delningsfönster delegerar det här kommandot till implementeringsfunktionenCSplitterWnd::DoKeyboardSplit. Detta placerar splittern i ett läge som gör att tangentbordsanvändare kan dela upp eller ta bort ett delningsfönster.Det här kommandot är inaktiverat om vyn inte finns i en splitter.
Anpassning av den här kommandohanteraren rekommenderas inte.
ID_APP_ABOUT öppnar dialogrutan Om.
Det finns ingen standardimplementering för ett programs Om-ruta. Det AppWizard-skapade standardprogrammet skapar en anpassad dialogklass för ditt program och använder den som om-rutan. AppWizard skriver också den triviala kommandohanteraren som hanterar det här kommandot och anropar dialogrutan.
Du implementerar nästan alltid det här kommandot.
ID_APP_EXIT Avsluta programmet.
CWinApp::OnAppExithanterar det här kommandot genom att skicka ett WM_CLOSE meddelande till programmets huvudfönster. Standardstängningen av programmet (fråga efter smutsiga filer och så vidare) hanteras av implementeringenCFrameWnd.Anpassning av den här kommandohanteraren rekommenderas inte. Du bör åsidosätta
CWinApp::SaveAllModifiedeller stängningslogikenCFrameWnd.Om du väljer att implementera det här kommandot rekommenderar vi att du använder det här kommando-ID:t.
ID_HELP_INDEX listar hjälpämnen från .HLP-fil.
Anmärkning
Du måste ansluta detta till den
CWinApphärledda klassens meddelandekarta för att aktivera den här funktionen.CWinApp::OnHelpIndexhanterar det här kommandot genom att trivialt anropaCWinApp::WinHelp.Anpassning av den här kommandohanteraren rekommenderas inte.
ID_HELP_USING Visar hjälp om hur du använder hjälpen.
Anmärkning
Du måste ansluta detta till den
CWinApphärledda klassens meddelandekarta för att aktivera den här funktionen.CWinApp::OnHelpUsinghanterar det här kommandot genom att trivialt anropaCWinApp::WinHelp.Anpassning av den här kommandohanteraren rekommenderas inte.
ID_CONTEXT_HELP Anger SHIFT-F1 hjälpläge.
Anmärkning
Du måste ansluta detta till den
CWinApphärledda klassens meddelandekarta för att aktivera den här funktionen.CWinApp::OnContextHelphanterar det här kommandot genom att ange hjälplägesmarkören, ange en modal loop och vänta på att användaren ska välja ett fönster för att få hjälp. Mer information om MFC-hjälpimplementeringen finns i Technical Note 28 .Anpassning av den här kommandohanteraren rekommenderas inte.
ID_HELP Ger hjälp om den aktuella kontexten
Anmärkning
Du måste ansluta detta till den
CWinApphärledda klassens meddelandekarta för att aktivera den här funktionen.CWinApp::OnHelphanterar det här kommandot genom att hämta rätt hjälpkontext för den aktuella programkontexten. Detta hanterar enkel F1-hjälp, hjälp med meddelanderutor och så vidare. Mer information om MFC-hjälpimplementeringen finns i Technical Note 28 .Anpassning av den här kommandohanteraren rekommenderas inte.
ID_DEFAULT_HELP Visar standardhjälp för kontext
Anmärkning
Du måste ansluta detta till den
CWinApphärledda klassens meddelandekarta för att aktivera den här funktionen.Det här kommandot mappas vanligtvis till
CWinApp::OnHelpIndex.En annan kommandohanterare kan anges om en skillnad mellan standardhjälp och hjälpindex önskas.
ID_NEXT_PANE Går till nästa fönster
CViewhanterar det här kommandot för implementeringenCSplitterWnd. Om vyn är en del av ett delningsfönster delegerar det här kommandot till implementeringsfunktionenCSplitterWnd::OnNextPaneCmd. Då flyttas den aktiva vyn till nästa fönster i delaren.Det här kommandot är inaktiverat om vyn inte finns i en delning eller om det inte finns någon nästa fönsterruta att gå till.
Anpassning av den här kommandohanteraren rekommenderas inte.
ID_PREV_PANE Går till föregående fönster
CViewhanterar det här kommandot för implementeringenCSplitterWnd. Om vyn är en del av ett delningsfönster delegerar det här kommandot till implementeringsfunktionenCSplitterWnd::OnNextPaneCmd. Då flyttas den aktiva vyn till föregående fönster i delningsfönstret.Det här kommandot är inaktiverat om vyn inte är i en delad vy eller om det inte finns något föregående fönster att gå till.
Anpassning av den här kommandohanteraren rekommenderas inte.
ID_OLE_INSERT_NEW infogar ett nytt OLE-objekt
För närvarande finns det ingen standardimplementering för det här kommandot. Du måste implementera detta för klassen
CView-derived för att infoga ett nytt OLE-objekt/-objekt vid den aktuella markeringen.Alla OLE-klientprogram bör implementera det här kommandot. AppWizard, med OLE-alternativet, skapar en skelettimplementering av
OnInsertObjecti din vyklass som du måste slutföra.Se OCLIENT-exempelexemplet för MFC OLE för en fullständig implementering av det här kommandot.
ID_OLE_EDIT_LINKS redigerar OLE-länkar
COleDocumenthanterar det här kommandot med hjälp av den MFC-tillhandahållna implementeringen av dialogrutan med standard-OLE-länkar. Implementeringen av den här dialogrutan nås viaCOleLinksDialogklassen. Om det aktuella dokumentet inte innehåller några länkar inaktiveras kommandot.Anpassning av den här kommandohanteraren rekommenderas inte.
ID_OLE_VERB_FIRST... LAST Ett ID-intervall för OLE-verb
COleDocumentanvänder det här kommando-ID-intervallet för de verb som stöds av det markerade OLE-objektet/-objektet. Detta måste vara ett intervall eftersom en viss OLE-objekt/objekttyp kan ha stöd för noll eller fler anpassade verb. I programmets meny bör du ha ett menyalternativ med ID:t för ID_OLE_VERB_FIRST. När programmet körs uppdateras menyn med lämplig beskrivning av menyverb (eller popup-meny med många verb). Hanteringen av OLE-menyn sköts avAfxOleSetEditMenuoch utförs i uppdateringskommandots kommandogränssnittshanterare för det här kommandot.Det finns inga explicita kommandohanterare för hantering av vart och ett av kommando-ID:t i det här intervallet.
COleDocument::OnCmdMsganvänds för att fånga alla kommando-ID:n i det här intervallet, konvertera dem till nollbaserade verbnummer och starta servern för det verbet (medCOleClientItem::DoVerb).Anpassning eller annan användning av det här kommando-ID-intervallet rekommenderas inte.
ID_VIEW_TOOLBAR Aktiverar och inaktiverar verktygsfältet
CFrameWndhanterar det här kommandot och användargränssnittshanteraren för uppdateringskommando för att växla verktygsfältets synliga tillstånd. Verktygsfältet måste vara ett underordnat fönster i ramen med underordnat fönster-ID för AFX_IDW_TOOLBAR. Kommandohanteraren växlar faktiskt synligheten för verktygsfältsfönstret.CFrameWnd::RecalcLayoutanvänds för att rita om ramfönstret med verktygsfältet i dess nya tillstånd. Användargränssnittshanteraren för uppdateringskommando kontrollerar menyalternativet när verktygsfältet är synligt.Anpassning av den här kommandohanteraren rekommenderas inte. Om du vill lägga till ytterligare verktygsfält vill du klona och ändra kommandohanteraren och användargränssnittshanteraren för uppdateringskommandot för det här kommandot.
ID_VIEW_STATUS_BAR Aktiverar och inaktiverar statusfältet
Det här kommandot implementeras på
CFrameWndsamma sätt som ID_VIEW_TOOLBAR, förutom att ett annat underordnat fönster-ID (AFX_IDW_STATUS_BAR) används.
Update-Only kommandohanterare
Flera standardkommando-ID:er används som indikatorer i statusstaplar. Dessa använder samma UI-hanteringsmekanism för uppdateringskommando för att visa sitt aktuella visuella tillstånd under programmets inaktiva tid. Eftersom de inte kan väljas av användaren (dvs. du kan inte push-överföra ett statusfältfönster) är det inte meningsfullt att ha en ON_COMMAND-hanterare för dessa kommando-ID:n.
ID_INDICATOR_CAPS : Caps Lock-indikator.
ID_INDICATOR_NUM : NUM-låsindikator.
ID_INDICATOR_SCRL : SCRL-låsindikator.
ID_INDICATOR_KANA : KANA-låsindikator (gäller endast för japanska system).
Alla tre av dessa implementeras i CFrameWnd::OnUpdateKeyIndicator, en implementeringshjälp som använder kommando-ID:t för att mappa till lämplig virtuell nyckel. En vanlig implementering aktiverar eller inaktiverar (för inaktiverade statusfönster = ingen text) CCmdUI objektet beroende på om lämplig virtuell nyckel för närvarande är låst.
Anpassning av den här kommandohanteraren rekommenderas inte.
ID_INDICATOR_EXT : Indikator för utökat val.
ID_INDICATOR_OVR : OVeRstrike-indikator.
ID_INDICATOR_REC : RECording-indikator.
För närvarande finns det ingen standardimplementering för dessa indikatorer.
Om du väljer att implementera dessa indikatorer rekommenderar vi att du använder dessa indikator-ID:n och underhåller ordningen på indikatorerna i statusfältet (dvs. i den här ordningen: EXT, CAP, NUM, SCRL, OVR, REC).
Se även
tekniska anteckningar efter nummer
tekniska anteckningar efter kategori