'Programmphasen in Windowsprozedur'

Hi,
ich hab folgendes Problem:
Ich hab in einem Programm verschiedene Phasen, also mit dem Benutzer interaktive Abschnitte, die nach Abschluss nicht mehr auf bestimmte Nachrichten in der Windowsprozedur reagieren sollen. Zum Beispiel soll bei der Nachricht WM_PAINT in der ersten Phase ein Strich und in der zweiten ein „P“ ausgegeben werden, dazu hab ich mir folgendes überlegt:

//global:
DWORD dwProcPhase = 0;

//WinProc:
LRESULT CALLBACK WndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{

switch(umsg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
if (dwProcPhase==0)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case b1:
MessageBox(NULL,„PHASE 0“,„POINT 0“, MB_OK);
++ dwProcPhase;
}
break;
}
default:
return DefWindowProc(hWnd, umsg, wParam, lParam);

}
}

Das ganze Programm wird zwar kompeliert, allerdings wird die if-Struktur immer Übergangen und auf Buttondruck wird immer die MBox ausgegeben, obwohl das ja nur einmal passieren sollte. Gibts dafür irgendeine geschicktere Lösung?
Mfg AT

Hi,

ich hab das mal in eine Lesbarere Form gebracht (pre tags^^).
Leider hab ich nicht ganz begriffen, was du eigentlich machen willst. Du willst den Zweig ‚case b1:‘ nur ein mal ausführen? Dann mach dein if dort rein.
Grüße

//global:
DWORD dwProcPhase = 0;

//WinProc:
LRESULT CALLBACK WndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
 switch(umsg)
 {
 case WM\_DESTROY:
 PostQuitMessage(0);
 break;

 if (dwProcPhase==0)
 {
 case WM\_COMMAND:
 switch (LOWORD(wParam))
 {
 case b1:
 MessageBox(NULL,"PHASE 0","POINT 0", MB\_OK);
 ++ dwProcPhase;
 }
 break;
 }
 default:
 return DefWindowProc(hWnd, umsg, wParam, lParam);
 }
}

Dann versuch ich mal genauer zu schildern ^^ :
Das Programm soll ein Strategiespiel sein, genauer gesagt Risiko. Ich hab erstmal vor das Programm relativ billig zu schreiben (also ohne DirectX; Länder sind als Buttons dargestellt :smiley: ). Was ich mit den unterschiedlichen Phasen erreichen will, ist dass die Prozedur mehr wie in C++ für die Konsole(CMD) gestaltet ist(fände ich viel übersichtlicher). Hier mal ein Beispiel dafür:

int main()
{
string a;
//1.
cout>a;//im Prog natürlich über Buttons
cout