Udostępnij za pośrednictwem


TN024: komunikaty i zasoby zdefiniowane przez MFC

[!UWAGA]

Następująca uwaga techniczna nie został zaktualizowana od pierwszego uwzględnienia jej w dokumentacji online.W rezultacie niektóre procedury i tematy może być nieaktualne lub nieprawidłowe.Aby uzyskać najnowsze informacje, zaleca się wyszukać temat w indeksie dokumentacji online.

Uwaga ta opisuje wewnętrzne wiadomości systemu Windows i zasobów formaty używane przez usługi MFC.Informacje te omówiono wykonania RAM i pomoże Ci w debugowanie aplikacji.Dla ryzykowny mimo, że wszystkie te informacje są oficjalnie nieobsługiwanych można użyć niektórych z tych informacji dla zaawansowanych implementacji.

Ta notatka zawiera szczegóły dotyczące implementacji prywatnej MFC; Cała zawartość mogą ulec zmianie w przyszłości.MFC prywatnych wiadomości systemu Windows mają znaczenie w zakresie tylko jeden wniosek, ale zmieni się w przyszłości ma zawierać komunikaty systemowe.

Zakres MFC prywatnych wiadomości systemu Windows i typy zasobów są w zakresie zastrzeżone "system" wydzielone Microsoft Windows.Obecnie nie wszystkie numery z zakresów są używane i w przyszłości, w zakresie nowych numerów można wykorzystać.Aktualnie używane numery mogą zostać zmienione.

MFC prywatnych wiadomości systemu Windows znajdują się w zakresie 0x360 ->0x37F.

Typy zasobów prywatnych MFC są w zakresie 0xF0 ->0xFF.

Wiadomości Windows prywatne MFC

Tych komunikatów systemu Windows są używane zamiast funkcji wirtualnych C++, gdzie stosunkowo luźne sprzęgło jest wymagane między obiektami okna i gdzie C++ funkcji wirtualnych nie byłoby właściwe.

Te wiadomości prywatnych systemu Windows i struktur skojarzony parametr są zadeklarowane w nagłówku prywatnych MFC ' AFXPRIV.H ".Pamiętaj, że dowolne swój kod, który zawiera ten nagłówek może być opierając się na zachowanie nieudokumentowanych i podział prawdopodobnie będzie w przyszłości wersje biblioteki MFC.

W rzadkich przypadkach konieczności obsługi jednego z tych komunikatów, należy użyć ON_MESSAGE wiadomość makro mapę i obsługi wiadomości w formacie LRESULT/WPARAM/FIKCYJNYMI rodzajowy.

WM_QUERYAFXWNDPROC

Ta wiadomość jest wysyłana do okna, który jest tworzony.To jest przesyłane bardzo wczesnym etapie procesu tworzenia jako metoda ustalania, czy jest WndProc AfxWndProc.AfxWndProc zwraca wartość 1. 

wParam

Nie używane

fikcyjnymi

Nie używane

zwraca

1, jeśli przetwarzane przez AfxWndProc

WM_SIZEPARENT

Ta wiadomość jest wysyłana przez okno ramek do jego bezpośrednie elementy podrzędne podczas skalowania (CFrameWnd::OnSize wywołania CFrameWnd::RecalcLayout który wzywa CWnd::RepositionBars) do zmiany położenia pasków kontroli wokół stronie ramki.AFX_SIZEPARENTPARAMS struktura zawiera bieżącym prostokącie klienta dostępne jednostki dominującej oraz HDWP, (który może być NULL) umożliwiające wywołanie DeferWindowPos aby zminimalizować malowania.

wParam

Nie używane

fikcyjnymi

Adres AFX_SIZEPARENTPARAMS struktury

zwraca

Nieużywany (0)

Ignorowanie wiadomości wskazuje, że okna nie bierze udziału w układzie.

WM_SETMESSAGESTRING

Ta wiadomość jest wysyłana do okna ramki można zażądać, aby zaktualizować wiersz wiadomości na pasku stanu.Identyfikator ciągu lub LPCSTR może być określony (ale nie obu).

wParam

Ciąg Identyfikatora (lub zero)

fikcyjnymi

