Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Многопотоковые программы

Rusa




Принципиально н& 626p1513g #1086;вым свойством Windows Windows

Windows

API CreateThread

HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpAttr,

DWORDdwStack,

LPTHREAD_START_ROUTINE lpFunc,

LPVOID lpParam, DWORD dwFlags,

LPDWORD lpdwID

lpAttr Windows XP NT NULL

dwStack

и продолжается до завершения этой функции. Адрес потоковой функции (точки входа для потока) задается в параметре lpFunc

DWORD threadfunc LPVOID param

lpParam CreateThread

dwFlags CREATE SUSPEND ResumeThread lpdwID



TerminateThread

BOOL TerminateThread(HANDLE hThread, DWORD dwStatus);

hThread a dwStatus

TerminateThread TerminateThread

API Beep

BOOL Beep(DWORD frequency, DWORD duration);

frequency duration

Beep

#include <Windows.h>

#include <String.h>

#include <Stdio.h>

#include "Proc.h"

#define Procmax 5

LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);

DWORD MyThread(LPVOID);  //

char szWinName[] = " "; //



char str[255]; // Буфер строки вывода

int X=0, Y=0; // Текущие координаты строки

int procnum=0; // Количество активных процессов

DWORD Tid // Идентификатор потока

int maxX, maxY; // Размеры экрана

HDC  memdc; // DC виртуального окна

HBITMAP hbit; // Растр - это виртуальное окно

HBRUSH hbrush; //

PROCESS_INFORMATION pinfo[Procmax];

int WINAPI WinMain (HINSTANCE hThisInst,

HINSTANCE hPrevInst,

LPSTR lpszArgs,

int nWinMode)

return msg. wParam;

}

// Windows и получает в качестве параметров сообщения

LRESULT CALLBACK WindowFunc HWND hwnd

UINT message,

WPARAM wParam,

LPARAM lParam)

// Не более чем Procmax

// Получить метрики текста */

GetTextMetrics(memdc, &tm);

sprintf(str, "Порождается процесс %d",

procnum);

TextOut(memdc, X, Y, str, strlen(str));

Y = Y+tm.tmHeight+tm.tmExternalLeading;

InvalidateRect hwnd NULL

// Порождение нового процесса

startin.cb=sizeof(STARTUPINFO);

startin.lpReserved = NULL;

startin.lpDesktop = NULL;

startin.lpTitle = NULL;

startin.dwFlags =STARTF_USESHOWWINDOW;

startin.cbReserved2 = 0;

startin.lpReserved2 = NULL;

startin.wShowWindow = SW_SHOWMINIMIZED;

CreateProcess(NULL, "Test.exe", NULL,

NULL, FALSE, 0, NULL,

NULL, &startin,

&(pinfo[procnum]));

procnum++;

break;

case ID_KILLPROC:

if(procnum)

procnum--;

else

// Получить метрики текста

GetTextMetrics memdc, &tm

TerminateProcess

(pinfo[procnum].hProcess, 0);

sprintf(str, " %d ",

procnum);

TextOut(memdc, X, Y, str, strlen(str));

Y = Y+tm.tmHeight+tm.tmExternalLeading;

InvalidateRect(hwnd,NULL,1); //

break;

case ID_THREAD:

CreateThread

(NULL

(LPTHREAD_START_ROUTINE)MyThread,

(LPVOID)NULL, 0, &Tid);



InvalidateRect (hwnd, NULL, 1);

break;

case ID_HELP:

MessageBox(hwnd,

"F2: \n"

"F3: Завершить процесс\n"

"F4: Новый поток",

" :", MB_OK);

InvalidateRect(hwnd,NULL,1); //

break;

}

break;

case WM_PAINT: //

hdc=BeginPaint(hwnd,&paintstruct); // DC

// Теперь копируем растр из памяти на экран

BitBlt(hdc,0,0,maxX,maxY,memdc,0,0,SRCCOPY);

EndPaint(hwnd,&paintstruct); // DC

break;

case WM_DESTROY: // Завершение программы

DeleteDC(memdc); // Удалить виртуальное окно

PostQuitMessage(0);

break;

default:

// Все сообщения, не обрабатываемые в данной

// функции, направляются на обработку по

// умолчанию

return DefWindowProc(hwnd,message,

wParam,lParam);

return 0;

}

DWORD MyThread(LPVOID param)

return

}

Process rc

include <Windows h>

include "Proc h"

MYMENU MENU

MENUITEM " ", ID_HELP

}

MYMENU ACCELERATORS

Proc h

#define ID_PROCESS 100

#define ID_KILLPROC 101

#define ID_THREAD 102

#define ID_HELP  103




Document Info


Accesari: 1122
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )