WM_MOUSEMOVE не доставляется кнопке, если курсор не находится над ней (и не захвачен, но вы этого не хотите). Поэтому вы должны обработать WM_MOUSEMOVE в родительском диалоге. Если вы хотите, чтобы ваша кнопка была автономным элементом управления, вы должны создать подкласс родительского окна при создании кнопки.
Подклассы в этом контексте означают:
- вы извлекаете и сохраняете адрес процедуры родительского окна с помощью GetParent () -> GetWindowLong (GWL_WNDPROC)
- вы устанавливаете это в вашей процедуре с SetWindowLong ()
- в процедуре вы вызываете предыдущую процедуру окна родителя после обработки WM_MOUSEMOVE так, как вы хотите.