Condividi tramite


TN024: Messaggi MFC Definiti e risorse

[!NOTA]

La seguente nota tecnica non è stata aggiornata dalla prima volta che viene inclusa nella documentazione online.Di conseguenza, alcune procedure e argomenti potrebbero non essere aggiornati o errati.Per le informazioni più recenti, è consigliabile cercare l'argomento di interesseindice della documentazione online.

Questa nota vengono descritti i messaggi di windows e i formati interni delle risorse utilizzate da MFC.Queste informazioni vengono illustrati l'implementazione del framework e viene assisteranno quando si esegue il debug dell'applicazione.Per l'avventuroso, anche se tutte queste informazioni sono ufficialmente non supportate, è possibile utilizzare alcune di queste informazioni per le implementazioni avanzate.

Questa nota contiene i dettagli di implementazione privati di MFC; tutti i contenuti sono soggette a modifiche in futuro.I messaggi privati delle finestre MFC ha senso solo in un'applicazione ma cambiano in futuro per contenere i messaggi a livello di sistema.

L'intervallo dei messaggi privati delle finestre di MFC e i tipi di risorsa in un intervallo riservato “system„ sottoposte a shelving in Microsoft Windows.Attualmente non tutti i numeri negli intervalli vengono utilizzati e, successivamente, i nuovi numeri nell'intervallo possono essere utilizzati.i numeri attualmente utilizzati possono essere modificati.

I messaggi privati delle finestre MFC in un intervallo 0x360->0x37F.

I tipi di risorsa privati MFC in un intervallo 0xF0->0xFF.

Messaggi privati delle finestre MFC

Questi messaggi di windows vengono utilizzati anziché le funzioni virtuali C++ in cui l'accoppiamento relativamente separato è obbligatorio tra gli oggetti della finestra e in cui la funzione virtuale di visual C++ non sarebbe appropriata.

Questi messaggi privati di windows e strutture associate dei parametri sono dichiarati nell'intestazione privata “AFXPRIV.H„ MFC.Ricevere un avviso che qualsiasi del codice che importa tale intestazione possono basarsi su un comportamento non documentato e probabilmente irromperanno le versioni future di MFC.

Nel caso di necessità necessario raro gestire uno di questi messaggi, è necessario utilizzare la macro della mappa messaggi di ON_MESSAGE e gestire il messaggio nel formato generico di LRESULT/WPARAM/LPARAM.

WM_QUERYAFXWNDPROC

Questo messaggio viene inviato a una finestra che la creazione.Ciò viene inviata molto presto nel processo di creazione di un metodo di determinare se il WndProc è AfxWndProc. Restituisce 1. diAfxWndProc .

wParam

Non utilizzato

lParam

Non utilizzato

restituisce

1 se elaborato da AfxWndProc

WM_SIZEPARENT

Questo messaggio viene inviato da una finestra cornice ai relativi elementi figlio immediati durante il ridimensionamento (CFrameWnd::OnSize chiama CFrameWnd::RecalcLayout che chiama CWnd::RepositionBars) per riposizionare le barre di controllo intorno al lato del frame.La struttura di AFX_SIZEPARENTPARAMS contiene il rettangolo client disponibile corrente del padre e un HDWP (che possono essere NULL) con cui chiamare DeferWindowPos per ridurre al minimo aggiornare.

wParam

Non utilizzato

lParam

Indirizzo di una struttura di AFX_SIZEPARENTPARAMS

restituisce

Non utilizzato (0)

La disabilitazione del messaggio indica che la finestra non fa parte del layout.

WM_SETMESSAGESTRING

Questo messaggio viene inviato a una finestra cornice per chiederle di aggiornare la riga del messaggio nella barra di stato.Un ID stringa o un LPCSTR può essere specificato (ma non entrambi).

wParam

ID stringa (o zero)

lParam

LPCSTR per la stringa (o NULL)

restituisce

Non utilizzato (0)

WM_IDLEUPDATECMDUI

Questo messaggio viene inviato il tempo di inattività di distribuire l'aggiornamento di tempo di inattività dei gestori dell'interfaccia utente di aggiornamento-comando.Se la finestra in genere una barra di controllo) gestisce il messaggio, creare un oggetto di CCmdUI (o un oggetto di una classe derivata) e la chiamata CCmdUI::DoUpdate per ciascuno “degli elementi„ nella finestra.Questa operazione consente a sua volta verificherà la presenza di un gestore di ON_UPDATE_COMMAND_UI per gli oggetti nella catena del gestore comando.

wParam

bDisableIfNoHandler di BOOL

lParam

Non utilizzato (0)

restituisce

Non utilizzato (0)

il bDisableIfNoHandler è diverso da zero disabilitare l'oggetto dell'interfaccia utente se c " non è ON_UPDATE_COMMAND_UI né un gestore di ON_COMMAND .

WM_EXITHELPMODE

Questo messaggio viene inviato a CFrameWnd che uscire dalla modalità di guida sensibile al contesto.La ricezione del messaggio termina il ciclo modale avviato da CFrameWnd::OnContextHelp.

wParam

Non utilizzato (0)

lParam

Non utilizzato (0)

restituisce

Non utilizzato

WM_INITIALUPDATE

Questo messaggio viene inviato dal modello di documento a tutti i discendenti di una finestra cornice quando si preferisce è possibile fare il relativo aggiornamento iniziale.Esegue il mapping a una chiamata a CView::OnInitialUpdate ma può essere utilizzato nell'altro CWnddi classi derivate da per altro aggiornamento specifico.

wParam

Non utilizzato (0)

lParam

Non utilizzato (0)

restituisce

Non utilizzato (0)

WM_RECALCPARENT

