Не уверен, почему вы создаете кнопку в WM_NCCREATE - потому что окно, на котором появится кнопка, еще не существует, отсюда (я полагаю) координаты destop.WM_NCCREATE отправляется вам, когда собираются создать «не-клиентские» области окна (не-клиентские области, такие как граница окна, строка заголовка и т. Д.)
Нужно ли поставитькнопка на не клиентской области?Если ответ «нет», то почему бы не создать кнопку внутри WM_CREATE.
Если вам нужно по какой-то причине создать кнопку внутри WM_NCCREATE, то почему бы не сохранить дескриптор окна, возвращенный вашим вызовом Createwindow ().Затем, внутри вашего обработчика сообщений WM_CREATE, возьмите дескриптор окна этой кнопки и выполните «MoveWindow (...)» с помощью окна приложения, координаты которого у вас теперь должны быть, когда вы находитесь в обработчике сообщений WM_CREATE.
Я полагаю, что один из параметров, которые вы можете передать в свой вызов CreateWindow (...), чтобы создать кнопку, позволяет вам указать флаг «SW _...», такой как «SW_HIDE», если память мне не изменяет.Поэтому создайте, но не показывайте кнопку в обработке WM_NCCREATE, если необходимо, а затем, когда WM_CREATE быстро появляется после этого, выполните команду MoveWindow (.... координаты окна, ...... SW_SHOW, ......)и т.д., чтобы расположить и сделать видимой кнопку.