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).