LRESULT CALLBACK WndProcPref(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; switch (message) { case WM_LBUTTONDOWN: { // I have a tracepoint here which is never hit } break; case WM_PAINT: { HDC hdc = BeginPaint(hWnd, &ps); char s_east[32]; char s_north[32]; sprintf_s(s_east, "%i cars eastbound", num_h); sprintf_s(s_north, "%i cars northbound", num_v); TextOut(hdc, 5, 10, s_east, strlen(s_east)); TextOut(hdc, 5, 60, s_north, strlen(s_north)); EndPaint(hWnd, &ps); } break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: { BeginPaint(hWnd, &ps); BitBlt ( hdcMem, 0, 0, 700, 700, bgdc, 0, 0, SRCCOPY ); { Point p1 = {210,450}; t1.paint(hdcMem, p1,40,120,EASTBOUND); } { Point p1 = {450,490}; t2.paint(hdcMem, p1,40,120,NORTHBOUND); } { list::iterator it; for(it = cars_horizontal.begin(); it != cars_horizontal.end(); it++) { Car* c = *it; int x = c->getPosition().x; if(x > 0 && x < 700) c->paint(hdcMem, car_east_model, car_east_bitmask, EASTBOUND); } for(it = cars_vertical.begin(); it != cars_vertical.end(); it++) { Car* c = *it; int y = c->getPosition().y; if(y > 0 && y < 700) c->paint(hdcMem, car_north_model, car_north_bitmask, NORTHBOUND); } } char s_east[32]; char s_north[32]; sprintf_s(s_east, "%i cars eastbound", num_h); sprintf_s(s_north, "%i cars northbound", num_v); TextOut(hdcMem, 470, 130, s_east, strlen(s_east)); TextOut(hdcMem, 470, 150, s_north, strlen(s_north)); TextOut(hdcMem, 470, 30, txt_speedX, strlen(txt_speedX)); TextOut(hdcMem, 470, 80, txt_speedY, strlen(txt_speedY)); BitBlt(hdc, 0, 0, 700, 700, hdcMem, 0, 0, SRCCOPY); EndPaint(hWnd, &ps); } break; case WM_CHAR: switch(wParam) { case 'h': { // Create a new car in the horizontal list Point p = {-100,350}; cars_horizontal.push_back(new Car(p)); } break; case 'v': { // Create a new car in the vertical list Point p = {350,800}; cars_vertical.push_back(new Car(p)); } break; } break; case WM_LBUTTONDOWN: changeLights(hWnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }