Programant Fils (Tema 2)

per Jordi Binefa

 

Creem una aplicació senzilla MFC AppWizard (exe) :

Step 1: Single document

Step 2: Default settings

Step 3: Default settings

Step 4: Turn off all options

Step 5: Default settings

Step 6: Default settings

 

A l’arxiu .cpp de la classe vista, a sota dels include i defines declarem aquesta variable global :

volatile int controladorDeFil;

Fem un menú F&ils/&Comença:  

Relacionem mitjançant l’assistent de classes ClassWizard :

 

 

Editem el codi i sota TODO: Add your command handler code here escriure:

HWND hWnd = GetSafeHwnd();
AfxBeginThread(RutinaFil, hWnd, THREAD_PRIORITY_NORMAL);
controladorDeFil = 1;
 

Afegim al menú F&ils l’opció &Acaba :

 

 

Editem el codi i sota TODO: Add your command handler code here escriure:

controladorDeFil = 0;

 

Desenvolupem la rutina del fil, sota la declaració de la variable global controladorDeFil :

 

UINT RutinaFil(LPVOID param){

    ::MessageBox((HWND)param, "Fil activat.", "Fil", MB_OK);

    while (controladorDeFil == 1);

    ::MessageBox((HWND)param, "Fil aturat.", "Fil", MB_OK);

    return 0;

}

 

Prova de començar quatre cops el fil i després atura’l. Que succeeix i perquè?

 

Fils002.zip