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