Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich habe noch nicht sehr viel mit SDI gearbeitet. Daher fehlt mir da etwas Erfahrung.

Mein Problem:

Ich möchte in meinem Projekt eine Progressbar und eine Uhr in die Status Leiste einbringen. Habe das auch alles schon hinbekommen, nur leider funktioniert das überhaupt nicht über einen Thread. Das heißt wenn ich die Uhr laufen lasse oder die ProgressBar, dann bleibt mir ja die Anwendung für den Zeitraum hängen. Ist mir Klar. Daher ja auch ein Thread...

Was ich nicht verstehe, ist das ich aus dem Thread nicht auf CMainFrame zugreifen darf. Habe schon alles mögliche versucht. Vielleicht seht Ihr ja den Fehler oder habt eine Lösung...

Wenn ich SendTextToStatusbar aufrufe geht es ja auch. Warum dann nicht aus dem Thread???


void CMyViewDlg::SendTextToStatusbar(int iIndex,CString csText)
{
((CMainFrame *)(theApp.m_pMainWnd))->SendTextToStatusbar(iIndex,csText);
}

bool CMyViewDlg::MyThreadControl()
{
DWORD pdwTimeThreadId;
LPVOID pParam;

pParam = (LPVOID)this;
m_hTimeThread = CreateThread(NULL,
0,
TimeThread,
pParam,
NULL,
&pdwTimeThreadId);

return true;
}


//Thread
DWORD WINAPI TimeThread(LPVOID pParam)
{
try
{
CMyViewDlg * pThis = (CMyViewDlg *) pParam ;


while(true)
{

pThis->SendTextToStatusbar (0, _T(_T(“Testâ€));
}
}
catch(CException *e)
{
char tmp[256];

e->GetErrorMessage(tmp, sizeof(tmp));

CString csTmp(tmp);


e->Delete();
}
catch(...)
{

}

return 0;
}



[/PHP]

Geschrieben

Generell ist es nicht sicher, MFC-Methoden aus einem anderen Thread als dem, der das Fenster erstellt hat, aufzurufen. Es geht zwar oft gut (was hauptsächlich daran liegt, dass viele MFC-Methoden nur hauchdünne Wrapper um die WinAPI sind), aber manches eben nicht (z.B. UpdateData).

Im Zweifelsfall ist es immer besser, aus dem Thread eine Message an irgendein Fenster zu senden, und dort die gewünschte Aktion auszulösen.

Wie sieht denn CMainFrame::SendTextToStatusbar aus?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...