Hvordan lage Message Maps i MFC

En Windows-operativsystemet er melding drevet miljø. En hendelse som et museklikk eller en skriver signal sender en melding til den løpende søknad som i sin tur behandler meldingen. Microsoft Foundation Class (MFC) Library støtter en melding drevet programmering modell. Den sentrale komponenten er Budskapet kart. Her er den OnLButtonDown funksjon håndterer venstre museklikk i CMyWindow klassen.

Bruksanvisning

1 Start Microsoft Visual Studio. For dette eksempel Visual C ++ 6,0 ble anvendt.

2 Lag en Win32 Application prosjekt. Klikk Fil, Ny, prosjekter og deretter "Win32 Application". Skriv inn et navn du ønsker i "Prosjektnavn" tekstboksen. I den andre siden i veiviseren velger du "Et tomt prosjekt". Klikk på Fullfør, og klikk OK. Dette prosjektet har ingen standardfiler.

3 Legg en kilde fil til prosjektet. Klikk Project, "Legg til Project," Ny og velg deretter "C ++ kildefil". Gi filen et navn i "File name" tekstboksen. Klikk på "OK".

4


Kopier og lim inn følgende kode på kildefilen:

#inkludere

klasse CMyWindow: public CFrameWnd

{

offentlig:

CMyWindow ()

{

Lag (NULL, "MFC Message Map Demo");

}

ugyldig OnLButtonDown (UINT flagg, CPek punkt);

DECLARE_MESSAGE_MAP ()

};

BEGIN_MESSAGE_MAP (CMyWindow, CFrameWnd)

ON_WM_LBUTTONDOWN ()

END_MESSAGE_MAP ()

void CMyWindow :: OnLButtonDown (UINT flagg, CPek punkt)

{

CFrameWnd :: OnLButtonDown (flagg, punkt);

Messagebox ( "Venstre knapp klikket");

}

klasse MinApp: public CWinApp

{

CMyWindow * pMyWin;

offentlig:

BOOL InitInstance ()

{

pMyWin = new CMyWindow ();

m_pMainWnd = pMyWin;

m_pMainWnd-> Showwindow (1);

returnere en;

}

};

MyApp theApp;

5


Forstå hva koden betyr:

DECLARE_MESSAGE_MAP:

Denne makroen forteller programmet at klassen som inneholder det, i dette tilfellet "CMyWindow", har et kart melding, og kan behandle meldinger. Bare klasser som stammer fra CCmdTarget kan utføre meldings kart.

BEGIN_MESSAGE_MAP & END_MESSAGE_MAP:

Disse makroene kan betraktes som de åpne lukke bukseseler i en melding kartet. "BEGIN_MESSAGE_MAP" tar to parametre, navnet på klassen som er vert kartet meldingen, i dette tilfellet "CMyWindow", og dens umiddelbare stamfar, "CFrameWnd".

ON_WM_LBUTTONDOWN:

Dette er en spesialitet makro som angir at CMyWindow håndterer venstre museklikk gjennom funksjonen OnLButtonDown. Når en venstre museklikk er assosiert med CMyWindow den OnLButtonDown klassen kalles automatisk.

6 Klikk og kjøre programmet. Klikk "Build" på menyen og "Compile program". Vent til den kompilerer. Klikk "Build" og "Execute program".

Hint

  • En klasse kan bare ha én melding kartet.