TN024: mfc tanımlı iletileri ve kaynaklar

Bu Not iç Windows iletilerini ve mfc tarafından kullanılan kaynak biçimleri açıklanmaktadır. Bu bilgiler çerçevesinde uygulanmasını açıklar ve uygulama hata ayıklama yardımcı olacaktır. Olsa bile, tüm bu bilgileri resmen desteklenmiyor, maceracı için sen bu bilgilerin bazıları gelişmiş uygulamaları için kullanabilirsiniz.

Bu Not, mfc özel uygulama ayrıntılarını içerir; tüm içeriği değiştirilebilir gelecek vardır. mfc özel Windows iletilerini yalnızca bir uygulama kapsamında anlamı var ama gelecekte sistemde iletilerin içermesini değişecek.

Kaynak türleri ve aralığı, mfc özel Windows iletilerini saklıdır "sistem" aralığında Microsoft Windows tarafından kenara. Şu anda tüm numaraları aralıklar kullanılır ve gelecekte yeni numaraları aralığında kullanılmış olabilir. Şu anda kullanılan numaraları değiştirilebilir.

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

Mfc özel kaynak aralığı 0xF0-> türleridir; 0xFF.

Mfc özel Windows mesajları

Bu Windows iletilerini c++ sanal fonksiyonları yerine nispeten gevşek bağlantı penceresinin nesneler arasında ve nerede bir c++ sanal işlevi uygun olmaz gerekli olduğunda kullanılır.

Bu özel Windows mesajları ve ilişkili parametresi yapıları mfc özel başlık bildirilen ' AFXPRIV.H'. Bu üstbilgiyi içeren kod herhangi bir belgesiz davranışı ve olacaktır muhtemelen sonunu gelecekte mfc sürümleri güvenerek ki uyardı.

Bu iletilerden birini işlemeye gerek nadir durumlarda, on_message ileti göster makroyu kullanmak ve genel lresult/wparam/lparam biçimindeki iletiyi işlemek gerekir.

WM_QUERYAFXWNDPROC

Bu ileti, oluşturulan bir pencereye gönderilir. Bu WndProc ise belirleme yöntemi olarak çok erken oluşturma işlemine gönderilir AfxWndProc. AfxWndProc 1 değerini döndürür.

wParam Kullanılmıyor
lParam Kullanılmıyor
döndürür 1 AfxWndProc tarafından işlenen

WM_SIZEPARENT

Bu ileti (CFrameWnd::OnSize çağrıları CWnd::RepositionBarsçağıran CFrameWnd::RecalcLayout ) yeniden boyutlandırma sırasında hemen alt çerçeve penceresi tarafından gönderilir kontrol çubukları çerçevenin yan etrafında konumlandırmak için. AFX_SIZEPARENTPARAMS yapısı içeren geçerli kullanılabilir istemci dikdörtgenin üst ve (ki boş olabilir) bir hdwp da DeferWindowPos aramak yeniden en aza indirmek için.

wParam Kullanılmıyor
lParam Bir AFX_SIZEPARENTPARAMS yapısı adresi
döndürür (0) Kullanılmaz

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

WM_SETMESSAGESTRING

Bu ileti bir çerçeve penceresi için durum çubuğundaki ileti satırı güncelleştirmek için sor gönderilir. (İkisini birden) dize kimliği ya da bir LPCTSTR belirtilebilir.

wParam ID (ya da sıfır) dize
lParam LPCTSTR dize (veya null)
döndürür (0) Kullanılmaz

WM_IDLEUPDATECMDUI

Bu ileti boşta kalma süresi boşta zaman güncelleştirme güncelleştirme komutu UI işleyicileri uygulamaya gönderilir. İleti penceresi (genellikle bir kontrol çubuğu) işleme, bir CCmdUI (veya nesneyi türetilmiş bir sınıf) oluşturur ve her penceresinde "madde" CCmdUI::DoUpdate çağrısı. Bu da bir ON_UPDATE_COMMAND_UI işleyici nesneleri komut işleyicisi zinciri denetler.

wParam Bool bDisableIfNoHandler
lParam (0) Kullanılmaz
döndürür (0) Kullanılmaz

ne bir ON_UPDATE_COMMAND_UI , ne de bir on_command işleyicisi ise kullanıcı Arabirimi nesnesini devre dışı bırakmak için sıfır olmayan bDisableIfNoHandler.

WM_EXITHELPMODE

Bu ileti için bir CFrameWnd , içerik duyarlı çıkmak için mod yardımcı nakledilir. Bu iletinin alındığını başlatan kalıcı döngü sona erer. CFrameWnd::OnContextHelp.

wParam (0) Kullanılmaz
lParam (0) Kullanılmaz
döndürür Kullanılmıyor

WM_INITIALUPDATE

Onları kendi ilk güncelleştirme yapmak için güvenli bir bu iletiyi belge şablonu tarafından bir çerçeve penceresi tüm torunları için gönderilir. Bu haritalar için CView::OnInitialUpdate çağrısı ama diğer CWndkullanılabilir-türetilmiş sınıfları tek çekim diğer güncelleştirmek için.

wParam (0) Kullanılmaz
lParam (0) Kullanılmaz
döndürür (0) Kullanılmaz

WM_RECALCPARENT

Bu ileti bir görünüm ( GetParentile elde edilen) onun üst pencere düzeni yeniden hesaplama zorlamak için gönderilir (genellikle üst RecalcLayoutarayacak). Bu görünümün toplam boyutu büyüdükçe boyutu büyümeye çerçeve için gerekli olduğu ole sunucu uygulamalarında kullanılır.

