OK yes, thank you the substitution explanation makes sense when considering the compiled executable receiving the parameters. So the following fixes the issue:
newText = StrReplace(param2, '<crlf>', @crlf)
If Param1 == "text" then cSetWndText(Controlhandle, newText)
Thanks, JW