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.
MFC-program använder normalt dokument-/vyarkitekturen för att hantera information, filformat och visuell representation av data till användare. För de flesta skrivbordsprogram är dokument-/vyarkitekturen en lämplig och effektiv programarkitektur. Den här arkitekturen separerar data från visning och förenklar i de flesta fall ditt program och minskar redundant kod.
Dokument-/vyarkitekturen är dock inte lämplig för vissa situationer. Tänk på följande exempel:
Om du porterar ett program som skrivits i C för Windows kanske du vill slutföra porten innan du lägger till stöd för dokument/visning i programmet.
Om du skriver ett enkelt verktyg kanske du upptäcker att du kan göra det utan dokument-/vyarkitekturen.
Om din ursprungliga kod redan blandar datahantering med datavisning är det inte värt att flytta koden till dokument-/vymodellen eftersom du måste separera de två. Du kanske föredrar att lämna koden som den är.
Om du vill skapa ett program som inte använder dokument-/vyarkitekturen avmarkerar du kryssrutan Stöd för dokument-/vyarkitektur i steg 1 i MFC-programguiden. Mer information finns i MFC-programguiden .
Anmärkning
Dialogbaserade program som skapats av MFC-programguiden använder inte dokument-/vyarkitekturen, så kryssrutan Stöd för dokument-/vyarkitektur inaktiveras om du väljer typ av dialogprogram.
De visuella C++-guiderna, samt käll- och dialogredigerarna, fungerar med det genererade programmet precis som med andra guidegenererade program. Programmet kan stödja verktygsfält, rullningslister och ett statusfält och har en Om-ruta . Programmet registrerar inga dokumentmallar och innehåller ingen dokumentklass.
Observera att ditt genererade program har en vyklass, , CChildViewhärledd från CWnd. MFC skapar och placerar en instans av vyklassen i ramfönstren som skapats av ditt program. MFC framtvingar fortfarande användning av ett visningsfönster, eftersom det förenklar positionering och hantering av programmets innehåll. Du kan lägga till målarkod till OnPaint-medlemmen i denna klass. Koden bör lägga till rullningslister i vyn snarare än i ramen.
Eftersom dokument-/vyarkitekturen som tillhandahålls av MFC ansvarar för att implementera många av ett programs grundläggande funktioner innebär dess frånvaro i projektet att du ansvarar för att implementera många viktiga funktioner i ditt program:
Enligt MFC-programguiden innehåller menyn för ditt program endast kommandona Nytt och Avsluta på Arkiv-menyn . (Det nya kommandot stöds endast för MDI-program, inte för SDI-program utan stöd för Dokument/Visa.) Den genererade menyresursen stöder inte en MRU-lista (senast använd).
Du måste lägga till hanteringsfunktioner och implementeringar för alla kommandon som programmet stöder, inklusive Öppna och Spara på arkiv-menyn . MFC tillhandahåller normalt kod för att stödja dessa funktioner, men det stödet är nära bundet till dokument-/vyarkitekturen.
Verktygsfältet för ditt program, om du begärde ett, kommer att vara minimalt.
Vi rekommenderar starkt att du använder MFC-programguiden för att skapa program utan dokument-/vyarkitekturen, eftersom guiden garanterar en korrekt MFC-arkitektur. Men om du måste undvika att använda guiden finns här flera metoder för att kringgå dokument-/vyarkitekturen i koden:
Behandla dokumentet som ett oanvänt tillägg och implementera din datahanteringskod i visningsklassen enligt ovan. Omkostnaderna för dokumentet är relativt låga. Ett enda CDocument-objekt medför en liten mängd omkostnader på egen hand, plus de små omkostnaderna
CDocumentför basklasserna CCmdTarget och CObject. Båda de senare klasserna är små.Deklarerad i
CDocument:Två
CStringobjekt.Tre BOOL-s.
En
CDocTemplatepekare.Ett
CPtrListobjekt som innehåller en lista över dokumentets vyer.
Dessutom kräver dokumentet en tidsangivelse för att skapa dokumentobjektet, dess visningsobjekt, ett ramfönster och ett dokumentmallsobjekt.
Behandla både dokumentet och vyn som oanvända tillägg. Placera datahantering och ritningskod i ramfönstret istället för i vyn. Den här metoden ligger närmare programmeringsmodellen för C-språk.
Åsidosätt de delar av MFC-ramverket som skapar dokumentet och vyn för att eliminera skapandet av dem alls. Processen för att skapa dokument börjar med ett anrop till
CWinApp::AddDocTemplate. Eliminera det anropet från programklassensInitInstancemedlemsfunktion och skapa istället ett ramfönster iInitInstancepå egen hand. Placera datahanteringskoden i bildrutefönstrets klass. Processen för att skapa dokument/vy illustreras i Skapa dokument/visa. Det här är mer arbete och kräver en djupare förståelse av ramverket, men det frigör dig helt från dokument-/visningskostnaderna.
Artikeln MFC: Använda databasklasser utan dokument och vyer ger mer konkreta exempel på dokument-/vyalternativ i samband med databasprogram.