Questo messaggio viene inviato da una visualizzazione alla finestra padre (ottenuta tramite GetParent) per forzare un nuovo calcolo del layout (in genere, il padre chiamerà RecalcLayout).Viene utilizzato nelle applicazioni di server OLE dove è necessario che il frame si sviluppi nella dimensione quando la dimensione totale della visualizzazione aumenta.

Se la finestra padre elabora questo messaggio deve restituire il valore TRUE e riempire un rettangolo passato in lParam di nuovo il ridimensionamento dell'area client.Viene utilizzato in CScrollView correttamente per gestire le barre di scorrimento (posto quindi sull'esterno della finestra quando vengono aggiunti) quando un oggetto server si trova sul posto attivato.

wParam

Non utilizzato (0)

lParam

LPRECT rectClient, può essere NULL

restituisce

TRUE se nuovo rettangolo client restituito in caso contrario, FALSE

WM_SIZECHILD

Questo messaggio viene inviato da COleResizeBar alla finestra proprietaria (tramite GetOwner) quando l'utente ridimensiona la barra di ridimensionamento con i quadratini di ridimensionamento.COleIPFrameWnd risponde a questo messaggio tentando di riposizionare la finestra cornice come l'utente ha richiesto.

Il nuovo rettangolo, fornite coordinate del client relativo alla finestra cornice contenente la barra di ridimensionamento, è puntata da lParam.

wParam

Non utilizzato (0)

lParam

RectNew di LPRECT

restituisce

Non utilizzato (0)

WM_DISABLEMODAL

Questo messaggio viene inviato a tutte le finestre popup di proprietà di una finestra cornice in disattivanda.La finestra cornice utilizza il risultato per verificare la presenza di disabilitare la finestra popup.

È possibile utilizzare questo per eseguire l'elaborazione speciale nella finestra popup al frame immette uno stato modale o per mantenere alcune finestre popup da ottenere disabilitato.Le descrizioni comandi utilizzano questo messaggio per distruggere quando la finestra cornice passa allo stato modale, ad esempio.

wParam

Non utilizzato (0)

lParam

Non utilizzato (0)

restituisce

Diverso da zero a NOT disabilitare la finestra, 0 indica che la finestra verrà disabilitata

WM_FLOATSTATUS

Questo messaggio viene inviato a tutte le finestre popup di proprietà di una finestra cornice quando il frame viene attivata o disabilitata da un'altra finestra cornice di primo livello.Viene utilizzato dall'implementazione di MFS_SYNCACTIVE in CMiniFrameWnd, per impedire l'attivazione delle finestre popup in sincronia con l'attivazione della finestra cornice di primo livello.

wParam

È uno dei seguenti valori:

FS_SHOW

FS_HIDE

FS_ACTIVATE

FS_DEACTIVATE

FS_ENABLEFS_DISABLE

FS_SYNCACTIVE

lParam

Non utilizzato (0)

Il valore restituito deve essere diverso da zero se FS_SYNCACTIVE viene stabilito e la finestra syncronizes la relativa attivazione con il frame padre.CMiniFrameWnd restituisce diverso da zero quando lo stile è impostato su MFS_SYNCACTIVE.

Per ulteriori informazioni, vedere l'implementazione di CMiniFrameWnd.

WM_ACTIVATETOPLEVEL

Questo messaggio viene inviato a una finestra di livello principale quando una finestra in l “gruppo di livello superiore„ viene attivata o disattivata.Una finestra appartiene a un gruppo di livello superiore che sia una finestra di livello principale (nessun padre proprietaria), o è di proprietà da tale finestra.Questo messaggio è simile in uso a WM_ACTIVATEAPP, ma a utilizza le situazioni in cui le finestre appartenenti ai processi differenti vengono combinati in una singola gerarchia della finestra (comuni nelle applicazioni OLE).

WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE

Questi messaggi sono utilizzati nell'implementazione della guida sensibile al contesto.Fare riferimento in alternativa a nota tecnica 28 per ulteriori informazioni.

Formati privati delle risorse MFC

Attualmente, MFC definisce due formati privati di risorse: RT_TOOLBAR e RT_DLGINIT.

Formato delle risorse di RT_TOOLBAR

La barra degli strumenti predefinita fornita da AppWizard è basata su una risorsa personalizzata di RT_TOOLBAR , introdotta in MFC 4,0.È possibile modificare questa risorsa utilizzando l'editor barra degli strumenti.

Formato delle risorse di RT_DLGINIT

Un formato privato delle risorse MFC sono archiviate le informazioni di inizializzazione aggiuntive della finestra di dialogo.Comprende stringhe iniziali archiviate in una casella combinata.Il formato di questa risorsa non è progettato manualmente per essere modificato, ma è gestito da Visual C++.

Visual C++ e tale risorsa di RT_DLGINIT non sono necessari utilizzare le funzionalità correlate di MFC poiché c'è alternativa di API a utilizzare le informazioni della risorsa.Utilizzando Visual C++ rende più facile scrivere, gestire e traslare a lungo termine l'applicazione.

La struttura di base di una risorsa di RT_DLGINIT è la seguente:

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

Una sezione ripetuta contiene l'ID del controllo per inviare il messaggio a, il messaggio # (inviare un messaggio standard di windows) e una lunghezza variabile dei dati.Il messaggio di windows è stato introdotto un form:

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

Ciò è molto uno schema generale, consentendo tutti i messaggi di windows e il contenuto di dati.L'editor di risorse di Visual C++ e MFC supportano solo un sottoinsieme limitato dei messaggi di windows: CB_ADDSTRING per le elenco-scelte iniziali per le caselle combinate (i dati sono una stringa di testo).

Vedere anche

Altre risorse

Note tecniche del numero

Note tecniche per categoria