TN024: Zasoby i wiadomości zdefiniowane MFC

Uwaga ta opisuje wewnętrzne komunikatów systemu Windows i formatów zasobów używanych przez MFC. Informacja ta wyjaśnia wprowadzenie w życie ram i pomoże Ci w debugowanie aplikacji. Dla przygód nawet jeśli te informacje są oficjalnie obsługiwane, można użyć niektóre informacje dla zaawansowanych implementacji.

Uwaga ta zawiera szczegóły implementacyjne prywatnych MFC; cała zawartość są podlegających zmiana w przyszłości. Prywatne wiadomości Windows MFC mają znaczenie w zakresie tylko jeden wniosek, ale zmieni się w przyszłości zawiera komunikaty systemowe.

Zakres MFC prywatnych Windows wiadomości i typy zasobów są w zakresie zarezerwowane "system" odłogowanych przez system Microsoft Windows. Obecnie nie wszystkie liczby w polu Zakresy są używane, a w przyszłości, nowe numery w zakresie mogą być używane. Aktualnie używane numery mogą być zmienione.

Prywatne Windows MFC, które wiadomości mają zakres 0x360-> 0x37F.

MFC zasobów prywatnych, które typy są w zakresie 0xF0-> 0xFF.

MFC prywatne Windows wiadomości

Tych komunikatów systemu Windows są używane zamiast funkcji wirtualnych C++, gdy wymagane jest stosunkowo luzem sprzężenia między obiektami okna i gdzie funkcję wirtualną C++ nie byłoby właściwe.

Te wiadomości prywatnych systemu Windows i struktur parametr skojarzone są zgłaszane w nagłówku prywatnych MFC "AFXPRIV.H ". Zostać ostrzeżony, że dowolnego kodu, który zawiera nagłówek może być polegając na nieudokumentowane zachowanie i break prawdopodobnie będzie w przyszłości wersji MFC.

W rzadkich przypadkach konieczności obsługi jeden z tych komunikatów należy użyć makra mapę ON_MESSAGE wiadomości 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 wysyłana bardzo wcześnie w procesie tworzenia jako metodę określania jeśli WndProc AfxWndProc. AfxWndProc zwraca 1.

wParam Nie używany
fikcyjnymi Nie używany
zwraca 1 Jeśli przetwarzane przez AfxWndProc

WM_SIZEPARENT

Wiadomość jest wysyłana przez okno ramek do jego natychmiastowego dzieci podczas zmiany rozmiaru (wywołaniaCFrameWnd::OnSize CFrameWnd::RecalcLayout , która wywołuje CWnd::RepositionBars) do zmiany położenia pasków kontroli wokół stronie ramki. Struktura AFX_SIZEPARENTPARAMS zawiera bieżącym prostokącie dostępne klienta jednostki dominującej oraz HDWP, (który może być NULL), z którą chcesz wywołać DeferWindowPos , aby zminimalizować odowieżenie.

wParam Nie używany
fikcyjnymi Adres struktury AFX_SIZEPARENTPARAMS
zwraca Nie używany (0)

Ignorowanie komunikat wskazuje, że okna nie uczestniczy w układzie.

WM_SETMESSAGESTRING

Wiadomość jest wysyłana do okna ramki można zażądać aktualizacji wiersza wiadomości na pasku stanu. Identyfikator ciągu lub LPCSTR może być określony (ale nie oba).

wParam Ciąg Identyfikatora (lub zero)
fikcyjnymi LPCSTR ciąg znaków (lub NULL)
zwraca Nie używany (0)

WM_IDLEUPDATECMDUI

Ta wiadomość jest wysyłana w czas bezczynności do wdrażania aktualizacji czas bezczynności polecenia update Interfejsu obsługi. Jeśli okno (zazwyczaj pasek sterowania) obsługuje wiadomości, tworzy obiekt CCmdUI (lub obiekt klasy dziedziczącej) i wywołać CCmdUI::DoUpdate dla każdego z "pozycje" okna. To z kolei będzie sprawdzał ON_UPDATE_COMMAND_UI obsługę obiektów w łańcuchu polecenia obsługi.

