Aracılığıyla paylaş


TN024: mfc tanımlı iletileri ve kaynaklar

[!NOT]

İlk çevrimiçi belgelerinde yer almıştır beri aşağıdaki teknik Not güncelleştirilmedi.Sonuç olarak bazı yordamlar ve konuları eski veya yanlış.En son bilgiler için çevrimiçi belgelere dizini ilgilendiğiniz konu aramak önerilir.

Bu not iç Windows iletilerini ve mfc tarafından kullanılan kaynak biçimleri açıklanmaktadır.Bu bilgiler framework uygulaması açıklar ve uygulama hata ayıklama işlemine yardımcı olur.Bu bilgiler resmi olarak desteklenmeyen olsa adventurous için size bu bilgilerin bazıları Gelişmiş uygulamaları için kullanabilir.

Bu not, mfc özel uygulama ayrıntılarını içerir; tüm içeriği gelecekte farklılık gösterebilir.mfc özel Windows iletilerini bir uygulama kapsamı içinde anlam ancak ileride sistem genelinde iletileri içerecek şekilde değişecektir.

Aralık, mfc özel Windows iletilerini ve kaynak türleri ayrılmış "Sistem" aralığında kenara Microsoft Windows tarafından ayarlanır.Şu anda tüm sayılar aralıklara kullanılır ve gelecekte yeni numaraları kullanılabilir.Şu anda kullanılan numaraları değişmiş.

mfc özel Windows iletilerdir aralığında 0x360 - > 0x37F.

mfc özel kaynak türleridir aralığında 0xF0 - > 0xFF.

mfc özel Windows iletileri

Bu Windows iletilerini C++ sanal işlevler yerine nispeten gevşek bağlantı penceresindeki nesneler arasında ve burada C++ sanal işlevi uygun olmayacaktır gerekli olduğu kullanılır.

Bu özel Windows iletilerini ve ilişkili parametresi yapıları mfc özel üstbilgi içinde bildirilen ' AFXPRIV.H'.Bu üstbilgi içeren kodunuzun herhangi belgelenmemiş davranış ve büyük olasılıkla sonu olacak gelecekte mfc sürümleri güvenmek olduğunu uyarı.

Bu iletilerden birini işlemeye gerek, taraflar, kullanmanız gereken ON_MESSAGE ileti eşleme makro ve genel wparam/lresult/lparam biçimindeki iletiyi işlemek.

WM_QUERYAFXWNDPROC

Bu ileti, oluşturulmakta olan bir pencere gönderilir.Bu çok erken oluşturma işleminde WndProc ise belirleme yöntemi olarak gönderilen AfxWndProc.AfxWndProc 1 döndürür.

wParam

Kullanılmıyor

lParam

Kullanılmıyor

döndürür

1 tarafından işlenen AfxWndProc

WM_SIZEPARENT

Bu ileti bir çerçeve penceresi tarafından hemen alt yeniden boyutlandırma sırasında gönderilir (CFrameWnd::OnSize çağrıları CFrameWnd::RecalcLayout hangi çağrı CWnd::RepositionBars) Denetim çubuklarından yan çerçevesinin etrafında yeniden konumlandırmak için.AFX_SIZEPARENTPARAMS yapısı içeren geçerli kullanılabilir istemci dikdörtgenin üst ve (olabilen null) hdwp çağırmak, DeferWindowPos yeniden çizilmesini en aza indirmek için.

wParam

Kullanılmıyor

lParam

Adres, bir AFX_SIZEPARENTPARAMS yapısı

döndürür

Kullanılmayan (0)

İletiyi yoksayarak pencere düzeni bölümü kaplamaz gösterir.

WM_SETMESSAGESTRING

Bu ileti, durum çubuğundaki ileti satırı güncelleştirmek için sor çerçeve penceresine gönderilir.Bir dize kimliği ya da bir LPCTSTR belirtilmelidir (ancak ikisi birden değil) olabilir.

wParam

Kimliği (veya sıfır) dize

lParam

LPCTSTR dize (veya null)

döndürür

Kullanılmayan (0)

WM_IDLEUPDATECMDUI

