I generally program in VBA and hooking is not a big thing there. Lately I have been playing with hooking in VB6 and I noticed in the Windows API there is a SetWindowLongA and SetWindowLongW. I try to do everything I do in Unicode so I want to use the W version. When I look at Microsoft's documentation for each, it shows 3 parameters which are all passed ByVal and none of them relates to a string so the two calls look identical. Does anyone know why there is an "A" version and a "W" version?

BTW, the same question is for functions SetWindowsHookExA and SetWindowsHookW.

Thanks