LPCSTR ciąg znaków (lub NULL)

zwraca

Nieużywany (0)

WM_IDLEUPDATECMDUI

Ta wiadomość jest wysyłana w czasie bezczynności w zaktualizowania czas bezczynności systemu obsługi interfejsu użytkownika polecenie aktualizacji.Jeśli okno (zwykle pasek sterowania) obsługuje wiadomość, tworzy CCmdUI (lub obiektu klasy pochodnej) i wywołać CCmdUI::DoUpdate dla każdego z "elementów" w oknie.To z kolei sprawdzi ON_UPDATE_COMMAND_UI obsługi dla obiektów w łańcuchu program obsługi poleceń.

wParam

Wartość logiczna bDisableIfNoHandler

fikcyjnymi

Nieużywany (0)

zwraca

Nieużywany (0)

bDisableIfNoHandler jest różna od zera, aby wyłączyć obiekt interfejsu użytkownika, jeśli nie ma ani ON_UPDATE_COMMAND_UI ani ON_COMMAND obsługi.

WM_EXITHELPMODE

Ta wiadomość jest wysłana do CFrameWnd aby zakończyć kontekstowa, pomagającym tryb.Potwierdzenia odebrania tej wiadomości kończy Pętla modalna, których autorem jest CFrameWnd::OnContextHelp.

wParam

Nieużywany (0)

fikcyjnymi

Nieużywany (0)

zwraca

Nie używane

WM_INITIALUPDATE

Ta wiadomość jest wysyłana w szablonie dokumentu wszystkie elementy podrzędne ramki okna, gdy jest to bezpieczne dla nich zrobić ich początkowa aktualizacja.Mapuje wezwanie do CView::OnInitialUpdate , ale mogą być używane w innych CWnd-klasy do innych aktualizacji jednorazowe pochodne.

wParam

Nieużywany (0)

fikcyjnymi

Nieużywany (0)

zwraca

Nieużywany (0)

WM_RECALCPARENT

Ta wiadomość jest wysyłana przez widok do okna nadrzędnego (uzyskanych za pośrednictwem GetParent) aby wymusić ponowne obliczanie układu (zazwyczaj będzie wywoływać nadrzędny RecalcLayout).Jest to wykorzystywane w aplikacji serwera OLE gdzie jest to konieczne dla ramki wzrastać w wielkości jak rośnie całkowity rozmiar widoku.

Jeśli okno nadrzędne przetwarza ten komunikat powinien zwróci wartość TRUE i wypełnić RECT przekazany fikcyjnymi z nowy rozmiar obszaru klienckiego.Jest on używany w CScrollView kiedy właściwie obsługiwało paski przewijania (miejsce, a następnie na zewnątrz okna, gdy są one dodawane) obiekt serwera jest aktywowana w miejscu.

wParam

Nieużywany (0)

fikcyjnymi

Może być NULL, LPRECT rectClient,

zwraca

Wartość TRUE, jeśli nowy klient prostokąt zwrócone, FALSE w przeciwnym razie

WM_SIZECHILD

Ta wiadomość jest wysyłana przez COleResizeBar do okna jego właściciel (via GetOwner) kiedy użytkownik zmienia rozmiar pasek zmiany rozmiaru z uchwytami zmiany rozmiaru.COleIPFrameWndodpowiada na tę wiadomość przez próbę zmiany położenia ramki okna, jak użytkownik zażądał.

Nowy prostokąt, biorąc pod uwagę w klienta współrzędnych względem okna ramki, która zawiera pasek zmiany rozmiaru jest wskazywanej przez fikcyjnymi.

wParam

Nieużywany (0)

fikcyjnymi

LPRECT rectNew

zwraca

Nieużywany (0)

WM_DISABLEMODAL

Ta wiadomość jest wysyłana do wszystkich wyskakujących okienek posiadanych przez okno ramki, w którym jest dezaktywowany.Okno ramek używa tego wyniku, aby ustalić, czy należy wyłączyć wyskakujące okna.

Służy to do wykonywać specjalnych przetwarzania w oknie podręcznym, gdy ramki wchodzi modal Państwa lub do niektórych okien wyskakujących uniemożliwiają uzyskanie wyłączone.Etykietki narzędzi umożliwia niszczenie siebie podczas okno ramek przechodzi w stan modalny, na przykład tej wiadomości.

