关于WM_COPYDATA的问题!! - C++ Builder / Windows SDK/API
程序是Delphid的想用C builder 编那位能不不能指点指点
//接收消息函数声明
procedure Dsc_dll_Mess(var cData: TWMCopyData); message WM_COPYDATA;
procedure TForm1.Dsc_dll_Mess(var cData: TWMCopyData);
var
i, j, Len: Word;
DevExist: Boolean;
DevImei, str: string;
DataLen: integer;
DtuData: array of Byte;
begin
case cData.CopyDataStruct.dwData of
0: //DTU断线消息
begin
DataLen := cData.CopyDataStruct.cbData;
if DataLen < 15 then Exit;
setlength(DtuData, DataLen);
Move(cData.CopyDataStruct.lpData^, DtuData[0], DataLen);
//取设备IMEI
DevImei := '';
for i := 0 to 14 do
begin
if DtuData[i] <> $00 then
DevImei := DevImei + Chr(DtuData[i])
else break;
end;
if ListViewDev.Items.Count > 0 then
begin
for i := 0 to ListViewDev.Items.Count - 1 do
begin
if ListViewDev.Items[i].Caption = DevImei then
begin
ListViewDev.Items[i].ImageIndex := 0; //离线图标
ListViewDev.Items[i].SubItems[2] := DateTimeToStr(Now); //离线时间
break;
end;
end;
end;
end;
[解决办法]
翻译成C++大概是这个样子:
在.h文件的TForm1类中:
void __fastcall Dsc_dll_Mess(TWMCopyData &Msg); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_COPYDATA, TWMCopyData, Dsc_dll_Mess); END_MESSAGE_MAP(TForm)