Metoda rezlizująca ruch w prawo

Oto przykładowy fragment rozwiązania podanego zadania - metoda realizująca ruch w prawo. Uwaga: część operacji można by umieścić poza tą metodą (w metodzie inicjalizującej). Poniższa metoda korzysta z globalnych zmiennych ic_x i ic_y pamiętających bieżące położenie ludzika na ekranie oraz zakłada, że stworzono dwie ikony o identyfikatorach IDI_Puste i IDI_Robotnik.
void CMinuteDlg::OnPrzyciskPrawo()
{
   // Obsługa przycisku przesuwającego w prawo

   CDC*     pDC;      // bieżący kontekst
   HICON    h_ic;     // uchwyt do ikonki
   CRect    rect;     // prostokąt okna
   CWinApp* cwinapp;  // wskaźnik do obiektu aplikacji
   int dx;            // przesunięcie w poziomie

   // Najpierw pobieramy dane
   pDC = GetDC();
   GetClientRect(&rect);
   dx = GetSystemMetrics(SM_CXICON);
   cwinapp = AfxGetApp();

   // Teraz sprawdzam czy da się iść w prawo
   if (ic_x + dx + dx < rect.Width())
   { // Można, więc idę

       // Usuwam ludzika w starym miejscu
       h_ic = cwinapp->LoadIcon(IDI_Puste);
       pDC -> DrawIcon(ic_x, ic_y, h_ic);

       // Uaktualniam współrzędne
       ic_x+=dx;

       // Rysuję w nowym
       h_ic = cwinapp->LoadIcon(IDI_Robotnik);
       pDC -> DrawIcon(ic_x, ic_y, h_ic);
   }
   else
   {   // Nie można iść dalej w prawo, przesuwam do lewego skraju okna
       MessageBox("Nie można iść dalej!");
       Beep(600, 500);  // Nie w każdej wersji Windows działa

       // Kasuję w starym miejscu
       h_ic = cwinapp->LoadIcon(IDI_Puste);
       pDC -> DrawIcon(ic_x, ic_y, h_ic);

       // Uaktualniam współrzędne
       ic_x=0;

       // I rysuję w nowym
       h_ic = cwinapp->LoadIcon(IDI_Robotnik);
       pDC -> DrawIcon(ic_x, ic_y, h_ic);

   }          
   
   // Zwalniam kontekst
   ReleaseDC(pDC);
}