Dela via


Alternativ till arkitekturen för dokument/vy

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 AvslutaArkiv-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 Sparaarkiv-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å CString objekt.

    • Tre BOOL-s.

    • En CDocTemplate pekare.

    • Ett CPtrList objekt 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 programklassens InitInstance medlemsfunktion och skapa istället ett ramfönster i InitInstance på 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.

Se även

Arkitektur för dokument/vy