Winiapi i wątki.

0

Witam

Szukam pomocy w rozwiązaniu problemu na który napotkałem.

Mam nową solucję w Visual Studio 2015 program dla Win32 (Winapi)

Mam funkcję która uruchamiam w wątku.
Chciałbym fakt zakończenia wątku złapać w WM_COMMAND: i wyświetlić jakiś tekst.

Wykonanie kodu w nowym watku

DWORD WINAPI ThreadFn(LPVOID vpParam)
{
	URLDownloadToFile(NULL, "http:/test.eu/jakis_plik.zip", "C:\\jakis_plik.zip", 0, 0);

	return 0;

Kod odpowiedzialny za łapanie komunikatów

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	
	switch (message)
    {
	
	case WM_COMMAND:
        {
           

           int wmId = LOWORD(wParam);
            // Parse the menu selections:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
	case WM_KEYDOWN:
		switch (wParam)
		{
		case VK_ESCAPE:
			PostQuitMessage(0);
			break;
		}
		break;
	
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);
            // TODO: Add any drawing code that uses hdc here...
			
			TextOut(hdc, 10, 70, L"Points: 0", 9);
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
0

Musiałbyś pewnie użyć np. funkcji WaitForSingleObject dla tego wątku, no i ponadto z tego miejsca wysłać ten swój WM_COMMAND (plus jakiś identyfikator...) do innego okna, np. głównego, czy też do innego wątku/procesu.

1

Skoro chcesz „złapać” w WM_COMMAND, to wyślij ten komunikat (PostMessage) z wątka.

0

Dzięki za pomoc.

Wykorzystałem PostMessage.

1 użytkowników online, w tym zalogowanych: 0, gości: 1