>それで消してみてメニューを表示させようとするとパラメーターの型が違います
>とでます。
これは#funcでの関数の登録方法の違いですかね
win32で文字列型を渡すときは、内部的にはポインタと呼ばれる数を渡します
ポインタは32bitOSなら32bitの整数型になります
#funcの説明に書いてありますが、関数を登録するときに引数を
intにすれば整数型を、sptrなら文字列のポインタと渡すと書いてあります
HSPで変数のポインタを知るにはvarptrという関数を使います
つまりまとめるとこうなります
//例1----------------------------------
#uselib "shlwapi.dll"
#cfunc PathIsDirectory "PathIsDirectoryA" int
mojigata = "C:\\Program Files"
mes PathIsDirectory(mojidata) //整数型を指定しているのでエラーになります
//例2----------------------------------
#uselib "shlwapi.dll"
#cfunc PathIsDirectory "PathIsDirectoryA" sptr
mojigata = "C:\\Program Files"
mes PathIsDirectory(mojidata) //OKです
#uselib "shlwapi.dll"
#cfunc PathIsDirectory "PathIsDirectoryA" sptr
mojigata = "C:\\Program Files"
mes PathIsDirectory(varptr(mojidata)) //OKです
#uselib "shlwapi.dll"
#cfunc PathIsDirectory "PathIsDirectoryA" int
mojigata = "C:\\Program Files"
mes PathIsDirectory(varptr(mojidata)) //OKです
HSPではポインタは意識しませんが、Cだと必須の知識になります
これを気に少し調べてみてはいかがでしょうか