sometimes i don't understand these API functions
Code:
.......................
HBITMAP g_hbmBall=NULL;

    switch (message)                  /* handle the messages */
    {
         case WM_CREATE:
        {

            g_hbmBall =(HBITMAP) LoadImage(NULL,"C:\\Chrysanthemum.bmp",IMAGE_BITMAP,LR_DEFAULTSIZE,LR_DEFAULTSIZE,LR_LOADFROMFILE);
            if(g_hbmBall == NULL)
                MessageBox(hwnd, "Could not load the image!", "Error", MB_OK | MB_ICONEXCLAMATION);
        }
        break;
        case WM_PAINT:
        {
            BITMAP bm;
            PAINTSTRUCT ps;

            HDC hdc = BeginPaint(hwnd, &ps);

            HDC hdcMem = CreateCompatibleDC(hdc);
            HBITMAP hbmOld =(HBITMAP) SelectObject(hdcMem, g_hbmBall);
            GetObject(g_hbmBall, sizeof(bm), &bm);

            BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);

            SelectObject(hdcMem, hbmOld);
            DeleteDC(hdcMem);

            EndPaint(hwnd, &ps);
        }
        break;
.........................
but why, with WM_PAINT message, the BitBlt() isn't showed the image?
the main window is created with WS_EX_CLIENTEDGE and WS_OVERLAPPEDWINDOW styles.
(i can share the rest of code)