typedef int(__stdcall*MMessageBox)(HWND,LPCTSTR,LPCTSTR,UINT);
这是一个函数指针声明
前面的int是返回值
里面__stdcall是调用约定
*MMessageBox中*表示MMessageBox是个指针,MMessageBox是这个指针的类型
后面括号里的是参数的参数原型
你可以用MMessageBox来声明类型
比如MMessageBox a = MessageBox; 这个是windows api
然后调用a();
举个简单的例子
typedef void (*abc)(int);
void func()
{
printf("hello");
}
abc a = func; 把func的地址赋给a
a(); 调用函数指针a调用func
DWORD __stdcall RMTFunc(MyData *pData)
{
typedef int(__stdcall*MMessageBox)(HWND,LPCTSTR,LPCTSTR,UINT);
MMessageBox MsgBox = (MMessageBox)pData->dwMessageBox;
MsgBox(NULL, pData->sz, NULL, MB_OK);
return 0;
}
它这里并没有像你说的那样把函数地址赋给MMessageBox,例如abc a = func
而是而调用函数时却是像用messagebox一样,这个源码编译成功了,就是不知道他是怎么调用了messagebox,如果像你说的MMessageBox a = MessageBox;这样还可以理解