Sdílet prostřednictvím


TN024: Zprávy a prostředky definované knihovnou MFC

[!POZNÁMKA]

Následující technická poznámka nebyla aktualizována, protože byla poprvé zahrnuta v dokumentaci online.V důsledku toho některé postupy a témata mohou být nesprávné nebo zastaralé.Pro nejnovější informace je vhodné vyhledat téma zájmu v dokumentaci online index.

Tato poznámka popisuje interní zprávy systému Windows a formáty zdrojů používá knihovnu MFC.Tyto informace popisuje provádění rámce a bude vám pomohou při ladění aplikace.Pro dobrodružná i když tyto informace není oficiálně podporována, můžete použít některé z těchto informací pro pokročilé implementace.

Tato poznámka obsahuje podrobnosti implementace soukromé knihovny MFC; celý obsah podléhají změnám v budoucnosti.Soukromé zprávy systému Windows MFC mají význam v oboru pouze jednu aplikaci, ale bude obsahovat systémové zprávy v budoucnu změnit.

Rozsah MFC soukromých zpráv systému Windows a typy prostředků jsou v dosahu rezervovaného "systém" vyhrazeny systémem Microsoft Windows.Aktuálně nejsou všechna čísla v oblasti se používají a v budoucnu mohou nová čísla v rozsahu použity.Aktuálně používaná čísla mohou být změněny.

Soukromé zprávy systému Windows MFC jsou v rozsahu 0x360 ->0x37F.

Typy soukromých prostředků knihovny MFC jsou v rozsahu 0xF0 ->0xFF.

Zprávy systému Windows soukromé knihovny MFC

Tyto zprávy systému Windows se používají místo virtuálních funkcí jazyka C++, kde je relativně volné spojování požadována mezi objekty okna a kde by nebylo vhodné virtuální funkce jazyka C++.

Tyto soukromé zprávy systému Windows a parametru přidružené struktury jsou deklarovány v soukromé knihovny MFC záhlaví ' AFXPRIV.H ".Být varován, že žádný kód, který obsahuje tuto hlavičku může spoléhat na nezdokumentovaný chování a bude pravděpodobně konec v budoucích verzí knihovny MFC.

Ve výjimečném případě potřebuje ke zpracování jednoho z těchto zpráv, měli byste použít ON_MESSAGE zpráva makro mapy a zpracovat zprávu ve formátu Obecný LRESULT, WPARAM/LPARAM.

WM_QUERYAFXWNDPROC

Tato zpráva je odeslána do okna, která je vytvářena.Velmi brzy v procesu vytváření je odeslána jako metodu pro zjištění, zda je WndProc AfxWndProc.AfxWndProc vrátí hodnotu 1. 

wParam

Nepoužito

lParam

Nepoužito

vrací

1, pokud jsou zpracovávány AfxWndProc

WM_SIZEPARENT

Je tato zpráva odeslána v rámci okna její bezprostředně podřízené při změně velikosti (CFrameWnd::OnSize volání CFrameWnd::RecalcLayout který vyzývá CWnd::RepositionBars) Chcete-li změnit umístění ovládací panely kolem straně rámečku.AFX_SIZEPARENTPARAMS struktura obsahuje aktuální obdélník klient k dispozici nadřazené a HDWP, (který může mít hodnotu NULL), se kterým lze volat DeferWindowPos k minimalizaci překreslení.

wParam

Nepoužito

lParam

Adresa AFX_SIZEPARENTPARAMS konstrukce

vrací

Nepoužito (0)

Ignoruje zprávy označuje, že okno není účastnit rozložení.

WM_SETMESSAGESTRING

Tato zpráva je zaslána okna rámce požadovat aktualizaci ve stavovém řádku zpráva.ID řetězce nebo LPCSTR může být zadaná (ale nikoli obě).

wParam

Řetězec ID (nebo nula)

lParam

LPCSTR řetězec (nebo NULL)

vrací

Nepoužito (0)

WM_IDLEUPDATECMDUI

Tato zpráva zaslána v nečinnosti implementovat obslužné rutiny uživatelského rozhraní příkaz update aktualizace doby nečinnosti.Pokud okno (obvykle ovládací panel) zpracovává zprávy, vytvoří CCmdUI (nebo objektu odvozené třídy) a CCmdUI::DoUpdate pro jednotlivé "položky" v okně.To bude zase vyhledávat ON_UPDATE_COMMAND_UI obslužnou rutinu pro objekty v řetězci příkazu rutině.

wParam

BOOL bDisableIfNoHandler

lParam

Nepoužito (0)

vrací

Nepoužito (0)

bDisableIfNoHandler je nenulová zakázat objekt uživatelského rozhraní, pokud není ani ON_UPDATE_COMMAND_UI ani ON_COMMAND obslužnou rutinu.

WM_EXITHELPMODE

Tato zpráva je zaúčtována do CFrameWnd režim, ukončete kontextové nápovědy.Přijetí této zprávy ukončení modální smyčky spustil CFrameWnd::OnContextHelp.

wParam

Nepoužito (0)

lParam

Nepoužito (0)

vrací

Nepoužito

WM_INITIALUPDATE

Tuto zprávu zasílá šablona dokumentu na všechny následovníky rámeček okna kdy je bezpečné, aby se jejich původní aktualizaci.Odpovídá volání CView::OnInitialUpdate , ale lze použít v jiných CWnd-odvozené třídy jiné jednorázové aktualizace.

wParam

Nepoužito (0)

lParam

Nepoužito (0)

vrací

Nepoužito (0)

