Det klassiske metode er at give thread-funktionen en pointer til det object der ejer tråden med som parameter. I dit tilfælde gøres det ved at ændre start af sende tråden til:
pSendThread = AfxBeginThread(SendThread, (LPVOID )this);
I sende tråden konverterer man parameteren tilbage til en CDataLinkLayer *:
UINT CDataLinkLayer::SendThread(LPVOID Param)
{
CDataLinkLayer *Owner = (CDataLinkLayer *)Param;
Så kan du tilgå member variabler og metoder igennem denne pointer:
Owner->pPacket = new CPacket();
Owner->m_pSendlist.AddHead(pPacket);
Du skal så lige bestemme dig for hvilke variable der skal deles mellem tråde. Det kan give mange problemer hvis flere tråde ændrer på den samme variabel samtidig. Det er normalt pænere at sende en besked til den tråd der ejer variablen, så der kun er en tråd der tilgår variablen.
Eller du kan beskytte de variable der skal deles med en mutex.