Ana pencere bu iletiyi işlerse bu true döndürür ve lParam istemci alanının yeni boyutu geçirilen rect doldurun. Bu CScrollView içinde düzgün kaydırma çubukları (daha sonra eklenen pencerenin dışına yer) işlemek için kullanılır bir sunucu nesnesi yerinde etkin olduğunda.

wParam (0) Kullanılmaz
lParam Lprect rectClient, boş olabilir
döndürür True yeni istemci dikdörtgen döndü, false aksi takdirde

WM_SIZECHILD

Bu haber sahibi penceresi (aracılığıyla GetOwner) COleResizeBar tarafından gönderilen zaman kullanıcı ile boyutlandırma tutamaçlarını boyutlandırma çubuğunu yeniden boyutlandırır. Kullanıcının istediği gibi çerçeve penceresi yeniden konumlandırmak deneyerek COleIPFrameWnd bu iletiye yanıt.

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

wParam (0) Kullanılmaz
lParam Lprect rectNew
döndürür (0) Kullanılmaz

WM_DISABLEMODAL

Bu ileti tüm açılır pencereleri devre dışı bir çerçeve penceresi tarafından sahip olunan gönderilir. Çerçeve penceresi sonucu popup penceresi devre dışı olup olmadığını belirlemek için kullanır.

Bu çerçevede kalıcı bir durumuna girdiğinde, açılan pencerede özel işlem gerçekleştirmek veya bazı açılır pencereler devre dışı tutmak için kullanabilirsiniz. Çerçeve penceresi kalıcı bir devlet olarak, örneğin gittiğinde kendilerini yok etmek için bu iletiyi ipuçlarını kullanma.

wParam (0) Kullanılmaz
lParam (0) Kullanılmaz
döndürür Sıfır olmayan doğru değil sakatlar pencere, pencere devre dışı bırakılacak 0 gösterir

WM_FLOATSTATUS

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

wParam Aşağıdaki değerlerden biri:
FS_SHOW
FS_HIDE
FS_ACTIVATE
FS_DEACTIVATE
FS_ENABLE
FS_DISABLE
FS_SYNCACTIVE
lParam (0) Kullanılmaz

Dönüş değeri FS_SYNCACTIVE kümesi ve pencere syncronizes ise sıfır olmalıdır onun harekete geçirmek ile ana çerçeve. CMiniFrameWnd döner sıfırdan stil ayarlandığında MFS_SYNCACTIVE.

Daha fazla bilgi için bkz: CMiniFrameWnd uygulanması.

WM_ACTIVATETOPLEVEL

Onun "üst düzey grubu" bir pencerede aktif devre dışı veya bu iletinin üst düzey pencere gönderilir. Bir üst düzey bir grup üst düzey pencere (üst veya sahibi) öyle ya da böyle bir pencere tarafından sahip olunan penceredir. Bu ileti için WM_ACTIVATEAPP, kullanımda benzer ancak farklı işlemlere ait windows (ole uygulamaları yaygın) bir tek pencere hiyerarşisinde nerede karışık durumlarda çalışır.

WM_QUERY3DCONTROLS

Bu ileti penceresi oluşturma sırasında pencere CTL3D32 göre sınıflandırma Eğer belirlemek için gönderilir.dll. varsayılan 3d denetimleri etkin için CControlBar, CDialog, CPropertySheet ve CFormView.

wParam (0) Kullanılmaz
lParam (0) Kullanılmaz
döndürür Sıfır olmaya&n için alt sınıf ile CTL3D.nbsp; Dönüş değeri için arama için kullanılan Ctl3dSubclassDlgEx.

WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE

Bu iletiler, bağlama duyarlı Yardım uygulanmasında kullanılır. Teknik Not 28 ' e daha fazla bilgi için lütfen.

Mfc özel kaynak biçimleri

Orada şu anda tanımlanmış, yalnızca bir mfc özel kaynak biçim RT_DLGINIT.

RT_DLGINIT kaynak biçimi

Bir mfc özel kaynak biçimi, 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üzenlenmek üzere tasarlanmamıştır ama Visual c++ tarafından işlenir.

Visual c++ ve bu RT_DLGINIT kaynak kaynak bilgileri kullanarak API alternatif olduğundan mfc ilgili özelliklerini kullanmak için gerekli değildir. Visual c++ kullanarak çok yazmak, korumak ve uygulamanızı uzun vadede çevirmek kolaylaştırır.

RT_DLGINIT kaynak temel yapısı aşağıdaki gibidir:

+---------------+nbsp;                   \
| Denetim kimliği |   UI&NT |
+---------------+                    |
| Mesaj # |   UINT |
+---------------+                    |
|length veri |   DWORD |
+---------------+                    | Tekrarlanan
|   Veri |   Değişken uzunlukta |   her denetim için
|     ...      |   ve Format |   ve mesaj
+---------------+                    /
|     0         |   BAYT
+---------------+

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

SendDlgItemMessage (lt;Denetim kimliği >, < İleti # > 0 & <Data>)

Bu çok genel bir biçimde, herhangi bir Windows ileti ve veri içeriği izin var. Visual c++ kaynak Düzenleyicisi ve mfc yalnızca Windows mesajları sınırlı bir kümesini destekler: CB_ADDSTRING ilk liste-seçimler için açılan kutular (veri olan bir metin dizesi).

Teknik notlar numarasına göre |nbsp; Teknik notlar kategorisine göre

Index