This code is expanding on the forger's windows programming tutorial; bmp_one (simply displays a static bitmap of a ball on a screen).
I am attempting to load an array of HBITMAPS (deck[53]) with a bunch of bitmaps of playing cards I scanned earlier today.. and display 5 random cards from the deck onto the main window.
I can get the code to work if I omit trying to load the deck[53] and just btblt( ) one specific card.
Can anyone spot the problemo...??
using codeblocks v8.02
resource.hCode:#define ID_2OFSPADES 100 #define ID_2OFCLUBS 101 #define ID_2OFHEARTS 102 #define ID_2OFDIAMONDS 103 #define ID_3OFSPADES 104 #define ID_3OFCLUBS 105 #define ID_3OFHEARTS 106 #define ID_3OFDIAMONDS 107 #define ID_4OFSPADES 108 #define ID_4OFCLUBS 109 #define ID_4OFHEARTS 110 #define ID_4OFDIAMONDS 111 #define ID_5OFSPADES 112 #define ID_5OFCLUBS 113 #define ID_5OFHEARTS 114 #define ID_5OFDIAMONDS 115 #define ID_6OFSPADES 116 #define ID_6OFCLUBS 117 #define ID_6OFHEARTS 118 #define ID_6OFDIAMONDS 119 #define ID_7OFSPADES 120 #define ID_7OFCLUBS 121 #define ID_7OFHEARTS 122 #define ID_7OFDIAMONDS 123 #define ID_8OFSPADES 124 #define ID_8OFCLUBS 125 #define ID_8OFHEARTS 126 #define ID_8OFDIAMONDS 127 #define ID_9OFSPADES 128 #define ID_9OFCLUBS 129 #define ID_9OFHEARTS 130 #define ID_9OFDIAMONDS 131 #define ID_10OFSPADES 132 #define ID_10OFCLUBS 133 #define ID_10OFHEARTS 134 #define ID_10OFDIAMONDS 135 #define ID_JOFSPADES 136 #define ID_JOFCLUBS 137 #define ID_JOFHEARTS 138 #define ID_JOFDIAMONDS 139 #define ID_QOFSPADES 140 #define ID_QOFCLUBS 141 #define ID_QOFHEARTS 142 #define ID_QOFDIAMONDS 143 #define ID_KOFSPADES 144 #define ID_KOFCLUBS 145 #define ID_KOFHEARTS 146 #define ID_KOFDIAMONDS 147 #define ID_AOFSPADES 148 #define ID_AOFCLUBS 149 #define ID_AOFHEARTS 150 #define ID_AOFDIAMONDS 151 #define ID_BACKOFCARD 152
main.cppresource.rcCode:#include <windows.h> #include "resource.h" #include <ctime> const char g_szClassName[] = "myWindowClass"; LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { static HBITMAP deck[53]; static HBITMAP hbmOld; switch(msg) { case WM_CREATE: srand(time(NULL)); for(int i=0, j=ID_2OFSPADES; i<53; i++, j++) { deck[i] = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(j)); if(deck[i] == NULL) { MessageBox(hwnd, "Could not load cards!", "Error", MB_OK | MB_ICONEXCLAMATION); } } break; case WM_CLOSE: DestroyWindow(hwnd); break; case WM_PAINT: { // Just a note, never use a MessageBox from inside WM_PAINT // The box will cause more WM_PAINT messages and you'll probably end up // stuck in a loop BITMAP bm; PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); HDC hdcMem = CreateCompatibleDC(hdc); for (int i=0, j=100; i<5; i++, j+=300) { hbmOld = (HBITMAP)SelectObject(hdcMem, deck[rand()%53]); GetObject(deck[i], sizeof(bm), &bm); BitBlt(hdc, j, 100, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY); } SelectObject(hdcMem,hbmOld); DeleteDC(hdcMem); EndPaint(hwnd, &ps); } break; case WM_DESTROY: for(int i=0; i<53; i++) { DeleteObject(deck[i]); } PostQuitMessage(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wc; HWND hwnd; MSG Msg; wc.cbSize = sizeof(WNDCLASSEX); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)CreateSolidBrush(RGB(0,255,0)); wc.lpszMenuName = NULL; wc.lpszClassName = g_szClassName; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&wc)) { MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "Blackjack v1.0", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 900,500, NULL, NULL, hInstance, NULL); if(hwnd == NULL) { MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while(GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam; }Code:#include "resource.h" ID_2OFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\2 of spades.bmp" ID_2OFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\2 of clubs.bmp" ID_2OFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\2 of hearts.bmp" ID_2OFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\2 of diamonds.bmp" ID_3OFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\3 of spades.bmp" ID_3OFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\3 of clubs.bmp" ID_3OFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\3 of hearts.bmp" ID_3OFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\3 of diamonds.bmp" ID_4OFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\4 of spades.bmp" ID_4OFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\4 of clubs.bmp" ID_4OFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\4 of hearts.bmp" ID_4OFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\4 of diamonds.bmp" ID_5OFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\5 of spades.bmp" ID_5OFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\5 of clubs.bmp" ID_5OFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\5 of hearts.bmp" ID_5OFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\5 of diamonds.bmp" ID_6OFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\6 of spades.bmp" ID_6OFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\6 of clubs.bmp" ID_6OFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\6 of hearts.bmp" ID_6OFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\6 of diamonds.bmp" ID_7OFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\7 of spades.bmp" ID_7OFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\7 of clubs.bmp" ID_7OFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\7 of hearts.bmp" ID_7OFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\7 of diamonds.bmp" ID_8OFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\8 of spades.bmp" ID_8OFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\8 of clubs.bmp" ID_8OFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\8 of hearts.bmp" ID_8OFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\8 of diamonds.bmp" ID_9OFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\9 of spades.bmp" ID_9OFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\9 of clubs.bmp" ID_9OFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\9 of hearts.bmp" ID_9OFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\9 of diamonds.bmp" ID_10OFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\10 of spades.bmp" ID_10OFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\10 of clubs.bmp" ID_10OFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\10 of hearts.bmp" ID_10OFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\10 of diamonds.bmp" ID_JOFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\jack of spades.bmp" ID_JOFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\jack of clubs.bmp" ID_JOFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\jack of hearts.bmp" ID_JOFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\jack of diamonds.bmp" ID_QOFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\queen of spades.bmp" ID_QOFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\queen of clubs.bmp" ID_QOFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\queen of hearts.bmp" ID_QOFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\queen of diamonds.bmp" ID_KOFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\king of spades.bmp" ID_KOFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\king of clubs.bmp" ID_KOFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\king of hearts.bmp" ID_KOFDIAMONDS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\king of diamonds.bmp" ID_AOFSPADES BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\ace of spades.bmp" ID_AOFCLUBS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\ace of clubs.bmp" ID_AOFHEARTS BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\ace of hearts.bmp" ID_BACKOFCARD BITMAP DISCARDABLE "C:\\Users\\Dsve\\Desktop\\Card Bitmaps\\back of card.bmp"