WinAPI :: Что происходит при закрытии программы в виндовс?
wm_destroy это просто просьба к приложению, закрыть окно (не приложение)
по неписанным правилам ui, в windows, по закрытию последнего окна приложения (их может быть несколько) само приложение должно быть закрыто.
В вашем случае при отмене необходимо вернуть в return кажется true (посмотрите документацию) этим вы скажете вызывающей функции что процесс передумал закрывать окно и не будет его удалять. Смутно помню что вы должны были перед return еще какой то метод вызвать - обработчик событий окна по умолчанию, вот как раз при отмене закрытия его вызывать не нужно будет.
Используйте обработку события WM_CLOSE чтобы предотвратить закрытие окна.