Первое, о чем вы должны знать, это то, что эти функции могут давать сбой. Вы должны всегда проверять возвращаемые значения, хотя бы для регистрации факта, что они потерпели неудачу.
Во-вторых, я думал, что эти цвета будут влиять только на будущие TextOut
вызовы для данного контекста. Возможно, строка заголовка не использует эти вызовы.
Как минимум, вам, вероятно, следует попытаться сделать что-то, что приведет к этому, например, изменить текст в строке заголовка.
Не то чтобы это предназначалось для того, чтобы остановить вас, и у меня может не быть всех фактов, но я лично нахожу программы, которые игнорируют мои желания, довольно раздражающими. Если бы я, как пользователь, хотел, чтобы у моих программ были разные цветные заголовки, я бы сам их настроил, большое спасибо: -)
И, пока еще еще один в стороне, если вы перехватите сообщение WM_NCPAINT, вам придется либо самому заняться всем (не рекомендуется), либо сначала вызвать базовую версию, а затем внести свои изменения поверх это (и, честно говоря, это также не рекомендуется из-за больших вариаций макетов).