From the syntax side, that's OK to pass NULL, but in practice, it does not make sense, if the source surface is NULL, where did you copy from?
You can check the return value of Blt to see what happened if you pass NULL to source surface.
Domanda
Can lpDDSrcSurface be NULL while calling IDirectDrawSurface7::Blt?
dest_surf->Blt(&dest_rect, NULL, NULL, blt_flags, NULL);
Seems like the code above simply skips blitting but MSDN says nothing about it however.
Soluzione
From the syntax side, that's OK to pass NULL, but in practice, it does not make sense, if the source surface is NULL, where did you copy from?
You can check the return value of Blt to see what happened if you pass NULL to source surface.