Технически, GWLP_USERDATA предназначен для использования класса окон (базовый в случае создания подклассов). Поскольку диалоговые окна являются готовым классом, GWLP_USERDATA предназначен для внутреннего использования, поэтому диалоговые окна предоставляют поле DWLP_USER для использования вашей реализацией DialogProc.
Однако, как есть, все классы внутренних окон, предоставляемые Microsoft - EDIT, BUTTON, Dialog и т. Д., Не используют и не могут использовать GWLP_USERDATA по причинам совместимости приложений, поэтому они эффективно доступны для использования приложением.