wParam

Nieużywany (0)

fikcyjnymi

Nieużywany (0)

zwraca

Niezerowa, aby nie wyłącza okno, 0 oznacza okna zostanie wyłączony

WM_FLOATSTATUS

Ta wiadomość jest wysyłana do wszystkich wyskakujących okienek posiadanych przez okno ramek, gdy ramka jest aktywowany lub zdezaktywowany przez inne okno najwyższego poziomu ramki.Służy to przez wprowadzenie w życie MFS_SYNCACTIVE w CMiniFrameWnd, a do synchronizowania aktywacji te wyskakujące okienka z aktywacją okno najwyższego poziomu ramek.

wParam

Jest jednym z następujących wartości:

FS_SHOW

FS_HIDE

FS_ACTIVATE

FS_DEACTIVATE

FS_ENABLEFS_DISABLE

FS_SYNCACTIVE

fikcyjnymi

Nieużywany (0)

Wartość zwracana powinna być różna od zera jeśli FS_SYNCACTIVE jest ustawiona i synchronizuje okno aktywacji z ramki macierzystej.CMiniFrameWndZwraca wartość różna od zera, gdy styl jest ustawiona na MFS_SYNCACTIVE.

Aby uzyskać więcej informacji, zobacz temat wykonania CMiniFrameWnd.

WM_ACTIVATETOPLEVEL

Ta wiadomość jest wysyłana do okna najwyższego poziomu, gdy okno w "grupie najwyższego poziomu" jest aktywowana lub dezaktywowana.Okno jest częścią grupy najwyższego poziomu, jeśli to okno najwyższego poziomu (nie nadrzędnego lub właściciela) lub jest w posiadaniu takie okno.Ten komunikat działa podobnie do WM_ACTIVATEAPP, , ale działa w sytuacji, gdy należących do różnych procesów systemu windows są mieszane w jednym oknie hierarchii (często w aplikacji OLE).

WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE

Te komunikaty są używane w realizacji pomocy kontekstowej.Można znaleźć w techniczne Uwaga 28 uzyskać więcej informacji.

Formaty zasobów prywatnych MFC

Obecnie MFC definiuje dwa formaty prywatnych zasobów: RT_TOOLBAR i RT_DLGINIT.

Format zasobu RT_TOOLBAR

Podstawą jest domyślnym pasku narzędzi dostarczonych przez AppWizard RT_TOOLBAR niestandardowe zasobu, który został wprowadzony w wersji 4.0 MFC.Można edytować tego zasobu za pomocą narzędzi edytora.

Format zasobu RT_DLGINIT

Jeden format prywatnych zasobów MFC jest używany do przechowywania informacji na temat inicjalizacji dodatkowe okno dialogowe.Obejmuje to początkowy ciągi przechowywane w polu kombi.Format ten zasób nie jest przeznaczony do ręcznie edytowane, ale jest obsługiwany przez program Visual C++.

Visual C++ i to RT_DLGINIT zasobów nie są wymagane do korzystania pokrewne funkcje biblioteki MFC, ponieważ istnieją API alternatywą dla korzystając z informacji zawartych w zasobie.Przy użyciu języka Visual C++ sprawia, że znacznie łatwiej pisać, obsługa i przetłumaczyć aplikacji w dłuższej perspektywie.

Podstawowa struktura RT_DLGINIT zasób jest w następujący sposób:

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

Powtarzające się sekcja zawiera identyfikator formantu, aby wysłać wiadomość, wiadomość # Wyślij (normalny komunikat systemu Windows) i danych o zmiennej długości.System Windows zostanie wysłana w postaci:

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

Jest to bardzo ogólny format, pozwalających na wiadomości systemu Windows i zawartości danych.Edytor zasobów Visual C++ i MFC obsługują tylko ograniczony podzbiór wiadomości systemu Windows: CB_ADDSTRING dla początkowych opcji lista dla pola kombi (danych to ciąg tekstowy).

Zobacz też

Inne zasoby

Uwagi techniczne według numerów

Uwagi techniczne według kategorii