Threads
-
du musst dem thread dem das fenster gehört eine nachricht schicken das er den text ändern soll
-
Ich habe einen Thread
CreateThread(NULL,0,ThreadFunktion,NULL,0,NULL); { SetDlgItemText(hwnd,IDC_Text,"Ich"); }Und den Aufruf im Main Programm:
CreateThread(NULL,0,ThreadFunktion,NULL,0,NULL);Was daran nicht funktioniert bleibt mir ein Rätsel...
-
Hast du meinen Beitrag gelesen?
-
Habe meinen Post geschriebn als du beriets geantwortet hast...Wie soll ich ihm das mitteilen?
Danke!
-
@Badestrand
Verstehe nicht genau wie du es meinst...
-
SetDlgItemText => http://msdn2.microsoft.com/en-us/library/ms645521(VS.85).aspx
=>If the function fails, the return value is zero. To get extended error information, call GetLastError.
-
Aso...Ich probiere es aus..Der Befefehl SetDlgItemText(hwnd,IDC_Text,"Test") funktioniert aber im Main Programm einwandfrei..Nur im Thread nicht..
-
Kommt keine Fehlermeldung....Komisch...
-
WIN32Rocks! schrieb:
Ich habe einen Thread
CreateThread(NULL,0,ThreadFunktion,NULL,0,NULL); { SetDlgItemText(hwnd,IDC_Text,"Ich"); }Und den Aufruf im Main Programm:
CreateThread(NULL,0,ThreadFunktion,NULL,0,NULL);Was daran nicht funktioniert bleibt mir ein Rätsel...
Und wie sieht der Code von ThreadFunktion aus? Das ist der Code, der im Thread ausgeführt wird.
-
In der ThreadFunktion steht: SetDlgItemText(hwnd,IDC_Text,"Ich").
Einfach gesagt!
Habe ein MainProgramm..Dieses Main Programm ruft einen Thread auf...Der Thread sollte etwas in die Textbox schreiben...Tut er aber nicht!Versuche ich jedoch, aus dem MainProgramm etwas in die Textbox zu schreiben, funktioniert es...
MFG
-
Und SetDlgItemText gibt also einen Wert ungleich Null zurück (habe ich aus deiner Antwort nicht ganz entnehmen können)?
-
Genau....
-
Auch im Thread ?
-
Wäre jemand mal so nett, und das selber ausprobiert?
Nur eine Main Funktion und ein Thread mit zugriff auf die Textbox...
Wäre super wenn er den Code dann hier posten würde...
-
Klappt:
#include <windows.h> #define WNDCLASSNAME "wndclass" HWND hWnd; DWORD WINAPI ThreadFunc( void* par ) { SetDlgItemText( static_cast<HWND>(par), 1234, "world" ); return 0; } LRESULT CALLBACK WinProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) { switch ( Msg ) { case WM_LBUTTONDOWN: { DWORD dummy; CreateThread( NULL, 0, ThreadFunc, hWnd, 0, &dummy ); //SetDlgItemText( hWnd, 1234, "welt" ); break; } case WM_CLOSE: { PostQuitMessage( 0 ); break; } } return DefWindowProc( hWnd, Msg, wParam, lParam ); } //int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) int main() { HINSTANCE hInstance = GetModuleHandle(NULL); MSG Msg; WNDCLASSEX ex; ZeroMemory( &ex, sizeof( WNDCLASSEX ) ); ex.cbSize = sizeof(WNDCLASSEX); ex.style = CS_HREDRAW|CS_VREDRAW|CS_OWNDC; ex.lpfnWndProc = WinProc; ex.hInstance = hInstance; ex.hIcon = LoadIcon( NULL, IDI_APPLICATION ); ex.hCursor = LoadCursor( NULL, IDC_ARROW ); ex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); ex.lpszClassName = WNDCLASSNAME; RegisterClassEx(&ex); hWnd = CreateWindowEx( NULL, WNDCLASSNAME, "Window", WS_OVERLAPPEDWINDOW, 0, 0, 300, 300, NULL, NULL, hInstance, NULL ); ShowWindow( hWnd, SW_SHOW ); UpdateWindow( hWnd ); CreateWindow( "Button", "hallo", WS_CHILD|WS_VISIBLE, 10, 10, 100, 12, hWnd, (HMENU)1234, hInstance, NULL ); while ( 1 ) { GetMessage( &Msg, NULL, 0, 0 ); if ( Msg.message == WM_QUIT ) break; TranslateMessage( &Msg ); DispatchMessage( &Msg ); } UnregisterClass( WNDCLASSNAME, hInstance ); return Msg.lParam; }PS: Quelltext ist rewcht zusammengewürfelt, hab sowas wie eine Vorlage aus dem INet genommen.
-
Wäre jemand mal so nett, und das selber ausprobiert?
Nur eine Main Funktion und ein Thread mit zugriff auf die Textbox...
Wäre super wenn er den Code dann hier posten würde...Mir wäre damit sehr geholfen!
MFG
-
Danke sehr...Ein kleines Problem habe ich noch...
Er sagt, dass er das static_cast nicht kennt...
MFG
-
WIN32Rocks! schrieb:
Danke sehr...Ein kleines Problem habe ich noch...
Er sagt, dass er das static_cast nicht kennt...
MFGKompilierst Du wirklich mit C++ od. ist das etwa mit C kompiliert?
-
Falls C => (HWND)par
-
Ja ich kompiliere in C!
Danke Leute es funktioniert jetzt....