// // FUNCTION: WndProc(HWND, unsigned, WORD, LONG) // // PURPOSE: Processes messages for the main window. // // WM_COMMAND - process the application menu // WM_PAINT - Paint the main window // WM_DESTROY - post a quit message and return // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; TCHAR szHello[MAX_LOADSTRING]; LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING); switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: { hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code here... RECT rt; GetClientRect(hWnd, &rt); // Top Text char text[1000]; // Image Header setup BITMAPINFO bmi; CBitmap bitmap; memset(&bmi,0,sizeof(bmi)); bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader); bmi.bmiHeader.biWidth = myImage.getWidth(); bmi.bmiHeader.biHeight = -myImage.getHeight(); // Use negative height. DIB is top-down. bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biBitCount = 24; bmi.bmiHeader.biCompression = BI_RGB; bmi.bmiHeader.biSizeImage = myImage.getWidth()*myImage.getHeight(); // Draw Processed image sprintf(text, "\n %s -> display", myImage.getImagePath()); DrawText(hdc, text, strlen(text), &rt, DT_LEFT); sprintf(text, "\n %s -> Gray Scaled -> YUV -> DCT -> Quant [ %d ] -> Dequant [ %d ] -> IDCT [ %d Co-Efficient(s) ] ", myImage.getImagePath(), myImage.getQuant(), myImage.getQuant(), myImage.getCoEff()); DrawText(hdc, text, strlen(text), &rt, DT_RIGHT); // Draw image SetDIBitsToDevice(hdc, 100,100,myImage.getWidth(),myImage.getHeight(), 0,0,0,myImage.getHeight(), myImage.getBytesRGBSTART(),&bmi,DIB_RGB_COLORS); SetDIBitsToDevice(hdc, 300+myImage.getWidth()+50,100,myImage.getWidth(),myImage.getHeight(), 0,0,0,myImage.getHeight(), myImage.getBytesRGBEND(),&bmi,DIB_RGB_COLORS); EndPaint(hWnd, &ps); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }