バイナリデータの意味するところは私には分かりませんが、16Bit のビットマップデータなのでしょうか。
正しくビットマップが出来ていれば、BitBlt でエラーになることはないと思いますが、ビットマップはどのように作成していますか?
CBitmap を作成して、CImge に Attach するのは間違ってはいませんが、CImage でもビットマップは作成できます。
例えば以下のサンプルでは、100×100 の 16Bit ビットマップを作成して、データを直接書込んでいます。
コード:
CImage image;
image.Create(100, 100, 16);
HBITMAP bmp = (HBITMAP)image;
BITMAP bitmap;
::GetObject(bmp, sizeof(BITMAP), &bitmap);
unsigned short *bits = (unsigned short *)bitmap.bmBits;
unsigned char r = 31;
unsigned char g = 31;
unsigned char b = 0;
for (int y = 0; y < 10; ++y) {
for (int x = 0; x < 100; ++x) {
bits[100 * y + x] = (r << 10) + (g << 5) + b;
}
}
なお、ビットマップは普通ボトムアップ(上下反転)です、ご存じだとは思いますか念のため。