But what's the use for SetTextColor and SetBkColor. They're not marked as obsolote. They should send the message to the control to change the color. It is a bad idea to check for that control's type and then send the right message. Why does it all have to be so complicated? Also some other messages, like WM_ENABLE(D - ?) with 0 value does not disable the control. And are all control ID's 6000 + ID in script??? Like when in script my button control ID is 1 then actually it is 6001. Khaled should write developers documentation.