TN022: Standart Komutları Uygulama
Dekont
Aşağıdaki teknik not, çevrimiçi belgelere ilk kez eklendiğinden beri güncelleştirilmemiştir. Sonuç olarak, bazı yordamlar ve konular güncel olmayabilir veya yanlış olabilir. En son bilgiler için, çevrimiçi belge dizininde ilgilendiğiniz konuyu aramanız önerilir.
Bu not, MFC 2.0 tarafından sağlanan standart komut uygulamalarını açıklar. İlk olarak Teknik Not 21'i okuyun çünkü standart komutların birçoğunu uygulamak için kullanılan mekanizmalar açıklanmaktadır.
Bu açıklama MFC mimarileri, API'ler ve yaygın programlama uygulamaları hakkında bilgi sahibi olduğunu varsayar. Belgelenmiş ve belgelenmemiş "yalnızca uygulama" API'leri açıklanmıştır. Burası, MFC'deki özellikleri veya nasıl program yapılacağını öğrenmeye başlamak için uygun bir yer değildir. Daha fazla genel bilgi ve belgelenmiş API'lerin ayrıntıları için Visual C++ bölümüne bakın.
Sorun
MFC, AFXRES.H üst bilgi dosyasında birçok standart komut kimlikleri tanımlar. Bu komutlar için çerçeve desteği farklılık gösterir. Çerçeve sınıflarının bu komutları nerede ve nasıl işlediğini anlamak yalnızca çerçevenin dahili olarak nasıl çalıştığını göstermekle kalmaz, standart uygulamaları özelleştirme ve kendi komut işleyicilerinizi uygulamak için size birkaç teknik öğretme konusunda yararlı bilgiler sağlar.
Bu Teknik Notun İçeriği
Her komut kimliği iki bölümde açıklanmıştır:
Başlık: komut kimliğinin sembolik adı (örneğin, ID_FILE_SAVE) ve ardından komutun amacı (örneğin, "geçerli belgeyi kaydeder") iki nokta üst üste ile ayrılmıştır.
Komutu hangi sınıfların uyguladığını ve varsayılan uygulamanın ne yaptığını açıklayan bir veya daha fazla paragraf
Çoğu varsayılan komut uygulaması, çerçevenin temel sınıf ileti eşlemesinde önceden derlenir. Türetilmiş sınıfınızda açık kablolama gerektiren bazı komut uygulamaları vardır. Bunlar "Not" altında açıklanmıştır. AppWizard'da doğru seçenekleri belirlerseniz, bu varsayılan işleyiciler oluşturulan iskelet uygulamada sizin için bağlanır.
Adlandırma Kuralı
Standart komutlar, mümkünse kullanmanızı önerdiğimiz basit bir adlandırma kuralına uyar. Çoğu standart komut, bir uygulamanın menü çubuğundaki standart yerlerde bulunur. Komutun sembolik adı "ID_" ile başlar ve ardından standart açılır menü adı ve ardından menü öğesi adı gelir. Simgesel ad, alt çizgi sözcük sonlarıyla birlikte büyük harfle gösterilir. Standart menü öğesi adları olmayan komutlar için, "ID_" ile başlayan bir mantıksal komut adı tanımlanır (örneğin, ID_NEXT_PANE).
Menü öğelerine, araç çubuğu düğmelerine veya diğer komut kullanıcı arabirimi nesnelerine bağlı olacak şekilde tasarlanmış komutları belirtmek için "ID_" ön ekini kullanırız. "ID_" komutlarını işleyen komut işleyicileri MFC komut mimarisinin ON_COMMAND ve ON_UPDATE_COMMAND_UI mekanizmalarını kullanmalıdır.
Komut mimarisini izlemeyen ve bunları etkinleştirmek ve devre dışı bırakmak için menüye özgü koda ihtiyaç duyan menü öğeleri için standart "IDM_" ön ekini kullanmanızı öneririz. MFC komut mimarisinin takip edilmesi yalnızca komut işleyicilerini daha güçlü hale getirmediğinden (araç çubuklarıyla çalışacakları için) aynı zamanda komut işleyici kodunu yeniden kullanılabilir hale getirdiğinden, elbette menüye özgü komutların sayısı küçük olmalıdır.
Kimlik Aralıkları
MFC'de kimlik aralıklarının kullanımı hakkında daha fazla bilgi için lütfen Teknik Not 20'ye bakın.
MFC standart komutları 0xEFFF 0xE000 aralığında yer alır. Kitaplığın gelecek sürümlerinde değiştirilebilir olduğundan lütfen bu kimliklerin belirli değerlerine güvenmeyin.
Uygulamanız 0xDFFF için 0x8000 aralığındaki komutlarını tanımlamalıdır.
Standart Komut Kimlikleri
Her komut kimliği için, PROMPTS dosyasında bulunabilen standart bir ileti satırı istem dizesi vardır. RC. Bu menü isteminin dize kimliği, komut kimliğiyle aynı olmalıdır.
ID_FILE_NEW Yeni/boş bir belge oluşturur.
Dekont
Bu işlevi etkinleştirmek için bunu türetilmiş sınıfınızın
CWinApp
ileti eşlemesine bağlamanız gerekir.CWinApp::OnFileNew
uygulamadaki belge şablonlarının sayısına bağlı olarak bu komutu farklı şekilde uygular. Yalnızca birCDocTemplate
tane varsa,CWinApp::OnFileNew
uygun çerçeve ve görünüm sınıfının yanı sıra bu türde yeni bir belge oluşturur.Birden
CDocTemplate
fazla varsa,CWinApp::OnFileNew
kullanıcıdan kullanılacak belge türünü seçmesine izin veren bir iletişim kutusu (AFX_IDD_NEWTYPEDLG) ister. SeçilenCDocTemplate
, belgeyi oluşturmak için kullanılır.ID_FILE_NEW yaygın özelleştirmelerinden biri, farklı ve daha grafiksel bir belge türü seçimi sağlamaktır. Bu durumda kendi
CMyApp::OnFileNew
uygulamanızı uygulayabilir ve yerine ileti haritanızaCWinApp::OnFileNew
yerleştirebilirsiniz. Temel sınıf uygulamasını çağırmaya gerek yoktur.ID_FILE_NEW başka bir yaygın özelleştirmesi, her türden bir belge oluşturmak için ayrı bir komut sağlamaktır. Bu durumda, ID_FILE_NEW_CHART ve ID_FILE_NEW_SHEET gibi yeni komut kimlikleri tanımlamanız gerekir.
ID_FILE_OPEN Var olan bir belgeyi açar.
Dekont
Bu işlevi etkinleştirmek için bunu türetilmiş sınıfınızın
CWinApp
ileti eşlemesine bağlamanız gerekir.CWinApp::OnFileOpen
çok basit bir çağrıCWinApp::DoPromptFileName
uygulamasına sahiptir ve ardındanCWinApp::OpenDocumentFile
açılacak dosyanın dosya veya yol adıyla birlikte kullanılır. UygulamaCWinApp
yordamıDoPromptFileName
standart FileOpen iletişim kutusunu getirir ve geçerli belge şablonlarından elde edilen dosya uzantılarıyla doldurur.ID_FILE_OPEN yaygın özelleştirmelerinden biri, DosyaAç iletişim kutusunu özelleştirmek veya ek dosya filtreleri eklemektir. Bunu özelleştirmenin önerilen yolu, varsayılan uygulamayı kendi FileOpen iletişim kutunuzla değiştirmek ve belgenin dosya veya yol adıyla çağırmaktır
CWinApp::OpenDocumentFile
. Temel sınıfı çağırmaya gerek yoktur.ID_FILE_CLOSE Açık durumdaki belgeyi kapatır.
CDocument::OnFileClose
CDocument::SaveModified
, kullanıcıdan belgenin değiştirilmesi durumunda belgeyi kaydetmesini isteyip istemediğinizi sorar ve ardından öğesini çağırırOnCloseDocument
. Belgeyi yok etmek de dahil olmak üzere tüm kapatma mantığı rutindeOnCloseDocument
yapılır.Dekont
ID_FILE_CLOSE, belgeler çerçevesi penceresine gönderilen bir WM_CLOSE iletisinden veya SC_CLOSE sistem komutundan farklı davranır. Bir pencere kapatılırsa, belge ancak belgeyi gösteren son çerçeve penceresiyse kapatılır. Belgeyi ID_FILE_CLOSE kapatıldığında yalnızca belge kapatılmaz, belgeyi gösteren tüm çerçeve pencereleri kapatılır.
ID_FILE_SAVE Geçerli belgeyi kaydeder.
Uygulama, hem
OnFileSaveAs
hem deOnFileSave
için kullanılan bir yardımcı yordamıCDocument::DoSave
kullanır. Daha önce kaydedilmemiş bir belgeyi kaydederseniz (yani, FileNew örneğinde olduğu gibi bir yol adı yoktur) veya salt okunur bir belgeden okunursa,OnFileSave
mantık ID_FILE_SAVE_AS komutu gibi davranır ve kullanıcıdan yeni bir dosya adı sağlamasını ister. Dosyayı açma ve kaydetme işleminin gerçek işlemi sanal işleviOnSaveDocument
aracılığıyla gerçekleştirilir.ID_FILE_SAVE özelleştirmenin iki yaygın nedeni vardır. Kaydedilmeyen belgeler için ID_FILE_SAVE menü öğelerini ve araç çubuğu düğmelerini kullanıcı arabiriminizden kaldırmanız yeterlidir. Ayrıca, belgenizi hiçbir zaman kirletdiğinizden (yani, hiçbir zaman aramadığınızdan
CDocument::SetModifiedFlag
) emin olun ve çerçeve belgenin kaydedilmesine hiçbir zaman neden olmaz. Disk dosyası dışında bir yere kaydeden belgeler için bu işlem için yeni bir komut tanımlayın.durumunda
COleServerDoc
, ID_FILE_SAVE hem dosya kaydetme (normal belgeler için) hem de dosya güncelleştirmesi (eklenmiş belgeler için) için kullanılır.Belge verileriniz tek tek disk dosyalarında depolanıyorsa ancak varsayılan
CDocument
serileştirme uygulamasını kullanmak istemiyorsanız yerine geçersiz kılmanızCDocument::OnSaveDocument
OnFileSave
gerekir.ID_FILE_SAVE_AS Geçerli belgeyi farklı bir dosya adı altında kaydeder.
Uygulama,
CDocument::OnFileSaveAs
ile aynıCDocument::DoSave
yardımcı yordamıOnFileSave
kullanır. BelgelerdeOnFileSaveAs
kaydetmeden önce dosya adı yoksa, komut aynı ID_FILE_SAVE işlenir.COleServerDoc::OnFileSaveAs
normal bir belge veri dosyasını kaydetmek veya başka bir uygulamaya katıştırılmış ole nesnesini temsil eden bir sunucu belgesini ayrı bir dosya olarak kaydetmek için mantığı uygular.ID_FILE_SAVE mantığını özelleştirirseniz, büyük olasılıkla ID_FILE_SAVE_AS benzer şekilde özelleştirmek istersiniz veya "Farklı Kaydet" işlemi belgenize uygulanmayabilir. Gerekli değilse menü çubuğunuzdaki menü öğesini kaldırabilirsiniz.
ID_FILE_SAVE_COPY_AS Geçerli belgenin kopyasını yeni bir adla kaydeder.
Uygulama
COleServerDoc::OnFileSaveCopyAs
, belge nesnesinin kaydetmeden sonra temel dosyaya "eklenmemesi" dışında uygulamasına çok benzerCDocument::OnFileSaveAs
. Yani, bellek içi belge kaydetmeden önce "değiştirildi" ise, yine de "değiştirilir". Ayrıca, bu komutun belgede depolanan yol adı veya başlığı üzerinde hiçbir etkisi yoktur.ID_FILE_UPDATE Eklenmiş belgeyi kaydetmesi için kapsayıcıya bildirir.
Uygulama
COleServerDoc::OnUpdateDocument
yalnızca kapsayıcıya eklemenin kaydedilmesi gerektiğini bildirmektedir. Kapsayıcı daha sonra eklenmiş nesneyi kaydetmek için uygun OLE API'lerini çağırır.ID_FILE_PAGE_SETUP Uygulamaya özgü sayfa yapısı/düzeni iletişim kutusunu çağırır.
Şu anda bu iletişim kutusu için standart yoktur ve çerçevede bu komutun varsayılan uygulaması yoktur.
Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_FILE_PRINT_SETUP Standart Yazdırma Kurulumu iletişim kutusunu çağırın.
Dekont
Bu işlevi etkinleştirmek için bunu türetilmiş sınıfınızın
CWinApp
ileti eşlemesine bağlamanız gerekir.Bu komut, kullanıcının en azından bu belge veya bu uygulamadaki en çok tüm belgeler için yazıcı ve yazdırma ayarlarını özelleştirmesine olanak tanıyan standart yazdırma kurulumu iletişim kutusunu çağırır. Tüm sistemin varsayılan yazıcı ayarlarını değiştirmek için Denetim Masası kullanmanız gerekir.
CWinApp::OnFilePrintSetup
bir nesne oluşturup uygulama işlevini çağıranCWinApp::DoPrintDialog
çok basit birCPrintDialog
uygulamaya sahiptir. Bu, uygulamanın varsayılan yazıcı kurulumunu ayarlar.Bu komutu özelleştirmenin yaygın gereksinimi, kaydedildiğinde belgeyle birlikte depolanması gereken belge başına yazıcı ayarlarına izin vermektir. Bunu yapmak için sınıfınıza
CDocument
bir nesne oluşturan, uygun yazıcı öznitelikleriyle (genellikle hDevMode ve hDevNames) başlatan, çağıranCPrintDialog::DoModal
ve değiştirilen yazıcı ayarlarını kaydeden birCPrintDialog
ileti eşlemesi işleyicisi eklemeniz gerekir. Sağlam bir uygulama için, hataları algılamak ve mantıklı varsayılanlarla ilgilenmek veCWinApp::UpdatePrinterSelection
sistem genelindeki yazıcı değişikliklerini izlemek için uygulamasınaCWinApp::DoPrintDialog
bakmanız gerekir.geçerli belgenin standart yazdırmasını ID_FILE_PRINT
Dekont
Bu işlevi etkinleştirmek için bunu türetilmiş sınıfınızın
CView
ileti eşlemesine bağlamanız gerekir.Bu komut geçerli belgeyi yazdırır veya daha doğru bir şekilde yazdırma işlemini başlatır ve bu işlem standart yazdırma iletişim kutusunu çağırmayı ve yazdırma altyapısını çalıştırmayı içerir.
CView::OnFilePrint
bu komutu ve ana yazdırma döngüsünü uygular. Yazdır iletişim kutusuyla kullanıcıdan bilgi almak için sanalıCView::OnPreparePrinting
çağırır. Ardından çıktı DC'sini yazıcıya gidecek şekilde hazırlar, yazdırma ilerleme durumu iletişim kutusunu (AFX_IDD_PRINTDLG) getirir ve çıkışı yazıcıya gönderirStartDoc
.CView::OnFilePrint
ayrıca ana sayfa odaklı yazdırma döngüsünü içerir. Her sayfa için sanalıCView::OnPrepareDC
ve ardından birStartPage
kaçışı çağırır ve bu sayfa için sanalıCView::OnPrint
çağırır. Tamamlandığında sanalCView::OnEndPrinting
çağrılır ve yazdırma ilerleme durumu iletişim kutusu kapatılır.MFC yazdırma mimarisi, yazdırma ve baskı önizleme için birçok farklı yolla bağlanacak şekilde tasarlanmıştır. Normalde çeşitli geçersiz kılınabilir işlevleri sayfa odaklı yazdırma görevleri için yeterli bulursunuz
CView
. Yalnızca sayfa odaklı olmayan çıkış için yazıcıyı kullanan bir uygulama söz konusu olduğunda, ID_FILE_PRINT uygulamasını değiştirme gereksinimini bulmanız gerekir.ID_FILE_PRINT_PREVIEW Geçerli belge için baskı önizleme moduna girin.
Dekont
Bu işlevi etkinleştirmek için bunu türetilmiş sınıfınızın
CView
ileti eşlemesine bağlamanız gerekir.CView::OnFilePrintPreview
, belgelenmiş yardımcı işleviniCView::DoPrintPreview
çağırarak baskı önizleme modunu başlatır.CView::DoPrintPreview
baskı döngüsü için ana altyapı olduğu gibiOnFilePrint
baskı önizleme döngüsünün ana altyapısıdır.Baskı önizleme işlemi, 'a
DoPrintPreview
farklı parametreler geçirilerek çeşitli yollarla özelleştirilebilir. Baskı önizlemenin bazı ayrıntılarını ve nasıl özelleştirileceği hakkında bilgi veren Teknik Not 30'a bakın.ID_FILE_MRU_FILE1... FILE16 Dosya MRU listesi için bir dizi komut kimlikleri.
CWinApp::OnUpdateRecentFileMenu
, ON_UPDATE_COMMAND_UI mekanizmasının daha gelişmiş kullanımlarından biri olan bir güncelleştirme komutu UI işleyicisidir. Menü kaynağınızda, kimlik ID_FILE_MRU_FILE1 yalnızca tek bir menü öğesi tanımlamanız gerekir. Bu menü öğesi başlangıçta devre dışı kalır.MRU listesi büyüdükçe, listeye daha fazla menü öğesi eklenir. Standart
CWinApp
uygulama varsayılan olarak en son kullanılan dört dosyanın standart sınırına ayarlanmıştır. Daha büyük veya daha küçük bir değerle çağırarakCWinApp::LoadStdProfileSettings
varsayılanı değiştirebilirsiniz. MRU listesi uygulamanın içinde depolanır. INI dosyası. çağrısı yaparsanızLoadStdProfileSettings
liste uygulamanızın işlevineInitInstance
yüklenir ve uygulamanız çıktığında kaydedilir. MRU güncelleştirme komutu kullanıcı arabirimi işleyicisi, mutlak yolları dosya menüsünde görüntülenmek üzere göreli yollara da dönüştürür.CWinApp::OnOpenRecentFile
, gerçek komutu gerçekleştiren ON_COMMAND işleyicidir. Yalnızca MRU listesinden dosya adını alır ve dosyayı açma ve MRU listesini güncelleştirmenin tüm işlerini yapan öğesini çağırırCWinApp::OpenDocumentFile
.Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_EDIT_CLEAR Geçerli seçimi temizler
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.CEditView
kullanarakCEdit::Clear
bu komutun bir uygulamasını sağlar. Geçerli bir seçim yoksa komut devre dışı bırakılır.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_EDIT_CLEAR_ALL Belgenin tamamını temizler.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz. Örnek uygulama için bkz. MFC Öğreticisi örnek KARALAMA .
ID_EDIT_COPY Geçerli seçimi Pano'ya kopyalar.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.CEditView
, şu anda seçili olan metni kullanarakCEdit::Copy
panoya CF_TEXT olarak kopyalayan bu komutun bir uygulamasını sağlar. Geçerli bir seçim yoksa komut devre dışı bırakılır.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_EDIT_CUT Geçerli seçimi Pano'ya keser.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.CEditView
, şu anda seçili olan metni kullanarakCEdit::Cut
panoya CF_TEXT olarak kesen bu komutun bir uygulamasını sağlar. Geçerli bir seçim yoksa komut devre dışı bırakılır.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_EDIT_FIND Bulma işlemini başlatır, modsuz bul iletişim kutusunu açar.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.CEditView
, önceki bulma/değiştirme ayarlarını özel uygulama değişkenlerinde kullanmak ve depolamak için uygulama yardımcı işleviniOnEditFindReplace
çağıran bu komutun bir uygulamasını sağlar. sınıfıCFindReplaceDialog
, kullanıcıya sorulmak üzere modsuz iletişim kutusunu yönetmek için kullanılır.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_EDIT_PASTE Geçerli Pano içeriğini ekler.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.CEditView
, kullanarakCEdit::Paste
seçili metnin yerine geçerli Pano verilerini kopyalayan bu komutun bir uygulamasını sağlar. Pano'da CF_TEXT yoksa komut devre dışı bırakılır.COleClientDoc
yalnızca bu komut için bir güncelleştirme komutu kullanıcı arabirimi işleyicisi sağlar. Pano eklenebilir bir OLE öğesi/nesnesi içermiyorsa, komut devre dışı bırakılır. Asıl yapıştırmayı yapmak için gerçek komutun işleyicisini yazmak sizin sorumluluğundadır. OLE uygulamanız başka biçimler de yapıştırabiliyorsa, görünüm veya belgenizde (yani, komut hedef yönlendirmesinde daha önceCOleClientDoc
bir yerde) kendi güncelleştirme komut ui işleyicinizi sağlamanız gerekir.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
Standart OLE uygulamasını değiştirmek için kullanın
COleClientItem::CanPaste
.ID_EDIT_PASTE_LINK Geçerli Pano içeriğinden bir bağlantı ekler.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.COleDocument
yalnızca bu komut için bir güncelleştirme komutu kullanıcı arabirimi işleyicisi sağlar. Panoda bağlanabilir OLE öğesi/nesnesi yoksa, komut devre dışı bırakılır. Asıl yapıştırmayı yapmak için gerçek komutun işleyicisini yazmak sizin sorumluluğundadır. OLE uygulamanız başka biçimler de yapıştırabiliyorsa, görünüm veya belgenizde (yani, komut hedef yönlendirmesinde daha önceCOleDocument
bir yerde) kendi güncelleştirme komut ui işleyicinizi sağlamanız gerekir.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
Standart OLE uygulamasını değiştirmek için kullanın
COleClientItem::CanPasteLink
.ID_EDIT_PASTE_SPECIAL Geçerli Pano içeriğini seçeneklerle ekler.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir. MFC bu iletişim kutusunu sağlamaz.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_EDIT_REPEAT Son işlemi yineler.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.CEditView
, son bulma işlemini yinelemek için bu komutun bir uygulamasını sağlar. Son bulma için özel uygulama değişkenleri kullanılır. Bulma girişiminde bulunamazsa komut devre dışı bırakılır.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_EDIT_REPLACE Değiştirme işlemini başlatır, modsuz değiştirme iletişim kutusunu açar.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.CEditView
, önceki bulma/değiştirme ayarlarını özel uygulama değişkenlerinde kullanmak ve depolamak için uygulama yardımcı işleviniOnEditFindReplace
çağıran bu komutun bir uygulamasını sağlar.CFindReplaceDialog
sınıfı, kullanıcıdan istemde bulunan modsuz iletişim kutusunu yönetmek için kullanılır.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_EDIT_SELECT_ALL Belgenin tamamını seçer.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.CEditView
, belgedeki tüm metni seçen bu komutun bir uygulamasını sağlar. Seçecek metin yoksa komut devre dışı bırakılır.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_EDIT_UNDO Son işlemi geri alır.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.CEditView
kullanarakCEdit::Undo
bu komutun bir uygulamasını sağlar. YANLIŞ döndürürseCEdit::CanUndo
komut devre dışı bırakılır.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_EDIT_REDO Son işlemi yineler.
Şu anda bu komut için standart bir uygulama yoktur. Bunu türetilmiş her
CView
sınıf için uygulamanız gerekir.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_WINDOW_NEW Etkin belgede başka bir pencere açar.
CMDIFrameWnd::OnWindowNew
geçerli belgenin başka bir görünümünü içeren başka bir çerçeve oluşturmak için geçerli belgenin belge şablonunu kullanarak bu güçlü özelliği uygular.Çoğu birden çok belge arabirimi (MDI) Penceresi menü komutu gibi, etkin MDI alt penceresi yoksa komut devre dışı bırakılır.
Bu komut işleyicisinin özelleştirilmesi önerilmez. Ek görünümler veya çerçeve pencereleri oluşturan bir komut sağlamak istiyorsanız, kendi komutunuzu icat etmek muhtemelen daha iyi olacaktır. Kodu kopyalayabilir
CMDIFrameWnd::OnWindowNew
ve belirli çerçeveye değiştirebilir ve beğendiğiniz sınıfları görüntüleyebilirsiniz.ID_WINDOW_ARRANGE MDI penceresinin alt kısmındaki Yerleştir simgeleri.
CMDIFrameWnd
bu standart MDI komutunu bir uygulama yardımcı işlevindeOnMDIWindowCmd
uygular. Bu yardımcı, komut kimliklerini MDI Windows iletileriyle eşler ve bu nedenle çok fazla kod paylaşabilir.Çoğu MDI Penceresi menü komutu gibi, etkin MDI alt penceresi yoksa komut devre dışı bırakılır.
Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_WINDOW_CASCADE Cascades pencereleri üst üste gelecek şekilde.
CMDIFrameWnd
bu standart MDI komutunu bir uygulama yardımcı işlevindeOnMDIWindowCmd
uygular. Bu yardımcı, komut kimliklerini MDI Windows iletileriyle eşler ve bu nedenle çok fazla kod paylaşabilir.Çoğu MDI Penceresi menü komutu gibi, etkin MDI alt penceresi yoksa komut devre dışı bırakılır.
Bu komut işleyicisinin özelleştirilmesi önerilmez.
Kutucuklar pencerelerini yatay olarak ID_WINDOW_TILE_HORZ.
Bu komut aynı ID_WINDOW_CASCADE gibi uygulanır
CMDIFrameWnd
, ancak işlem için farklı bir MDI Windows iletisi kullanılır.Uygulamanız için varsayılan kutucuk yönlendirmesini seçmelisiniz. Bunu yapmak için Pencere "Kutucuğu" menü öğesinin kimliğini ID_WINDOW_TILE_HORZ veya ID_WINDOW_TILE_VERT olarak değiştirebilirsiniz.
Kutucuklar pencerelerini dikey olarak ID_WINDOW_TILE_VERT.
Bu komut aynı ID_WINDOW_CASCADE gibi uygulanır
CMDIFrameWnd
, ancak işlem için farklı bir MDI Windows iletisi kullanılır.Uygulamanız için varsayılan kutucuk yönlendirmesini seçmelisiniz. Bunu yapmak için Pencere "Kutucuğu" menü öğesinin kimliğini ID_WINDOW_TILE_HORZ veya ID_WINDOW_TILE_VERT olarak değiştirebilirsiniz.
Bölücüye klavye arabirimini ID_WINDOW_SPLIT.
CView
uygulama içinCSplitterWnd
bu komutu işler. Görünüm bir bölücü penceresinin parçasıysa, bu komut uygulama işlevineCSplitterWnd::DoKeyboardSplit
temsilci olarak atanır. Böylece bölücü, klavye kullanıcılarının bölücü penceresini bölmesine veya ayırmasını kaldırmasına olanak sağlayacak bir moda yerleştirir.Görünüm bir ayırıcıda değilse bu komut devre dışı bırakılır.
Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_APP_ABOUT Hakkında iletişim kutusunu çağırır.
Bir uygulamanın Hakkında kutusu için standart bir uygulama yoktur. AppWizard tarafından oluşturulan varsayılan uygulama, uygulamanız için özel bir iletişim kutusu sınıfı oluşturur ve Bu sınıfı Hakkında kutunuz olarak kullanır. AppWizard, bu komutu işleyen ve iletişim kutusunu çağıran önemsiz komut işleyicisini de yazar.
Bu komutu neredeyse her zaman uygulayacaksınız.
ID_APP_EXIT Uygulamadan çıkın.
CWinApp::OnAppExit
uygulamanın ana penceresine bir WM_CLOSE iletisi göndererek bu komutu işler. Uygulamanın standart olarak kapatılması (kirli dosyaların istenmesi vb.) uygulama tarafındanCFrameWnd
işlenir.Bu komut işleyicisinin özelleştirilmesi önerilmez. Geçersiz kılma
CWinApp::SaveAllModified
veyaCFrameWnd
kapatma mantığı önerilir.Bu komutu uygulamayı seçerseniz, bu komut kimliğini kullanmanızı öneririz.
ID_HELP_INDEX Yardım konularını listeler. HLP dosyası.
Dekont
Bu işlevi etkinleştirmek için bunu türetilmiş sınıfınızın
CWinApp
ileti eşlemesine bağlamanız gerekir.CWinApp::OnHelpIndex
bu komutu önemsiz bir şekilde çağırarakCWinApp::WinHelp
işler.Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_HELP_USING Yardım'ın nasıl kullanılacağına ilişkin yardım görüntüler.
Dekont
Bu işlevi etkinleştirmek için bunu türetilmiş sınıfınızın
CWinApp
ileti eşlemesine bağlamanız gerekir.CWinApp::OnHelpUsing
bu komutu önemsiz bir şekilde çağırarakCWinApp::WinHelp
işler.Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_CONTEXT_HELP SHIFT-F1 yardım moduna girer.
Dekont
Bu işlevi etkinleştirmek için bunu türetilmiş sınıfınızın
CWinApp
ileti eşlemesine bağlamanız gerekir.CWinApp::OnContextHelp
, yardım modu imlecini ayarlayarak, kalıcı bir döngü girerek ve kullanıcının yardım almak için bir pencere seçmesini bekleyerek bu komutu işler. MFC Yardım uygulaması hakkında daha fazla bilgi için lütfen Teknik Not 28'e bakın.Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_HELP Geçerli bağlamla ilgili yardım sağlar
Dekont
Bu işlevi etkinleştirmek için bunu türetilmiş sınıfınızın
CWinApp
ileti eşlemesine bağlamanız gerekir.CWinApp::OnHelp
geçerli uygulama bağlamı için doğru yardım bağlamını alarak bu komutu işler. Bu işlem basit F1 yardımını, ileti kutularıyla ilgili yardım vb. işler. MFC yardım uygulaması hakkında daha fazla bilgi için lütfen Teknik Not 28'e bakın.Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_DEFAULT_HELP Bağlam için varsayılan yardımı görüntüler
Dekont
Bu işlevi etkinleştirmek için bunu türetilmiş sınıfınızın
CWinApp
ileti eşlemesine bağlamanız gerekir.Bu komut genellikle ile
CWinApp::OnHelpIndex
eşlenir.Varsayılan Yardım ile Yardım dizini arasında bir ayrım isteniyorsa farklı bir komut işleyicisi sağlanabilir.
ID_NEXT_PANE Sonraki bölmeye gider
CView
uygulama içinCSplitterWnd
bu komutu işler. Görünüm bir bölücü penceresinin parçasıysa, bu komut uygulama işlevineCSplitterWnd::OnNextPaneCmd
temsilci olarak atanır. Bu işlem etkin görünümü bölücüdeki bir sonraki bölmeye taşır.Görünüm bir bölücüde değilse veya gidecek bir sonraki bölme yoksa bu komut devre dışı bırakılır.
Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_PREV_PANE Önceki bölmeye gider
CView
uygulama içinCSplitterWnd
bu komutu işler. Görünüm bir bölücü penceresinin parçasıysa, bu komut uygulama işlevineCSplitterWnd::OnNextPaneCmd
temsilci olarak atanır. Bu işlem etkin görünümü bölücüdeki önceki bölmeye taşır.Görünüm bir bölücüde değilse veya gidecek önceki bir bölme yoksa bu komut devre dışı bırakılır.
Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_OLE_INSERT_NEW Yeni bir OLE nesnesi ekler
Şu anda bu komut için standart bir uygulama yoktur. Geçerli seçime yeni bir OLE öğesi/nesnesi eklemek için türetilmiş sınıfınız
CView
için bunu uygulamanız gerekir.Tüm OLE istemci uygulamaları bu komutu uygulamalıdır. AppWizard, OLE seçeneğiyle, görünüm sınıfınızda tamamlamanız gereken bir iskelet uygulaması
OnInsertObject
oluşturur.Bu komutun eksiksiz bir şekilde uygulanması için MFC OLE örneği OCLIENT örneğine bakın.
ID_OLE_EDIT_LINKS OLE bağlantılarını düzenler
COleDocument
bu komutu, standart OLE bağlantıları iletişim kutusunun MFC tarafından sağlanan uygulamasını kullanarak işler. Bu iletişim kutusunun uygulamasınaCOleLinksDialog
sınıfı üzerinden erişilir. Geçerli belge herhangi bir bağlantı içermiyorsa, komut devre dışı bırakılır.Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_OLE_VERB_FIRST... SON OLE fiilleri için bir kimlik aralığı
COleDocument
seçili durumdaki OLE öğesi/nesnesi tarafından desteklenen fiiller için bu komut kimliği aralığını kullanır. Belirli bir OLE öğesi/nesne türü sıfır veya daha fazla özel fiil destekleyebileceğinden bu bir aralık olmalıdır. Uygulamanızın menüsünde, ID_OLE_VERB_FIRST kimliğine sahip bir menü öğeniz olmalıdır. Program çalıştırıldığında, menü uygun menü fiil açıklaması (veya birçok fiil içeren açılır menü) ile güncelleştirilir. OLE menüsünün yönetimi tarafındanAfxOleSetEditMenu
işlenir ve bu komut için güncelleştirme komutu kullanıcı arabirimi işleyicisinde gerçekleştirilir.Bu aralıktaki komut kimliğinin her birini işlemek için açık bir komut işleyicisi yoktur.
COleDocument::OnCmdMsg
bu aralıktaki tüm komut kimliklerini yakalamak, sıfır tabanlı fiil numaralarına dönüştürmek ve bu fiil için sunucuyu başlatmak için geçersiz kılınır (kullanarakCOleClientItem::DoVerb
).Bu komut kimliği aralığının özelleştirilmesi veya başka bir şekilde kullanılması önerilmez.
ID_VIEW_TOOLBAR Araç çubuğunu açıp kapatır
CFrameWnd
araç çubuğunun görünür durumunu değiştirmek için bu komutu ve update-command kullanıcı arabirimi işleyicisini işler. Araç çubuğu, AFX_IDW_TOOLBAR alt pencere kimliğine sahip çerçevenin alt penceresi olmalıdır. Komut işleyicisi aslında araç çubuğu penceresinin görünürlüğünü değiştirir.CFrameWnd::RecalcLayout
yeni durumunda araç çubuğuyla çerçeve penceresini yeniden çizmek için kullanılır. Update-command kullanıcı arabirimi işleyicisi, araç çubuğu görünür olduğunda menü öğesini denetler.Bu komut işleyicisinin özelleştirilmesi önerilmez. Ek araç çubukları eklemek isterseniz, bu komut için komut işleyicisini ve update-command kullanıcı arabirimi işleyicisini kopyalayıp değiştirmek istersiniz.
ID_VIEW_STATUS_BAR Durum çubuğunu açıp kapatır
Bu komut, farklı bir alt pencere kimliği (AFX_IDW_STATUS_BAR) kullanılması dışında ID_VIEW_TOOLBAR gibi uygulanır
CFrameWnd
.
Yalnızca Güncelleştirme Komut İşleyicileri
Durum çubuklarında gösterge olarak birkaç standart komut kimlikleri kullanılır. Bunlar, uygulama boşta kalma süresi sırasında geçerli görsel durumlarını görüntülemek için aynı update-command kullanıcı arabirimi işleme mekanizmasını kullanır. Kullanıcı tarafından seçilemediğinden (yani durum çubuğu bölmesi gönderemediğiniz için), bu komut kimlikleri için bir ON_COMMAND işleyicisi olması mantıklı değildir.
ID_INDICATOR_CAPS: CAP kilit göstergesi.
ID_INDICATOR_NUM: NUM kilit göstergesi.
ID_INDICATOR_SCRL: SCRL kilit göstergesi.
ID_INDICATOR_KANA: KANA kilit göstergesi (yalnızca Japon sistemleri için geçerlidir).
Bunların üçü de CFrameWnd::OnUpdateKeyIndicator
, uygun Sanal Anahtara eşlemek için komut kimliğini kullanan bir uygulama yardımcısında uygulanır. Yaygın bir uygulama, uygun Sanal Anahtarın CCmdUI
şu anda kilitli olup olmadığına bağlı olarak nesneyi etkinleştirir veya devre dışı bırakır (durum bölmeleri için devre dışı = metin yok).
Bu komut işleyicisinin özelleştirilmesi önerilmez.
ID_INDICATOR_EXT: EXTended select göstergesi.
ID_INDICATOR_OVR: OVeRstrike göstergesi.
ID_INDICATOR_REC: YENIDEN Kayıt göstergesi.
Şu anda bu göstergeler için standart bir uygulama yoktur.
Bu göstergeleri uygulamayı seçerseniz, bu gösterge kimliklerini kullanmanızı ve durum çubuğunuzdaki göstergelerin sıralamasını korumanızı öneririz (yani, şu sırayla: EXT, CAP, NUM, SCRL, OVR, REC).