Richard,
I only see this in the code:
SetWindowText ( ControlHandle , value )
and such function is not defined in the code that you have posted.
So it has to be some where else and probably inside it is where unicode is taken into account.
Search for it, please