C++中如何像vb一样自定义API参数类型?

来源:百度知道 编辑:UC知道 时间:2024/05/11 17:38:28
如: SendMessage (hwnd,Msg,wParam,这里需要字符型)

vb则在声明中就能改....c++呢? 该怎么定义? 谢谢大家


小弟还有一题 希望大家也能帮帮忙 http://zhidao.baidu.com/question/47802597.html (悬赏为:100分)

示例::::::::

Public Declare Function AbortPrinter Lib "winspool.drv" (ByVal hPrinter As → Long ←) As Long //注意箭头处
Public Declare Function AbortPrinter Lib "winspool.drv" (ByVal hPrinter As → String ←) As Long //注意箭头处
我就是想在C++中这样随意的声明怎么做呢?

→to 一楼兄弟

不是返回值. public..function..api (参数,参数.关键是参数的Long? int? String?由我来变.) ..返回值
例:
SendMessage (hwnd,WM_CLOSE,0,0)
SendMessage (hwnd,msg,0,这里传递String型) →问题在这 在vb中只要把最后一个类型改成String 那C++是怎么定义的呢?

----
我想我可能理解错了楼主的意思了。
你说VB可以任意传递参数到API函数当中,只需要把声明时的类型改掉就成,是么?我觉得VB虽然是弱类型语言,但也不是能够这么使的,能在SendMessage里传String是有原因的。
在C/C++当中,拿SendMessage来说,后两个参数WPARAM,LPARAM可以看作void*,你想传什么都可以通过类型转换成相应的,不过那是调用的时候强制类型转换的,而不是修改了声明。例如:
LPCTSTR szParam = "parameter string";
SendMessage(hwnd, msg, 0, reinterpret_cast<LPARAM>(szParam));
是可以的,而消息处理函数接收到的也是一个LPARAM型的值,需要重新转换回去。

VB的String也是将字符串的内存地址传过去才能使用的吧,估计把AbortPrinter这么使不会成功的。