WM_RECALCPARENT

Tuto zprávu odesílá zobrazení jeho nadřazeného okna (získaných prostřednictvím GetParent) vynucení přepočtu rozložení (obvykle bude volat nadřazeného RecalcLayout).To je používán aplikací typu server OLE je-li nezbytné pro snímek zvětšovat velikost zvětšuje celkovou velikost zobrazení.

Pokud tuto zprávu zpracuje nadřazené okno by ji vrátí hodnotu PRAVDA a zadejte RECT předaný lParam s novou velikost oblasti klienta.Používá se v CScrollView správně zpracovat posuvníky (místo pak na vnější straně okna při přidání) při objekt serveru je aktivován v místě.

wParam

Nepoužito (0)

lParam

Může být NULL, LPRECT rectClient,

vrací

TRUE, pokud nový klient obdélníku vrátil, FALSE jinak

WM_SIZECHILD

Tato zpráva je odeslána uživatelem COleResizeBar do jeho okna vlastníka (prostřednictvím GetOwner) Pokud uživatel změní velikost příčku s úchyty pro změnu velikosti.COleIPFrameWndpokus přesunout okno rámce jako uživatel požadoval reaguje na tuto zprávu.

Nový obdélník, podle klienta souřadnice vztažené ke okno rámce, který obsahuje na příčku je na který odkazuje lParam.

wParam

Nepoužito (0)

lParam

LPRECT rectNew

vrací

Nepoužito (0)

WM_DISABLEMODAL

Tato zpráva je odeslána všechna automaticky otevíraná okna, které vlastní okno rámce, který se právě ruší.Okno rámce používá k určení, zda chcete zakázat kontextovou výsledek.

Můžete to provést zvláštní zpracování v překryvném okně, když snímek přejde modální stavu nebo zabránit některá automaticky otevíraná okna Začínáme zakázána.Popisy zničit sami při okna rámce přejde do stavu modální, například pomocí této zprávy.

wParam

Nepoužito (0)

lParam

Nepoužito (0)

vrací

Nenulová na Ne zakázat okno, hodnota 0 znamená, že okna budou zakázány.

WM_FLOATSTATUS

Tato zpráva je odeslána všechna automaticky otevíraná okna vlastní okno rámce při rámeček aktivován nebo vyřadí z jiného okna rámec nejvyšší úrovně.Používá se zavedením MFS_SYNCACTIVE v CMiniFrameWnd, pro synchronizaci aktivace těchto oken s aktivací okna nejvyšší úrovně rámce.

wParam

Je jedna z následujících hodnot:

FS_SHOW

FS_HIDE

FS_ACTIVATE

FS_DEACTIVATE

FS_ENABLEFS_DISABLE

FS_SYNCACTIVE

lParam

Nepoužito (0)

Vrácená hodnota by měla být nulová-li FS_SYNCACTIVE je sada a synchronizuje okna jeho aktivace s nadřazeného rámce.CMiniFrameWndvrátí nenulovou hodnotu, pokud styl je nastavena na MFS_SYNCACTIVE.

Další informace naleznete v tématu provádění CMiniFrameWnd.

WM_ACTIVATETOPLEVEL

Tato zpráva je zaslána okno nejvyšší úrovně při aktivaci nebo deaktivaci okno v jeho "skupiny nejvyšší úrovně".Okno je součástí skupiny nejvyšší úrovně, pokud je okno nejvyšší úrovně (žádný nadřazený nebo vlastník) nebo vlastníkem takového okna.Tato zpráva má podobné využití k na WM_ACTIVATEAPP, , ale pracuje v situacích, kde se míchají náležející k jiné procesy systému windows v hierarchii jediné okno (běžné aplikace OLE).

WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE

Tyto zprávy jsou používány při provádění kontextovou nápovědu.Najdete na Technická poznámka: 28 pro další informace.

Formáty zdrojů soukromé knihovny MFC

V současné době MFC definuje dva formáty soukromé zdroje: RT_TOOLBAR a RT_DLGINIT.

Formát zdroje RT_TOOLBAR

Je na základě poskytnutých AppWizard výchozí panel nástrojů RT_TOOLBAR vlastní zdroj, který byl zaveden v MFC 4.0.Můžete upravit tento prostředek použití editoru panelu nástrojů.

Formát zdroje RT_DLGINIT

Jeden formát soukromých prostředků MFC slouží k ukládání další dialogové okno informace o inicializaci.Jedná se o původní řetězce uložené v poli se seznamem.Formát tohoto prostředku není určen k ručně upravili, ale je zpracována Visual C++.

Visual C++ a to RT_DLGINIT prostředku nemusí používat související funkce knihovny MFC, protože rozhraní API alternativou k použití informací v prostředku.Pomocí Visual C++ proto jednodušší psát, udržovat a přeložit aplikaci dlouhodobě.

Základní struktura RT_DLGINIT prostředků je následující:

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

Opakovaná část obsahuje ID ovládacího prvku, který chcete odeslat zprávu, je zpráva # odeslat (normální zprávy systému Windows) a proměnné délky dat.Ve formuláři je odeslána zpráva systému Windows:

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

Toto je velmi obecný formát, umožňující jakékoli zprávy systému Windows a data obsahu.V editoru prostředků Visual C++ a MFC podporují pouze omezený okruh zprávy systému Windows: CB_ADDSTRING pro počáteční seznam voleb pro pole se seznamem (data je textový řetězec).

Viz také

Další zdroje

Technické poznámky podle čísel

Technické poznámky podle kategorií