初学delphi,请问在VC中有BEGIN_EVENTSINK_MAP映射事件函数这些,如下面的VC程序,请问在Delphi中应如何做呢?谢谢BEGIN_EVENTSINK_MAP(CTestMMSOcxDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CTestMMSOcxDlg)
ON_EVENT(CTestMMSOcxDlg, IDC_ETESNMMSCTRL1, 1 /* ModemStatusChanged */, OnModemStatusChangedEtesnmmsctrl1, VTS_I4)
ON_EVENT(CTestMMSOcxDlg, IDC_ETESNMMSCTRL1, 2 /* MMSRecvReport */, OnMMSRecvReportEtesnmmsctrl1, VTS_I4 VTS_I4)
ON_EVENT(CTestMMSOcxDlg, IDC_ETESNMMSCTRL1, 3 /* SendSMSStatus */, OnSendSMSStatusEtesnmmsctrl1, VTS_I4 VTS_I4)
ON_EVENT(CTestMMSOcxDlg, IDC_ETESNMMSCTRL1, 4 /* SendMMSStatus */, OnSendMMSStatusEtesnmmsctrl1, VTS_I4 VTS_I4)
ON_EVENT(CTestMMSOcxDlg, IDC_ETESNMMSCTRL1, 5 /* RecvSMS */, OnRecvSMSEtesnmmsctrl1, VTS_BSTR VTS_BSTR)
ON_EVENT(CTestMMSOcxDlg, IDC_ETESNMMSCTRL1, 6 /* RecvMMS */, OnRecvMMSEtesnmmsctrl1, VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR)
ON_EVENT(CTestMMSOcxDlg, IDC_ETESNMMSCTRL1, 7 /* SMSRecvReport */, OnSMSRecvReportEtesnmmsctrl1, VTS_BSTR VTS_I4)
ON_EVENT(CTestMMSOcxDlg, IDC_ETESNMMSCTRL1, 8 /* Ring */, OnRingEtesnmmsctrl1, VTS_BSTR)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()void CTestMMSOcxDlg::OnModemStatusChangedEtesnmmsctrl1(long ModemStatus) 
{
//事件响应函数
static int snLastStatus=0;
if(snLastStatus==ModemStatus)
return; if(ModemStatus==1)
{
snLastStatus=1;
MessageBox("连接设备成功!");
}
else if(ModemStatus==-1)
{
snLastStatus=-1;
MessageBox("连接设备失败!");
}
}

解决方案 »

  1.   

    定义消息常量。   
      const   
          BJFORM_EDIT   =   WM_USER   +   30;   
      定义处理过程:   
      procedure   bjFormEdit(var   Message:   TMessage);   message   BJFORM_EDIT;   
        
      其他地方触发     :PostMessage();或者sendmessage();
    以上内容copy自某处。但是仍然是标准答案。
      

  2.   

    定义消息常量。   
      const   
          BJFORM_EDIT   =   WM_USER   +   30;   
      定义处理过程:   
      procedure   bjFormEdit(var   Message:   TMessage);   message   BJFORM_EDIT;   
        
      其他地方触发     :PostMessage();或者sendmessage();
    这是正解
      

  3.   

    unit MMSSdkDemo;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, OleCtrls, ETESNMMSLib_TLB, ExtCtrls;
    var
      SendMsgIndex:integer;
    const
    BJFORM_EDIT = WM_USER + 30;
    type
      TForm1 = class(TForm)
        EtesnMMS1: TEtesnMMS;
        InitOcx: TButton;
        ConnectModem: TButton;
        SendSms: TButton;
        SendMMS: TButton;
        DisConnectModem: TButton;
        ModemStatusLable: TLabel;
        SignalStrenghLabel: TLabel;
        NoticeEditLabel: TLabel;
        ModemStatusEdit: TEdit;
        SignalStrenghEdit: TEdit;
        NoticeEdit: TEdit;
        Timer1: TTimer;
        OpenDialog1: TOpenDialog;
        Exit: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure InitOcxClick(Sender: TObject);
        procedure ConnectModemClick(Sender: TObject);
        procedure SendSmsClick(Sender: TObject);
        procedure SendMMSClick(Sender: TObject);
        procedure DisConnectModemClick(Sender: TObject);
        procedure ExitClick(Sender: TObject);
        procedure bjFormEdit(var Message: TMessage); message BJFORM_EDIT;//此处提示出错,出错信息:[Error] MMSSdkDemo.pas(37): Unsatisfied forward or external declaration: 'TForm1.bjFormEdit'  private
        { Private declarations }
      public
        { Public declarations }
      end;
      

  4.   

    没有实现?在上面的后加入以下后
    procedure bjFormEdit(var Message: TMessage); message BJFORM_EDIT; //现在上这里提示出错,提示[Error] MMSSdkDemo.pas(131): Unknown directive: 'message'
    beginend;