VBで構造体に値を詰め込んでVC++で記述された別プロセスのソフトにデータ投げ投げ。
Private Sub Command3_Click() Dim p As DENBUNHDR_TBL Dim q As YMDHMS_TBL Dim r(36) As Byte Dim m As String Dim i As Integer With p .datasize = 8 .syubetu = 22 End With With q .year = &H2003 .mon = 3 .day = 11 .hour = 12 .min = 34 .sec = 56 End With MsgBox Hex(VarPtr(r(1))) Call CopyMemory(r(1), p, 28) Call CopyMemory(r(29), q, 8) For i = 1 To 36 m = m + Right("00" + Hex(r(i)), 2) Next MsgBox m Call PostDenbun(VarPtr(r(1)), 8) End Sub
VarPtr(Visual Basicの限界を広げるサブクラス化の手法)はまあ常道だけど、配列の先頭アドレス取るのにハマったり。フツー参照渡しなのでr(1)と先頭要素書けばいいのね。同様にr(29)と書けば28番目の要素のアドレス(コノ場合はDENBUNHDR_TBLの直後)を表現したり。DENBUNHDR_TBLの後ろにYMDHMS_TBLを貼り付けてメモリ上にまとめてからPostDenbunサブルーチンでWM_COPYDATA~
Posted by minemaz at 2003年12月21日 16:29