Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Naast het uitvoeren van de berichtlus en het geven van een mogelijkheid om de toepassing te initialiseren en op te schonen, biedt CWinApp verschillende andere services.
Shell-registratie
De wizard MFC-toepassing maakt het standaard mogelijk voor de gebruiker om gegevensbestanden te openen die uw toepassing heeft gemaakt door erop te dubbelklikken in Verkenner of Bestandsbeheer. Als uw toepassing een MDI-toepassing is en u een extensie voor de bestanden die uw toepassing maakt opgeeft, voegt de MFC-toepassingswizard aanroepen toe aan de lidfuncties RegisterShellFileTypes en EnableShellOpen van CWinApp aan de overschrijving die voor u wordt geschreven.
RegisterShellFileTypes registreert de documenttypen van uw toepassing bij Verkenner of Bestandsbeheer. Met de functie worden vermeldingen toegevoegd aan de registratiedatabase die door Windows wordt onderhouden. De vermeldingen registreren elk documenttype, koppelen een bestandsextensie aan het bestandstype, een opdrachtregel opgeven om de toepassing te openen en een DDE-opdracht (Dynamic Data Exchange) opgeven om een document van dat type te openen.
EnableShellOpen voltooit het proces door uw toepassing toe te staan DDE-opdrachten te ontvangen van Verkenner of Bestandsbeheer om het bestand te openen dat door de gebruiker is gekozen.
Dankzij deze automatische registratieondersteuning CWinApp hoeft u geen .reg bestand bij uw toepassing te verzenden of speciale installatiewerkzaamheden uit te voeren.
Als u GDI+ wilt initialiseren voor uw toepassing (door GdiplusStartup aan te roepen in uw InitInstance-functie ), moet u de GDI+ achtergrondthread onderdrukken.
U kunt dit doen door het lid van de SuppressBackgroundThreadstructuur GdiplusStartupInput in te stellen op TRUE. Wanneer u de GDI+-achtergrondthread onderdrukt, moeten de NotificationHook en NotificationUnhook aanroepen worden uitgevoerd vlak voordat u de berichtlus van de toepassing invoert en afsluit. Zie GdiplusStartupOutput voor meer informatie over deze aanroepen. Daarom is een goede plek om GdiplusStartup en de hook notification-functies aan te roepen in een overschrijving van de virtuele functie CWinApp::Run, zoals hieronder weergegeven.
int CMyWinApp::Run()
{
GdiplusStartupInput gdiSI;
GdiplusStartupOutput gdiSO;
ULONG_PTR gdiToken;
ULONG_PTR gdiHookToken;
gdiSI.SuppressBackgroundThread = TRUE;
GdiplusStartup(&gdiToken, &gdiSI, &gdiSO);
gdiSO.NotificationHook(&gdiHookToken);
int nRet = CWinApp::Run();
gdiSO.NotificationUnhook(gdiHookToken);
GdiplusShutdown(gdiToken);
return nRet;
}
Als u de achtergrond-GDI+-thread niet onderdrukt, kunnen DDE-opdrachten voortijdig worden uitgegeven aan de toepassing voordat het hoofdvenster is gemaakt. De DDE-opdrachten die door de shell worden uitgegeven, kunnen voortijdig worden afgebroken, wat resulteert in foutberichten.
Slepen en neerzetten in Bestandsbeheer
Bestanden kunnen vanuit het venster bestandsweergave in Bestandsbeheer of Verkenner naar een venster in uw toepassing worden gesleept. U kunt bijvoorbeeld een of meer bestanden inschakelen die naar het hoofdvenster van een MDI-toepassing worden gesleept, waar de toepassing de bestandsnamen kan ophalen en MDI-onderliggende vensters voor deze bestanden kan openen.
Als u het slepen en neerzetten van bestanden in uw toepassing wilt inschakelen, schrijft de MFC-toepassingswizard een aanroep naar de lidfunctie CWndDragAcceptFiles voor uw hoofdframevenster in uw InitInstance. U kunt deze aanroep verwijderen als u de functie slepen en neerzetten niet wilt implementeren.
Opmerking
U kunt ook algemenere mogelijkheden voor slepen en neerzetten implementeren( gegevens slepen tussen of binnen documenten) met OLE. Zie het artikel OLE-slepen en neerzetten voor meer informatie.
De laatst gebruikte documenten bijhouden
Wanneer de gebruiker bestanden opent en sluit, houdt het toepassingsobject de vier laatst gebruikte bestanden bij. De namen van deze bestanden worden toegevoegd aan het menu Bestand en bijgewerkt wanneer ze worden gewijzigd. In het framework worden deze bestandsnamen opgeslagen in het register of in het .ini-bestand, met dezelfde naam als uw project en worden ze gelezen uit het bestand wanneer uw toepassing wordt gestart. De InitInstance override die de MFC Application Wizard voor u creëert, bevat een aanroep naar de CWinApp lidfunctie LoadStdProfileSettings, waarmee informatie uit het register of .ini-bestand wordt geladen, inclusief de meest recent gebruikte bestandsnamen.
Deze vermeldingen worden als volgt opgeslagen:
In Windows NT, Windows 2000 en hoger wordt de waarde opgeslagen in een registersleutel.
In Windows 3.x wordt de waarde opgeslagen in de WIN. INI-bestand.
In Windows 95 en hoger wordt de waarde opgeslagen in een versie in de cache van WIN. INI.