wParam BOOL bDisableIfNoHandler
fikcyjnymi Nie używany (0)
zwraca Nie używany (0)

bDisableIfNoHandler jest niezerowa wyłącza obiekt interfejsu użytkownika, jeśli istnieje ON_UPDATE_COMMAND_UI ani programu obsługi ON_COMMAND.

WM_EXITHELPMODE

Ten komunikat jest księgowana na CFrameWnd , aby zakończyć kontekstową Pomoc tryb. Otrzymanie tego komunikatu kończy pętli modalnej rozpoczęte przez CFrameWnd::OnContextHelp.

wParam Nie używany (0)
fikcyjnymi Nie używany (0)
zwraca Nie używany

WM_INITIALUPDATE

Ta wiadomość jest wysyłana w szablonie dokumentu wszystkie elementy podrzędne okna ramki, gdy jest on bezpieczny dla ich do ich początkowa aktualizacja. Mapuje wywołania CView::OnInitialUpdate , ale mogą być używane w innych CWnd-pochodnych klas dla innych aktualizacji one-shot.

wParam Nie używany (0)
fikcyjnymi Nie używany (0)
zwraca Nie używany (0)

WM_RECALCPARENT

Wiadomość jest wysyłana przez widok do jego okno nadrzędne (uzyskanych za pośrednictwem GetParent) Aby wymusić ponowne obliczenie układu (zwykle wymagają RecalcLayoutbędzie nadrzędny). Służy w aplikacji serwera OLE, gdzie jest to konieczne dla ramki rośnie pofragmentowaniu, gdyby rozmiar całkowity rozmiar widoku.

Jeśli okno nadrzędne przetwarza tę wiadomość powinna zwracać wartość PRAWDA i wypełnienia RECT przekazany fikcyjnymi z nowy rozmiar obszaru klienckiego. Jest on używany w CScrollView prawidłowo obsługiwać paski przewijania (miejsce na zewnątrz okna, gdy są one dodawane) kiedy obiekt serwera jest miejscem aktywowane.

wParam Nie używany (0)
fikcyjnymi LPRECT rectClient, może mieć wartości NULL.
zwraca Wartość TRUE, jeśli nowy klient prostokąt zwrócone, FALSE w przeciwnym wypadku

WM_SIZECHILD

Ta wiadomość jest wysyłana przez COleResizeBar do jej okno właściciela (za pośrednictwem GetOwner) kiedy umożliwiała pasek z uchwytów zmiany rozmiaru. COleIPFrameWnd odpowiada tej wiadomości przez próby zmiany położenia w oknie ramki, jak użytkownik zażądał.

Nowe prostokąt, podana zgodnie ze współrzędnymi klienta względem w oknie ramki, która zawiera pasek, jest wskazywanej przez fikcyjnymi.

wParam Nie używany (0)
fikcyjnymi LPRECT rectNew
zwraca Nie używany (0)

WM_DISABLEMODAL

Ta wiadomość jest wysyłana do wszystkich okien wyskakujących własnością oknie ramki, która jest dezaktywowany. Okno ramek wykorzystuje wynik do ustalenia, czy wyłączyć okno podręczne.

Można to wykonać specjalnego przetwarzania w oknie podręcznym, gdy ramki wprowadzi modalne Państwo lub uniemożliwić pobieranie wyłączone niektóre okna podręczne. Etykietki narzędzi zniszczyć sami, gdy okno ramek przechodzi w stanie modalne, na przykład za pomocą tej wiadomości.

wParam Nie używany (0)
fikcyjnymi Nie używany (0)
zwraca Niezerowa aby nie wyłączyć okno, 0 wskazuje, że okno zostanie wyłączony

WM_FLOATSTATUS

Ta wiadomość jest wysyłana do wszystkich wyskakujących okienek własnością w oknie ramki, podczas aktywacji lub zdezaktywowany przez innego okna najwyższego poziomu ramki ramka. To jest używany przez wprowadzenie w życie MFS_SYNCACTIVE w CMiniFrameWnd, aby zachować aktywacji te okna podręczne zsynchronizowana z Aktywacja okna górnej ramce poziomu.

