Что непонятно с этими функциями? Ну, устанавливает она атрибут окна, это все, что тебе надо о ней знать. Как работает CreateWindow или GetDC тебе понятно? Оно тебе не надо на данном этапе.
Вот описание второй функции по-русски:
Функция SetWindowLong, а CallWindowProc просто вызывает оконную функцию, передаваемую ей в первом параметре. Зачем это нужно? Ну, допустим, ты написал свою процедуру обработки тех сообщений, которые тебе нужны, обработал их. А что дальше? Те, которые НЕ обрабатываются твоей процедурой, что, будут потеряны? Нет, ты просто берешь адрес старой (настоящей, неподмененной) оконной процедуры того окна, которое сабклассируешь, и вызываешь ее.
Помнишь, что произошло, когда ты не вызвал DefWindowProc для своего окна? Вот примерно то же самое будет, если не вызвать старую процедуру сабклассированного окна. Ты-то перехватил все, что тебе надо было, а мало ли что окно еще обрабатывает... Вот и пусть обрабатывает само, тебе-то это зачем?
Подобная техника применяется при написании обработчиков прерываний (никогда не делал?
) - пишешь свой обработчик, скажем, таймера, выполняешь что-то свое, а потом вызываешь прежний, системный обработчик...