HRESULT CTestUsbDataDlg::OnPacketArrived(unsigned char* BaseStation, long* DataTag, BSTR* Value, unsigned char* Status, short* RSSI, short* CV, VARIANT_BOOL* BattLow, VARIANT_BOOL * Error) { //TRACE(_T("Call OnPacketArrived..../n")); //CString strMsg; // strMsg.Format(_T("Tag:%X,%s"), *Value); // ((CListBox*)GetDlgItem(IDC_LIST))->AddString(strMsg); // CString strMsg; // strMsg.Format(_T("Tag:%X[%s]"), (TCHAR*)_bstr_t(*Value), false); // ((CListBox*)GetDlgItem(IDC_LIST))->AddString(strMsg); //_bstr_t tmpbstr = _bstr_t(*Value); //const char *tmp=tmpbstr.GetAddress(); //LPSTR ptemp = _com_util::ConvertBSTRToString(*Value); BSTR bstr = SysAllocString(L"测试"); CComBSTR s=bstr; ::MessageBox(NULL, s, s,MB_OK); CComBSTR tmpbstr1 = *Value; LPSAFEARRAY arr; HRESULT hr = tmpbstr1.BSTRToArray(&arr); //TCHAR *tmpbstr = W2A(*Value); CString strMsg; strMsg.Format(_T("Tag:%X [%d]"), *DataTag,arr->pvData/*(TCHAR*)_bstr_t(*Value)(LPCTSTR)_bstr_t(*Value)*/, false); ((CListBox*)GetDlgItem(IDC_LIST))->AddString(strMsg); //SetDlgItemText(IDC_EDIT1,); return S_OK; } TCHAR* HexToString(TCHAR* out, char* in, int size) { const TCHAR Hex[] = _T("0123456789ABCDEF"); TCHAR* p = out; for(int i = 0; i < size; i ++) { *p++ = Hex[((unsigned char)in[i]) >> 4]; *p++ = Hex[((unsigned char)in[i]) & 0x0f]; } *p = 0; return out; } record