Looked around and kind find any explanations.
Any API which takes a string as an argument has two versions: unicode (W) and ascii (A). eg MessageBoxA and MessageBoxW. MASM and most C compilers automatically append an A if you do not specify, so under MASM DIalogBOxParam and DialogBoxParamA are equivalent.
Also some functions that take individual characters as arguments (e.g. GetCharWidth32 (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_5cz6.asp)), or that take a string as part of a structure argument (e.g. EnumFontFamiliesEx (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_4mk8.asp)), are implemented in ANSI and Unicode versions.
Thanks for the info.
Learning more every day.
Also note that the compilers and assemblers don't know which functions have dual forms.
The translation to the A and W versions happens in the "include" files.