声明:
int WINAPI GetDeliverSMExEx(
ULONG* sm_ID, //返回:短讯ID
unsigned char* DestTON, //返回:目标地址号码类型
unsigned char* DestNPI, //返回:目标地址编码方案
char* DestAddr, //返回:目标地址
unsigned char* OrgTON, //返回:源地址号码类型
unsigned char* OrgNPI, //返回:源地址编码方案
char* OrgAddr, //返回:源地址
unsigned char* PRI, //返回:优先权
                           unsigned char* RP,
                           unsigned char* UDHI,
            unsigned char* PID, //返回:协议类型
unsigned char* DCS, //返回:编码方案
char* TimeStamp, //返回:下发时间
                           unsigned long * UDLen,
char* UserData, //返回:用户数据
                        unsigned char* StatusReport             //返回:状态报告标志,0表示不是状态报告,1:表示为状态报告
);调用:ULONG ulsm_ID;
char sDestAddr[MAX_ADDR_LEN];
memset(sDestAddr, 0, MAX_ADDR_LEN);
nsigned char byDestNPI;
ULONG ulsm_ID;
unsigned char byDestTON, byDestNPI, byOrgTON, byOrgNPI, byPRI, byPID, byDCS;
char sDestAddr[MAX_ADDR_LEN];
memset(sDestAddr, 0, MAX_ADDR_LEN);
char sOrgAddr[MAX_ADDR_LEN];
memset(sOrgAddr, 0, MAX_ADDR_LEN);
char sTimeStamp[MAX_TIMESTAMP_LEN];
memset(sTimeStamp, 0, MAX_TIMESTAMP_LEN);
char sUserData[MAX_UD_LEN];
memset(sUserData, 0, MAX_UD_LEN);int iRet;
unsigned char byRP;
unsigned char byUDHI;
unsigned long ulUDLen;
unsigned char byStatusReport = 0;
iRet = GetDeliverSMExEx(&ulsm_ID, &byDestTON, &byDestNPI, sDestAddr, &byOrgTON,
                        &byOrgNPI, sOrgAddr, &byPRI, &byRP, &byUDHI, &byPID, &byDCS,
                        sTimeStamp, &ulUDLen, sUserData, &byStatusReport);
if(iRet == 0)
{
        CString sGetData;
        sGetData.Format("接收成功!\n接受到数据:%s", sUserData);
MessageBox(sGetData,MB_OK,0); }
else
MessageBox("接收失败!",MB_OK,0);

解决方案 »

  1.   

    新贴见http://community.csdn.net/Expert/topic/4464/4464488.xml?temp=.2463037
      

  2.   

    /*ULONG ulsm_ID;
    char sDestAddr[MAX_ADDR_LEN];
    memset(sDestAddr, 0, MAX_ADDR_LEN);
    nsigned char byDestNPI;
    */这一段是多余的,还有,上面的回复也是多余的,本来应该是回复到这里的
    http://community.csdn.net/Expert/topic/4461/4461142.xml?temp=.3908502
      

  3.   

    function GetDeliverSMExEx(sm_ID: PULONG;
                                DestTON: PUChar;
                                DestNPI: PUChar;
                                DestAddr: PChar;
                                OrgTON: PUChar;
                                OrgNPI: PUChar;
                                OrgAddr: PChar;
                                PRI: PUChar;
                                RP: PUChar;
                                UDHI: PUChar;
                                PID: PUChar;
                                DCS: PUChar;
                                TimeStamp: PChar;
                                UDLen: PDWORD;
                                UserData: PChar;
                                StatusReport: PUChar): Integer stdcall; external 'XXXX.dll';
    var
      ulsm_ID:LongInt;  byDestTON, byDestNPI, byOrgTON, byOrgNPI, byPRI, byPID, byDCS : Char;  sDestAddr:array[0..MAX_ADDR_LEN-1]of Char;
      sOrgAddr:array[0..MAX_ADDR_LEN-1]of Char;
      sTimeStamp:array[0..MAX_TIMESTAMP_LEN-1]of Char;
      sUserData:array[0..MAX_UD_LEN-1]of Char;  byRP:UChar;
      byUDHI:UChar;
      ulUDLen:LongInt;
      byStatusReport:UChar;  iRet:Integer;
    beginIF HasDeliverMessage(MAX_WRITE_TIME)=0 then
    begin
      byStatusReport:=0;
      iRet:=GetDeliverSMExEx(@ulsm_ID,
                             @byDestTON,
                             @byDestNPI,
                             sDestAddr,
                             @byOrgTON,
                             @byOrgNPI,
                             sOrgAddr,
                             @byPRI,
                             @byRP,
                             @byUDHI,
                             @byPID,
                             @byDCS,
                             sTimeStamp,
                             @ulUDLen,
                             sUserData,
                             @byStatusReport);  IF iRet=0 then
      begin
        showmessage('成功');
        memo1.Lines.Add(sUserData);
      end;