Your best bet is to write your code in as much standard C++ as you can, without using visual tools, and then compiling with something like Borland or GCC. Yes - you can compile MS DOS executables with Visual C++ ; there should be mention of the libraries you would include instead of the win API libs. In addition to that, the one thing I do remember distinctly is that when you setup your project, make sure that you're specifying a DOS program and not a tiny-window API program or full API application. (blah... been 4 yrs since I picked up MS VC++)
As for 16-bit programs, any program that's calling on a 386 or better operand is technically a 16-bit program. Anything that's calling protected memory needs to be written with the DOS4GW libraries. Note that DOS4GW does NOT like windows.