Steuerelement hakt warum
-
Hallo,
ich habe ein Problem wo ich absolut nicht weiter weis und auf Eure hilfe hoffe.
Ich habe eine CListCtrl die ich in einem Thread der die serielle Schnittstelle abfraget aktualisiere. Normal macht er das problemlos aber aus irgend einem mir nicht erkennbaren Grund hakt er dann an der im Quelltext aufgezeigten Stell. Bitte helft mir denn ich habe absolut keinen Plan woran das liegen mag.
Danke im Voraus
Die vom Thread aufgerufene Routine void CRepairDlg::UsartLoop() { do { m_nUsartBuff = 0; m_pSerial->m_nBytesCount = 0; m_nUsartBuff = m_pSerial->Receive(); if(m_pSerial->m_nBytesCount != 0) m_pSerial->m_bReceiveFlag = TRUE; // Das Byte 15 dient zum abfragen zweier Zustände (Fehler=255, Normal=0) if(m_nUsartBuff == 15) { m_pRC3TestDlg->Delay(1000); m_nUsartBuff2 = m_pSerial->Receive(); } else CheckOutputsRep(m_nUsartBuff); Sleep(2); } while(m_bUsartLoopFlg); } Aufruf der Routine void CRepairDlg::CheckOutputsRep(int portval, int delay) { int compVal[3]={16, 4, 2}; int i = 0; int tmp = 0; int buff = 0; if((m_pSerial->m_bReceiveFlag == TRUE) && (m_bTestFlg == FALSE) && (m_nSaveVal != m_nUsartBuff)) { for(i=0; i<=2; i++) { buff = m_nUsartBuff; tmp = compVal[i] & buff; // Bit an Porta gesetzt ? if(tmp == compVal[i]) { // Fehler ? if(compVal[i] == 2) m_ctrlOutputs.SetItemText(0, 6, "TRUE"); // Normal ? if(compVal[i] == 4) m_ctrlOutputs.SetItemText(0, 5, "TRUE"); // !!! hier scheitert der Aufruf // Ausgang ? if(compVal[i] == 16) m_ctrlOutputs.SetItemText(0, 7, "TRUE"); } } m_pSerial->m_bReceiveFlag = FALSE; } BOOL CListCtrl::SetItemText(int nItem, int nSubItem, LPCTSTR lpszText) { ASSERT(::IsWindow(m_hWnd)); ASSERT((GetStyle() & LVS_OWNERDATA)==0); LVITEM lvi; lvi.iSubItem = nSubItem; lvi.pszText = (LPTSTR) lpszText; return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMTEXT, nItem, (LPARAM)&lvi); } Hier hakt das Programm beim Return von SendMessage