我在Delphi6中使用它们
use mmsystem;procedure TSocketFrm.MMxRateCntTimer(uTimeID,uMessage:UINT; dwUser, dw1, dw2:DWORD)stdcall;form2
var
 timerid:integer;Form2 buttion click()
timerid:=timeSetEvnet(1000,10,SocketFrm.MMxRateCntTimer,0,TIME_PERIODIC);ERROR:
Incompatible types:'regular procedure and method pointer' 

解决方案 »

  1.   

    此错误是因为SocketFrm.MMXRateCntTimer不匹配
    你必须把回传函数定义在SocketFrm之外
    为一般函数
    而不是SocketFrm的成员函数use mmsystem;procedure MMxRateCntTimer(uTimeID,uMessage:UINT; dwUser, dw1, dw2:DWORD)stdcall;form2
    var
     timerid:integer;Form2 buttion click()
    timerid:=timeSetEvnet(1000,10,MMxRateCntTimer,0,TIME_PERIODIC);
      

  2.   

    我的函数必须在SocketFrm单元中
    其它单元使用它
      

  3.   

    我的意思是你不要把回传函数
    当成TSocketFrm的成员函数就行
    比如,type 
        TSocketFrm = class(TForm)
        private
         ...
        public
         ...
        end;procedure MMxRateCntTimer(uTimeID,uMessage:UINT; dwUser, dw1, dw2:DWORD)stdcall;var
      SocketFrm: TSocketFrm;implementationprocedure MMxRateCntTimer(uTimeID,uMessage:UINT; dwUser, dw1, dw2:DWORD)stdcall;  //注意,这个stdcall也是必不可少的
    begin
       ...
    end;
      

  4.   

    use mmsystem;procedure MMxRateCntTimer(uTimeID,uMessage:UINT; dwUser, dw1, dw2:DWORD)stdcall;
    begin
       TSocketFrm frm = ( dwUser as TSocketFrm );// 没试,不知这样转行不
       frm.//这样就可以访问TSocketFrm的成员了end;form2
    var
     timerid:integer;Form2 buttion click()
    timerid:=timeSetEvnet(1000,10,MMxRateCntTimer,(DWORD)self,TIME_PERIODIC); //(DWORD)self 这里把TSocketFrm作为参数传进去
      

  5.   

    TSocketFrm frm = ( dwUser as TSocketFrm );// 没试,不知这样转行不
       frm.//这样就可以访问TSocketFrm的成员了好像不行啊