I don't believe copying from the HDC returned by BeginPaint is going to work.
BYTE * pBitsBk; // wrong ?
You can't pass uninitialised pointers to the GetDIBits, or any other, function.
BYTE * pBitsBk = 0; // corect ?
It doesn't load DDB. I use it to Load DIB bitmap - API doesn't include it.
Windows provides an API, LoadImage, to load bitmaps. You don't need to roll your own function.
I know that, but it's only for test. In final wersion, I'll delete it.
Showing a MessageBox from inside WM_PAINT is a bad idea.