Хотя я до сих пор не уверен, почему мой код работает в среде VS2017, а не в отдельном приложении, я нашел способ заставить мой код работать.
Это зависит от указателя стека, RSP: при входе в мое приложение (компилятор Prolog) я выделяю свой собственный большой изменяемый частный стек во время выполнения и устанавливаю RSP на его вершину.
Если я вызываю функцию PrintDlg () с RSP в моем личном стеке, это вызывает GPF. Если я сбрасываю его в исходный стек Windows, то функция работает как положено.
Одна дополнительная строка кода в моем макросе "WINAPI" - "MOV RSP, _OriginalRSP" - это все, что нужно.
Спасибо за ваше время, ребята.
Brian