<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Steuerelement hakt warum]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem wo ich absolut nicht weiter weis und auf Eure hilfe hoffe.</p>
<p>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.</p>
<p>Danke im Voraus</p>
<pre><code class="language-cpp">Die vom Thread aufgerufene Routine

void CRepairDlg::UsartLoop()
{
 do
 {
  m_nUsartBuff = 0;
  m_pSerial-&gt;m_nBytesCount = 0;
  m_nUsartBuff = m_pSerial-&gt;Receive();

  if(m_pSerial-&gt;m_nBytesCount != 0)
   m_pSerial-&gt;m_bReceiveFlag = TRUE;

  // Das Byte 15 dient zum abfragen zweier Zustände (Fehler=255, Normal=0)
  if(m_nUsartBuff == 15)
  {
   m_pRC3TestDlg-&gt;Delay(1000);
   m_nUsartBuff2 = m_pSerial-&gt;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-&gt;m_bReceiveFlag == TRUE) &amp;&amp; (m_bTestFlg == FALSE) &amp;&amp; (m_nSaveVal != m_nUsartBuff))
{
 for(i=0; i&lt;=2; i++)
 {
   buff = m_nUsartBuff;
   tmp = compVal[i] &amp; buff;

   // Bit an Porta gesetzt ?
   if(tmp == compVal[i])
   {
   // Fehler ?
   if(compVal[i] == 2)
    m_ctrlOutputs.SetItemText(0, 6, &quot;TRUE&quot;);

    // Normal ?
    if(compVal[i] == 4)
     m_ctrlOutputs.SetItemText(0, 5, &quot;TRUE&quot;);         // !!! hier scheitert der Aufruf

    // Ausgang ?
    if(compVal[i] == 16)
     m_ctrlOutputs.SetItemText(0, 7, &quot;TRUE&quot;);
   }
 }
m_pSerial-&gt;m_bReceiveFlag = FALSE;
}

BOOL CListCtrl::SetItemText(int nItem, int nSubItem, LPCTSTR lpszText)
{
  ASSERT(::IsWindow(m_hWnd));
  ASSERT((GetStyle() &amp; LVS_OWNERDATA)==0);
  LVITEM lvi;
  lvi.iSubItem = nSubItem;
  lvi.pszText = (LPTSTR) lpszText;
  return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMTEXT, nItem, (LPARAM)&amp;lvi);
}

Hier hakt das Programm beim Return von SendMessage
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/76369/steuerelement-hakt-warum</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 21:31:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/76369.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Jun 2004 13:47:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Steuerelement hakt warum on Thu, 10 Jun 2004 13:52:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem wo ich absolut nicht weiter weis und auf Eure hilfe hoffe.</p>
<p>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.</p>
<p>Danke im Voraus</p>
<pre><code class="language-cpp">Die vom Thread aufgerufene Routine

void CRepairDlg::UsartLoop()
{
 do
 {
  m_nUsartBuff = 0;
  m_pSerial-&gt;m_nBytesCount = 0;
  m_nUsartBuff = m_pSerial-&gt;Receive();

  if(m_pSerial-&gt;m_nBytesCount != 0)
   m_pSerial-&gt;m_bReceiveFlag = TRUE;

  // Das Byte 15 dient zum abfragen zweier Zustände (Fehler=255, Normal=0)
  if(m_nUsartBuff == 15)
  {
   m_pRC3TestDlg-&gt;Delay(1000);
   m_nUsartBuff2 = m_pSerial-&gt;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-&gt;m_bReceiveFlag == TRUE) &amp;&amp; (m_bTestFlg == FALSE) &amp;&amp; (m_nSaveVal != m_nUsartBuff))
{
 for(i=0; i&lt;=2; i++)
 {
   buff = m_nUsartBuff;
   tmp = compVal[i] &amp; buff;

   // Bit an Porta gesetzt ?
   if(tmp == compVal[i])
   {
   // Fehler ?
   if(compVal[i] == 2)
    m_ctrlOutputs.SetItemText(0, 6, &quot;TRUE&quot;);

    // Normal ?
    if(compVal[i] == 4)
     m_ctrlOutputs.SetItemText(0, 5, &quot;TRUE&quot;);         // !!! hier scheitert der Aufruf

    // Ausgang ?
    if(compVal[i] == 16)
     m_ctrlOutputs.SetItemText(0, 7, &quot;TRUE&quot;);
   }
 }
m_pSerial-&gt;m_bReceiveFlag = FALSE;
}

BOOL CListCtrl::SetItemText(int nItem, int nSubItem, LPCTSTR lpszText)
{
  ASSERT(::IsWindow(m_hWnd));
  ASSERT((GetStyle() &amp; LVS_OWNERDATA)==0);
  LVITEM lvi;
  lvi.iSubItem = nSubItem;
  lvi.pszText = (LPTSTR) lpszText;
  return (BOOL) ::SendMessage(m_hWnd, LVM_SETITEMTEXT, nItem, (LPARAM)&amp;lvi);
}

Hier hakt das Programm beim Return von SendMessage
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/537480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/537480</guid><dc:creator><![CDATA[mike2003]]></dc:creator><pubDate>Thu, 10 Jun 2004 13:52:06 GMT</pubDate></item></channel></rss>