typedef  bool(__stdcall CHANGE)(char *,char *);
多谢!!为什么要这样定义啊?非常感谢!!!

解决方案 »

  1.   

    这是定义一函数指针,即定义一个返回值是bool型,两个char *参数的函数,至于为什么这样,肯定有它的用处,一个常见的用处是动态加载DLL,比如你有一个a.DLL,中间有一个函数 bool a(char *p1,char *p2);用动态加载,HMODULE hMoudle=LoadLibrary("a.DLL");
    再CHANGE=(CHANGE)GetProcAddress(hMoudle,"a");然后就可以用CHANGE来调用这个函数a了。
      

  2.   

    typedef  bool(__stdcall CHANGE)(char *,char *); 
    用来定义函数指针,然后可以声明函数指针,例如 CHANGE *pFun。但这么定义巨多:
    typedef  bool(__stdcall *CHANGE)(char *,char *); 作用是用于动态加载DLL的函数:微软的例子:// A simple program that uses LoadLibrary and 
    // GetProcAddress to access myPuts from Myputs.dll. 
     
    #include <stdio.h> 
    #include <windows.h> 
     
    typedef int (*MYPROC)(LPTSTR); 
     
    VOID main(VOID) 

        HINSTANCE hinstLib; 
        MYPROC ProcAdd; 
        BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; 
     
        // Get a handle to the DLL module.
     
        hinstLib = LoadLibrary(TEXT("myputs")); 
     
        // If the handle is valid, try to get the function address.
     
        if (hinstLib != NULL) 
        { 
            ProcAdd = (MYPROC) GetProcAddress(hinstLib, TEXT("myPuts")); 
     
            // If the function address is valid, call the function.
     
            if (NULL != ProcAdd) 
            {
                fRunTimeLinkSuccess = TRUE;
                (ProcAdd) (TEXT("Message via DLL function\n")); 
            }
     
            // Free the DLL module.
     
            fFreeResult = FreeLibrary(hinstLib); 
        } 
     
        // If unable to call the DLL function, use an alternative.
     
        if (! fRunTimeLinkSuccess) 
            printf("Message via alternative method\n"); 
    }
      

  3.   


    那为什么要用个“__stdcall ”在CHANGE前?这又是什么含义那?请给与指教!谢谢!
      

  4.   

    明白了,刚刚从msdn里查到,那是因为它调用的是vb里的dll,所以说必须这么调用,不能用—cdecl!这是MSDN里的一段说明:使用其它来源的过程
    如果过程所在的 DLL 不是操作系统的一部分,必须先确定它的正确声明形式。帮助主题“声明 DLL 过程”中详尽地解释了 Declare 语句的语法。注意   如果使用 Visual C++ (或类似工具)创建将要由 Visual Basic 调用的 DLL ,则请使用 __stdcall 调用约定。不要使用缺省的调用约定(_cdecl)。
    多谢各位帮助!!!还请各位以后多帮忙!!!现在就结贴!!!给分!接分了各位!!