wParam Jest jedną z następujących wartości:
FS_SHOW
FS_HIDE
FS_ACTIVATE
FS_DEACTIVATE
FS_ENABLE
FS_DISABLE
FS_SYNCACTIVE
fikcyjnymi Nie używany (0)

Wartość zwracana powinna być niezerowy Jeśli FS_SYNCACTIVE jest zestaw i synchronizuje okna aktywacji z ramki macierzystej. CMiniFrameWnd zwraca zera, jeżeli styl jest ustawiony na MFS_SYNCACTIVE.

Aby uzyskać więcej informacji zobacz Wdrażanie CMiniFrameWnd.

WM_ACTIVATETOPLEVEL

Wiadomość jest wysyłana do najwyższego poziomu okna, gdy okno w "grupie najwyższego poziomu" jest uaktywniony albo dezaktywowany. Okno jest częścią grupy najwyższego poziomu, jeśli to okno najwyższego poziomu (nie nadrzędnej lub właściciela), lub jest własnością takich okna. Ten komunikat jest podobnie do WM_ACTIVATEAPP, ale działa w sytuacjach, gdy system windows należących do różnych procesów są mieszane w hierarchii pojedynczym oknie (wspólne w aplikacji OLE).

WM_QUERY3DCONTROLS

Ta wiadomość jest wysyłana podczas tworzenia okna do określenia, jeśli okno powinny być podklasy przez CTL3D32.Biblioteka DLL. przez formanty 3D domyślne są włączone dla CControlBar, CDialog, CPropertySheet i CFormView.

wParam Nie używany (0)
fikcyjnymi Nie używany (0)
zwraca &Niezerowa do podklasy z CTL3D.nbsp; Wartość zwracany jest używany dla wywołania do Ctl3dSubclassDlgEx.

WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE

Te komunikaty są używane w celu wykonania pomocy kontekstowej. Odsyłamy do technicznych Uwaga 28 więcej informacji.

MFC prywatnych zasobu formaty

Obecnie istnieje tylko jeden MFC prywatnych zasobu format zdefiniowany, RT_DLGINIT.

Format zasób RT_DLGINIT

Jeden format prywatnych zasobu MFC jest używany do przechowywania informacji na temat inicjalizacji dodatkowe okna dialogowego. Obejmuje to początkowy ciągi znaków przechowywanych w polu kombi. Format ten zasób nie jest zaprojektowane do ręcznie edytować, ale jest obsługiwany przez program Visual C++.

Visual C++ i ten zasób RT_DLGINIT nie są zobowiązane do stosowania pokrewne funkcje MFC, ponieważ istnieją API alternatywę dla informacji w zasobie. Przy użyciu języka Visual C++ powoduje ona znacznie ułatwia pisanie, utrzymania i przetłumaczyć aplikacji w dłuższej perspektywie.

Podstawowa struktura zasób RT_DLGINIT jest następująco:

+---------------+nbsp;                   \
| Sterowanie ID |   UI&NT |
+---------------+                    |
| Komunikat # |   UINT |
+---------------+                    |
|length danych |   DWORD |
+---------------+                    | Powtórzyć
|   Dane |   O zmiennej długości |   dla każdego formantu
|     ...      |   i Format |   i wiadomości
+---------------+                    /
|     0         |   BAJT
+---------------+

Powtarzające się sekcja zawiera identyfikator formantu, aby wysłać wiadomość, komunikat # do wysyłania (zwykłe wiadomości Windows) i zmiennej długości danych. Komunikat systemu Windows jest przesyłana w postaci:

SendDlgItemMessage (lt;Identyfikator formantu >, < komunikat #, > 0 & <Data>)

Jest to bardzo ogólny format, umożliwiając wszelkich komunikatów systemu Windows i danych zawartości. Visual C++ zasobów edytora i MFC obsługuje tylko podzbiór ograniczone komunikatów systemu Windows: CB_ADDSTRING dla początkowych opcji lista dla pola kombi (dane to ciąg tekstowy).

Uwagi techniczne przez liczbę |nbsp; Uwagi techniczne według kategorii

Index