Bu ileti, boşta kalma süresi güncelleştirme komutu UI işleyicileri boşta kalma süresi güncelleştirme uygulamak için gönderilir.İleti penceresi (genellikle Denetim çubuğu) işleme, oluşturduğu bir CCmdUI (veya nesneyi türetilmiş bir sınıf) ve CCmdUI::DoUpdate penceresinde "öğeler" için.Bu sırayla için denetleyecek bir ON_UPDATE_COMMAND_UI nesneleri komut işleyicisi zincirindeki işleyicisi.

wParam

bool bDisableIfNoHandler

lParam

Kullanılmayan (0)

döndürür

Kullanılmayan (0)

bDisableIfNoHandler varsa ne UI nesnesini devre dışı bırakmak için sıfır olan bir ON_UPDATE_COMMAND_UI ne de ON_COMMAND işleyicisi.

WM_EXITHELPMODE

Bu ileti için deftere nakledilen bir CFrameWnd , çıkmak bağlam duyarlı Yardım modu.Bu iletinin alınması tarafından başlatılan kalıcı döngü sona CFrameWnd::OnContextHelp.

wParam

Kullanılmayan (0)

lParam

Kullanılmayan (0)

döndürür

Kullanılmıyor

WM_INITIALUPDATE

Bunları kendi ilk güncelleştirme yapmak güvenli olduğunu bu iletiyi belge şablonu tarafından çerçeve penceresi tüm bağımlıları için gönderilir.Çağrı eşler CView::OnInitialUpdate , ancak diğer kullanılan CWnd-türetilmiş sınıfları diğer one-shot güncelleştirmek için.

wParam

Kullanılmayan (0)

lParam

Kullanılmayan (0)

döndürür

Kullanılmayan (0)

WM_RECALCPARENT

Bu ileti, üst pencere görünümü tarafından gönderilir (aracılığıyla elde GetParent) düzeni yeniden hesaplama zorlamak için (genellikle üst çağıracak RecalcLayout).Çerçeve boyutu görünümün toplam boyutu büyüdükçe ulaşması gerekli olduğu bu ole sunucu uygulamalarında kullanılır.

Üst pencere bu iletinin işlerse bu doğru dönün ve lParam istemci alanının yeni boyutu ile geçirilen rect doldurun.Bu kullanılan CScrollView düzgün kaydırma çubukları (eklendiklerinde penceresinin dışına sonra yerinde) işlemek için bir sunucu nesnesi olduğunda yerinde etkinleştirildi.

wParam

Kullanılmayan (0)

lParam

lprect rectClient null olabilir

döndürür

true yeni istemci dikdörtgen döndürdü, false Aksi

WM_SIZECHILD

Bu iletiyi gönderdiği COleResizeBar onun sahibi penceresine (VIA GetOwner) yeniden ne zaman kullanıcı boyutlandırır boyutlandırma tutamaçları boyutlandırma çubuğunu.COleIPFrameWndBu ileti, kullanıcının istediği gibi çerçeve penceresi yeniden konumlandırmak deneyerek yanıt verir.

İstemci koordinatlarında bulunan yeniden boyutlandırma çubuğunu içeren çerçevenin penceresine verilen yeni dikdörtgen at lParam tarafından verilir.

wParam

Kullanılmayan (0)

lParam

lprect rectNew

döndürür

Kullanılmayan (0)

WM_DISABLEMODAL

Tüm açılır pencereleri devre dışı bırakılması bir çerçeve penceresi olduğu için bu ileti gönderilir.Çerçeve penceresi sonuç açılır pencere devre dışı bırakmak isteyip istemediğinizi belirlemek için kullanır.

Bu çerçeve kalıcı durumuna girdiğinde açılır pencereniz özel işlem gerçekleştirmek veya belirli açılır pencereleri devre dışı tutmak için kullanabilirsiniz.Araç ipuçları bu iletiyi çerçeve penceresi kalıcı bir duruma, örneğin gittiğinde kendilerini yok etmek için kullanın.

wParam

Kullanılmayan (0)

lParam

Kullanılmayan (0)

döndürür

Sıfır olmayan değil pencere devre dışı bırakmak, 0 gösteren pencere devre dışı bırakılır

