Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 192


else

!

MessageBoxfhWnd, "Too many created processes...", "Process creation", MB_OK);

break;

case IDM_Kill_Process: if(ProcessNumber > 0)

if(TenninatcProcess(ProcessIntbrmation[ProcessNumber-l].hProcess, 0))

ProcessNumber-; if(! ProcessNumber) Enab!eMenuItem(hSubMenu, IDM Kill_Process,

MF BYCOMMAND | MF_GRAYED);

230

else McssageBox(hWnd. "Cannot terminate process",

"Process termination", MB OK)' }

else MessageBox(hWnd, "No more processes", "Process termination"

MB_OK); break;

case IDM_Exit:

SendMessage(hWnd, WM_CLOSE, 0, 0); break; !

return 0;

case WM_ DESTROY: PostQuitMessage(O); return 0; » return DefWindowProc(hWnd,Mcssage,wParam, IParam),

В этой программе используется файл описаний:

#define IDM_ About 104

#define IDM_Exit 103

#define IDM_KiIl_Process 102

#define IDM_New_Proeess 101

Кроме этого, в программе используется файл ресурсов:

^include "proc.h"

ProcessesMcnu MENU i

POPUP "&Processes"

{

MENU1TEM "&New process", IDM_New Process

MENUITEM "&Kill process", IDM_Kill_Proccss GRAYED

MENU1TEM SEPARATOR

MENUITEM "E&xit", IDM Exit

POPUP "AHelp"

{

MENUITEM "&About", IDM About

231

СОЗДАНИЕ ПОТОКА

Создание потока в большей степени (внешне, конечно) напоминает программу для Windows, чем создание процесса. Дело в том, что для создания потока используется функция CreateThread() (аналог WinMain()), одним из аргументов которой является указатель на функцию потока (аналог оконной функции). Но давайте обо всем по порядку.

Итак, начнем по уже сложившейся традиции, с прототипа функции. Она описана в файле winbase.h:

WINBASEAPI HANDLE WINAPI CreateThrcadf

LPSECURITY_ATTRIBUTES IpThrcadAttributes, DWORD dwStackSizc,

LPTHREAD_STARTJlOUTINEIpStartAddress, LPVOID IpParameler. DWORD dwCreationFlags, LPDWORD IpThreadld);

При вызове этой функции происходит следующее:

в памяти создаются все необходимые для управления потоком струк­туры (назовем их объектом «поток»);




Начало  Назад  Вперед



Книжный магазин