Sdílet prostřednictvím


TN024: Definice MFC zprávy a prostředky

[!POZNÁMKA]

Následující technické poznámce nebyly aktualizovány od byla poprvé zahrnuta v dokumentaci online.Proto některé postupy a témata mohou být nesprávné nebo zastaralé.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átů prostředků používaných MFC.Tato informace popisuje provádění rámce a pomůže při ladění aplikace.Pro dobrodružná přestože je tato informace oficiálně nepodporované můžete používat některé informace pro pokročilé implementace.

Tato poznámka obsahuje podrobné informace o implementaci privátní MFC; obsah se mohou změnit v budoucnosti.MFC soukromých zpráv systému Windows mají význam v oboru pouze jednu žádost, 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" vyhrazena systémem Microsoft Windows.Aktuálně nejsou všechna čísla v oblasti používají a v budoucnu mohou použít nová čísla v rozsahu.Aktuálně používaná čísla mohou být změněny.

MFC soukromých zpráv systému Windows jsou v rozsahu 0x360 - > 0x37F.

Typy MFC soukromých zdrojů jsou v rozsahu 0xF0 - > 0xFF.

MFC, soukromé zprávy systému Windows

Tyto zprávy systému Windows používá namísto funkce virtuální C++ kde je relativně volné propojení vyžadován mezi objekty v okně a kde C++ virtuální funkci by nebylo vhodné.

Tyto soukromé zprávy systému Windows a parametru přidružené struktury jsou deklarovány v hlavičce soukromé MFC ' AFXPRIV.H ".Upozorněn, že libovolný kód, který zahrnuje toto záhlaví může být spoléhají na nezdokumentovaný chování a budou pravděpodobně konec budoucí verze MFC.

Ve vzácných případech museli zpracovat jeden z těchto zpráv by měla použít ON_MESSAGE zpráva mapa makro a zpracovávat zprávy ve formátu Obecný WPARAM/LRESULT/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 určování, zda je WndProc AfxWndProc.AfxWndProc vrátí 1.

wParam

Nepoužito

lParam

Nepoužito

Vrátí

1, pokud jsou zpracovávány AfxWndProc

WM_SIZEPARENT

Tato zpráva zasílá rámeček okna jeho okamžité dětí při změně velikosti (CFrameWnd::OnSize volání CFrameWnd::RecalcLayout vyžaduje CWnd::RepositionBars) přesuňte ovládací panely kolem straně rámečku.AFX_SIZEPARENTPARAMS struktura obsahuje aktuální klient k dispozici obdélník nadřazené a HDWP, (který může být NULL), se kterým lze volat DeferWindowPos minimalizovat překreslení.

wParam

Nepoužito

lParam

Adresa AFX_SIZEPARENTPARAMS struktury

Vrátí

Nepoužito (0)

Ignorování zpráva označuje, že okno není účastnit rozložení.

WM_SETMESSAGESTRING

Tato zpráva odeslána do rámečku okna o aktualizaci ve stavovém řádku zpráva.Řetězec ID nebo LPCSTR může být určený (ne však obojí).

wParam

Řetězec ID (nebo nula)

lParam

LPCSTR řetězec (nebo NULL)

Vrátí

Nepoužito (0)

WM_IDLEUPDATECMDUI

Tato zpráva odeslána v nečinnosti implementovat aktualizaci doba nečinnosti uživatelského rozhraní popisovače příkazu update.Pokud okno (obvykle ovládací panel) zpracovává zprávy, vytvoří CCmdUI (nebo objektu odvozené třídy) a volání CCmdUI::DoUpdate pro každý "položky" v okně.To bude zase kontrolovat ON_UPDATE_COMMAND_UI obslužnou rutinu pro objekty v řetězci zpracování příkazu.

wParam

BOOL bDisableIfNoHandler

lParam

Nepoužito (0)

Vrátí

Nepoužito (0)

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

WM_EXITHELPMODE

Tato zpráva je zaúčtována CFrameWnd , ukončete kontextovou nápovědu režimu.Přijetí této zprávy ukončení modální smyčky zahájeno CFrameWnd::OnContextHelp.

wParam

Nepoužito (0)

lParam

Nepoužito (0)

Vrátí

Nepoužito

WM_INITIALUPDATE

Tuto zprávu zasílá šablonu dokumentu na všechny následovníky rámeček okna je bezpečné proveďte jejich první aktualizací.Mapuje volání CView::OnInitialUpdate , ale lze použít v jiných CWnd-odvozené třídy pro jiné jednorázové aktualizace.

wParam

Nepoužito (0)

lParam

Nepoužito (0)

Vrátí

Nepoužito (0)

WM_RECALCPARENT

Tato zpráva zasílá zobrazení jeho nadřazené okno (získaných prostřednictvím GetParent) vynutit přepočet rozložení (obvykle zavolá nadřazeného RecalcLayout).Používá se v aplikace server OLE Pokud je nezbytné pro rámec zvětšovat velikost zvětšuje celkovou velikost zobrazení.

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

wParam

Nepoužito (0)

lParam

LPRECT rectClient může být NULL.

Vrátí

TRUE, pokud je nový klient obdélník vráceno FALSE jinak

WM_SIZECHILD

Tato zpráva je odeslána aplikací COleResizeBar do okna jeho vlastníka (prostřednictvím GetOwner) když uživatel změní velikost příčku s úchyty pro změnu velikosti.COleIPFrameWndChcete přemístit rámeček okna jako uživatel požadoval reaguje na tuto zprávu.

Nové obdélníku, v klientovi souřadnice vzhledem k rámečku okno, které obsahuje panel velikosti je podle lParam nepočítá.

wParam

Nepoužito (0)

lParam

LPRECT rectNew

Vrátí

Nepoužito (0)

WM_DISABLEMODAL

Tato zpráva je odeslána všechna automaticky otevíraná okna vlastněných rámeček okna, které se právě ruší.Rámeček okna používá k určení, zda zakázat rozbalovací okno výsledek.

Můžete tento rámec zadá modální státu provést zvláštní zpracování v překryvném okně nebo zachovat některá překryvná okna Začínáme zakázán.Popisy zničit sami když rámeček okna dostane do modální stát například pomocí této zprávy.

wParam

Nepoužito (0)

lParam

Nepoužito (0)

Vrátí

Nenulová na není okna zakázat, 0 označuje okna bude zakázán.

WM_FLOATSTATUS

Tato zpráva je odeslána všechna automaticky otevíraná okna vlastněných rámeček okna při rámec aktivován nebo deaktivován rámec nejvyšší úrovně oknem.Je používán provádění MFS_SYNCACTIVE v CMiniFrameWnd, pro synchronizaci aktivaci těchto oken s aktivací okna snímek nejvyšší úrovně.

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)

By měla být vrácena hodnota nula Pokud FS_SYNCACTIVE je sada a synchronizuje okna jeho aktivace s nadřazený rámec.CMiniFrameWndvrátí nenulovou styl nastaven na MFS_SYNCACTIVE.

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

WM_ACTIVATETOPLEVEL

Tato zpráva odeslána nejvyšší úrovně okno okno v jeho "skupiny nejvyšší úrovně" aktivován nebo deaktivován.Pokud je okno nejvyšší úrovně (žádný nadřazený nebo vlastník) nebo vlastníkem takového okna, okno je součástí skupiny nejvyšší úrovně.Tato zpráva je podobná, používá k 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ých aplikací OLE).

WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE

Tyto zprávy se používají při provádění kontextovou nápovědu.Najdete na Technická poznámka 28 Další informace.

MFC soukromých zdrojů formáty

V současné době MFC definuje dva formáty soukromých zdrojů: RT_TOOLBAR a RT_DLGINIT.

Formát Resource RT_TOOLBAR

Je na základě výchozí panel nástrojů poskytnutých AppWizard RT_TOOLBAR vlastní zdroje, který byl zaveden v MFC 4.0.Tento zdroj v panelu nástrojů editoru můžete upravit.

Formát Resource RT_DLGINIT

Jeden formát MFC soukromých zdrojů slouží k uložení další dialogové okno informace o inicializaci.To zahrnuje počáteční řetězce uložené v poli se seznamem.Formát tohoto prostředku není určen k ručně upravili, ale jsou zpracována Visual C++.

Visual C++ a to RT_DLGINIT prostředku nemusí používat související funkce MFC, protože rozhraní API alternativou pomocí informací v prostředku.Pomocí aplikace Visual C++ proto jednodušší zápis, zachování a přeložit dlouhodobě aplikace.

Základní struktura RT_DLGINIT prostředku 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é sekce obsahuje ID kontrolní zprávy, 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 obsahu údajů.Editor Visual C++ zdrojů a MFC podporují pouze omezenou podmnožinu zprávy systému Windows: CB_ADDSTRING pro počáteční možnosti seznamu pro pole se seznamem (data je textový řetězec).

Viz také

Další zdroje

Technické poznámky podle čísla

Technické poznámky podle kategorie