WM_FLOATSTATUS

Bu ileti, çerçeve etkinleştirilmiş veya devre dışı başka bir üst düzey çerçeve penceresi çerçeve penceresi tarafından sahip olunan tüm açılır pencereleri gönderilir.Bu uygulama tarafından kullanılan MFS_SYNCACTIVE , CMiniFrameWnd, bu açılan pencereleri etkinleştirme etkinleştirme üst düzey çerçeve penceresi ile eşitlenmiş tutmak için.

wParam

Aşağıdaki değerlerden biridir:

FS_SHOW

FS_HIDE

FS_ACTIVATE

FS_DEACTIVATE

FS_ENABLEFS_DISABLE

FS_SYNCACTIVE

lParam

Kullanılmayan (0)

Dönüş değeri sıfır olmalı, FS_SYNCACTIVE kümesi ve pencere bölmeye üst çerçeve ile kendi etkinleştirme gerçekleşir.CMiniFrameWndsıfırdan stil kümesi döndürür MFS_SYNCACTIVE.

Uygulaması, daha fazla bilgi için bkz: CMiniFrameWnd.

WM_ACTIVATETOPLEVEL

Bu ileti, "üst düzey grubu" penceresinde etkin devre dışı veya bir üst düzey pencere gönderilir.Bir üst düzey grubun parçası (üst veya sahibi) bir üst düzey pencere olduğu veya böyle bir pencereye ait penceredir.Bu ileti için kullanılan benzer WM_ACTIVATEAPP, , ancak burada windows farklı işlemlere ait karma tek pencere hiyerarşisinde (ole uygulamaları Ortak) durumlarda çalışır.

WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE

Bu iletiler, bağlama duyarlı Yardım uygulamasında kullanılır.Bakın Teknik Not 28 daha fazla bilgi için.

mfc özel kaynak biçimleri

Şu anda, iki özel kaynak biçimleri mfc tanımlar: rt_toolbar ve RT_DLGINIT.

rt_toolbar kaynak biçimi

AppWizard tarafından sağlanan varsayılan araç dayalı bir rt_toolbar mfc 4. 0'da başlanan özel bir kaynak.Bu kaynak araç Düzenleyicisi'ni kullanarak düzenleyebilirsiniz.

RT_DLGINIT kaynak biçimi

Bir mfc kaynak özel biçim, ek iletişim başlatma bilgileri depolamak için kullanılır.Bu, açılan kutuda saklanan ilk dizelerini içerir.Bu kaynak biçimini el ile düzenlenmesi için tasarlanmamıştır ancak Visual C++ tarafından ele alınır.

Visual C++ ve bu RT_DLGINIT kaynak kaynak bilgileri kullanarak API alternatif olduğundan MFC ilgili özellikleri kullanmak için gerekli değildir.Visual C++ kullanarak yazmak korumak ve uygulama uzun vadede çevirmek kolaylaşır.

Temel yapısını bir RT_DLGINIT kaynak aşağıdaki gibidir:

+---------------+                    \
| Control ID    |   UINT             |
+---------------+                    |
| Message #     |   UINT             |
+---------------+                    |
|length of data |   DWORD            |
+---------------+                    |   Repeated
|   Data        |   Variable Length  |   for each control
|   ...         |   and Format       |   and message
+---------------+                    /
|     0         |   BYTE
+---------------+

Yinelenen bölüm, ileti göndermek için denetim kimliği içeren ileti # gönder (normal bir Windows ileti) ve değişken uzunlukta veri.Windows ileti bir formda gönderilir:

SendDlgItemMessage(<Control ID>, <Message #>, 0, &<Data>);

Herhangi bir Windows ileti ve veri içeriği çok genel bir biçim budur.Visual C++ kaynak Düzenleyicisi ve mfc yalnızca sınırlı bir alt kümesini Windows iletilerini destekler: ilk liste seçimleri birleşik giriş kutuları (veri olan bir metin dizesi) için CB_ADDSTRING.

Ayrıca bkz.

Diğer Kaynaklar

Teknik notlar numarasına göre

Kategoriye göre teknik notlar