Özel CWinApp Hizmetleri
CWinApp, ileti döngüsünü çalıştırmanın yanı sıra uygulamayı başlatmanız ve ondan sonra temizlemeniz için bir fırsat sunar.
Kabuk Kaydı
MFC Uygulama Sihirbazı varsayılan olarak, kullanıcının uygulamanızın oluşturduğu veri dosyalarını Dosya Gezgini veya Dosya Yöneticisi'nde çift tıklayarak açmasını sağlar. Uygulamanız bir MDI uygulamasıysa ve uygulamanızın oluşturduğu dosyalar için bir uzantı belirtirseniz, MFC Uygulama Sihirbazı CWinApp'in RegisterShellFileTypes ve EnableShellOpen üye işlevlerine çağrıları sizin için yazdığı geçersiz kılmaya InitInstance
ekler.
RegisterShellFileTypes
uygulamanızın belge türlerini Dosya Gezgini veya Dosya Yöneticisi'ne kaydeder. işlevi, Windows'un koruduğu kayıt veritabanına girdiler ekler. Girdiler her belge türünü kaydeder, dosya uzantısını dosya türüyle ilişkilendirir, uygulamayı açmak için bir komut satırı belirtir ve bu türdeki bir belgeyi açmak için dinamik veri değişimi (DDE) komutu belirtir.
EnableShellOpen
uygulamanızın Dosya Gezgini veya Dosya Yöneticisi'nden DDE komutlarını almasına izin vererek kullanıcı tarafından seçilen dosyayı açmasına izin vererek işlemi tamamlar.
içindeki CWinApp
bu otomatik kayıt desteği, uygulamanızla bir .reg dosyası gönderme veya özel yükleme işi yapma gereksinimini ortadan kaldırır.
Uygulamanız için GDI+ başlatmak istiyorsanız (InitInstance işlevinizde GdiplusStartup'ı çağırarak), GDI+ arka plan iş parçacığını gizlemeniz gerekir.
Bunu yapmak için GdiplusStartupInput yapısının üyesini TRUE olarak ayarlayabilirsinizSuppressBackgroundThread
. GDI+ arka plan iş parçacığı gizlenirken ve NotificationUnhook
çağrıları uygulamanın NotificationHook
ileti döngüsüne girilip çıkılmadan hemen önce yapılmalıdır. Bu çağrılar hakkında daha fazla bilgi için bkz . GdiplusStartupOutput. Bu nedenle, çağrı GdiplusStartup
yapmak için iyi bir yerdir ve kanca bildirim işlevleri aşağıda gösterildiği gibi CWinApp::Run sanal işlevini geçersiz kılar:
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;
}
Arka plan GDI+ iş parçacığını gizlemezseniz, ana penceresi oluşturulmadan önce DDE komutları uygulamaya erken oluşturulabilir. Kabuk tarafından verilen DDE komutları erken durdurularak hata iletilerine neden olabilir.
Dosya Yöneticisi Sürükle ve Bırak
Dosyalar Dosya Yöneticisi'ndeki dosya görünümü penceresinden veya Dosya Gezgini uygulamanızdaki bir pencereye sürüklenebilir. Örneğin, bir veya daha fazla dosyanın bir MDI uygulamasının ana penceresine sürüklenerek uygulamanın dosya adlarını almasını ve bu dosyalar için MDI alt pencerelerini açmasını sağlayabilirsiniz.
Uygulamanızda dosya sürükleyip bırakmayı etkinleştirmek için MFC Uygulama Sihirbazı, içindeki ana çerçeve pencereniz InitInstance
için DragAcceptFiles CWnd üye işlevine bir çağrı yazar. Sürükle ve bırak özelliğini uygulamak istemiyorsanız bu çağrıyı kaldırabilirsiniz.
Dekont
Ayrıca OLE ile daha genel sürükle ve bırak özellikleri (belgeler arasında veya belgeler içinde verileri sürükleme) uygulayabilirsiniz. Bilgi için OLE sürükleme ve bırakma makalesine bakın.
En Son Kullanılan Belgeleri İzleme
Kullanıcı dosyaları açıp kapattıkça, uygulama nesnesi en son kullanılan dört dosyayı izler. Bu dosyaların adları Dosya menüsüne eklenir ve değiştiğinde güncelleştirilir. Çerçeve, bu dosya adlarını projenizle aynı adla kayıt defterinde veya .ini dosyasında depolar ve uygulamanız başlatıldığında dosyadan okur. MFC Uygulama Sihirbazı'nın InitInstance
sizin için oluşturduğu geçersiz kılma, en son kullanılan dosya adları da dahil olmak üzere kayıt defterinden veya .ini dosyasından bilgi yükleyen LoadStdProfile Ayarlar CWinApp üye işlevine bir çağrı içerir.
Bu girdiler aşağıdaki gibi depolanır:
Windows NT, Windows 2000 ve sonraki sürümlerde değer bir kayıt defteri anahtarında depolanır.
Windows 3.x'te değer WIN'de depolanır. INI dosyası.
Windows 95 ve sonraki sürümlerde, değer WIN'nin önbelleğe alınmış bir sürümünde depolanır. INI.