Dword winapi что это
Dword winapi что это
Типы данных Windows
Типы данных, поддерживаемые Microsoft ® Windows ® используются для определения возвращаемых значений функциями, параметров функций и сообщений и членов структур. Они определяют размер и значение этих элементов.
Булева переменная (должна быть ИСТИНА (TRUE) или ЛОЖЬ (FALSE)). Этот тип объявлен в Windef.h как показано ниже:
Булева переменная (должна быть ИСТИНА (TRUE) или ЛОЖЬ (FALSE)). Этот тип объявлен в Winnt.h как показано ниже:
Байт (8 бит). Этот тип объявлен в Windef.h как показано ниже:
Соглашение о вызовах для функций повторного вызова. Этот тип объявлен в Windef.h как показано ниже:
Переменная, значение которой остается постоянным в ходе выполнения программы. Этот тип объявлен в Windef.h как показано ниже:
32-разрядное беззнаковое целое число. Этот тип объявлен в Windef.h как показано ниже:
Тип беззнаковый дальний для точности указателя. Используется тогда, когда производится приведение указателя к дальнему типу, чтобы выполнить арифметические операции над указателями.( Также обычно используется для общих 32-разрядных параметров, которые были расширены до 64 битов в 64-разрядном Windows ).
Типы данных Windows
типы данных, поддерживаемые Windows, используются для определения возвращаемых функцией значений, параметров функций и сообщений, а также членов структуры. Они определяют размер и значение этих элементов. Дополнительные сведения о базовых типах данных C/C++ см. в разделе диапазоны типов данных.
Следующая таблица содержит следующие типы: символ, целое число, логическое значение, указатель и маркер. Типы символьных, целочисленных и логических типов являются общими для большинства компиляторов C. Большинство имен типов указателей начинаются с префикса P или LP. Дескрипторы ссылаются на ресурс, который был загружен в память.
Дополнительные сведения об обработке 64-разрядных целых чисел см. в разделе большие целые числа.
Этот тип объявлен в WinNT. h следующим образом:
typedef PVOID HANDLE;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HBITMAP;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HBRUSH;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HCOLORSPACE;
Маркер диалога динамического обмена данными (DDE).
Этот тип объявляется в Ддемл. h следующим образом:
typedef HANDLE HCONV;
Маркер для списка сеансов DDE.
Этот тип объявляется в Ддемл. h следующим образом:
typedef HANDLE HCONVLIST;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HICON HCURSOR;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HDC;
Обработчик данных DDE.
Этот тип объявляется в Ддемл. h следующим образом:
typedef HANDLE HDDEDATA;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HDESK;
Маркер внутренней структуры перетаскивания.
Этот тип объявляется в Шеллапи. h следующим образом:
typedef HANDLE HDROP;
Указатель на структуру отложенной позицией окна.
Этот тип объявлен в файле WinUser. h следующим образом:
typedef HANDLE HDWP;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HENHMETAFILE;
Этот тип объявляется в Виндеф. h следующим образом:
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HFONT;
Маркер объекта GDI.
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HGDIOBJ;
Маркер глобального блока памяти.
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HGLOBAL;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HHOOK;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HICON;
Маркер экземпляра. Это базовый адрес модуля в памяти.
Хмодуле и HINSTANCE уже сегодня, но в 16-разрядных Windows представлены различные вещи.
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HINSTANCE;
Маркер раздела реестра.
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HKEY;
Идентификатор языка ввода.
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HKL;
Маркер локального блока памяти.
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HLOCAL;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HMENU;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HMETAFILE;
Обработчик для модуля. — Это базовый адрес модуля в памяти.
хмодуле и HINSTANCE одинаковы в текущих версиях Windows, но в 16-разрядных Windows представлены различные вещи.
Этот тип объявляется в Виндеф. h следующим образом:
typedef HINSTANCE HMODULE;
Этот тип объявляется в Виндеф. h следующим образом:
if(WINVER >= 0x0500) typedef HANDLE HMONITOR;
Маркер для палитры.
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HPALETTE;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HPEN;
Этот тип объявлен в WinNT. h следующим образом:
typedef LONG HRESULT;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HRGN;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HRSRC;
Этот тип объявляется в Ддемл. h следующим образом:
typedef HANDLE HSZ;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE WINSTA;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE HWND;
32-разрядное знаковое целое число. Диапазон значений — от-2147483648 до 2147483647.
Этот тип объявляется в Виндеф. h следующим образом:
Целочисленный тип со знаком для точности указателя. Используется при приведении указателя на целое число для выполнения арифметических операций с указателями.
Этот тип объявляется в Басетсд. h следующим образом:
8-битовое целое число со знаком.
Этот тип объявляется в Басетсд. h следующим образом:
typedef signed char INT8;
16-разрядное знаковое целое число.
Этот тип объявляется в Басетсд. h следующим образом:
typedef signed short INT16;
32-разрядное знаковое целое число. Диапазон значений — от-2147483648 до 2147483647.
Этот тип объявляется в Басетсд. h следующим образом:
typedef signed int INT32;
64-разрядное целое число со знаком. Диапазон составляет от-9223372036854775808 до 9223372036854775807 десятичного числа.
Этот тип объявляется в Басетсд. h следующим образом:
typedef signed __int64 INT64;
Идентификатор языка. Дополнительные сведения см. в разделе идентификаторы языков.
Этот тип объявлен в WinNT. h следующим образом:
typedef WORD LANGID;
Идентификатор локали. Дополнительные сведения см. в разделе идентификаторы языкового стандарта.
Этот тип объявлен в WinNT. h следующим образом:
typedef DWORD LCID;
Тип сведений о языковых стандартах. Список см. в разделе константы сведений о языковых стандартах.
Этот тип объявляется в Виннлс. h следующим образом:
typedef DWORD LCTYPE;
Идентификатор языковой группы. Список см. в разделе енумлангуажеграуплокалес.
Этот тип объявляется в Виннлс. h следующим образом:
typedef DWORD LGRPID;
32-разрядное знаковое целое число. Диапазон значений — от-2147483648 до 2147483647.
Этот тип объявлен в WinNT. h следующим образом:
64-разрядное целое число со знаком. Диапазон составляет от-9223372036854775808 до 9223372036854775807 десятичного числа.
Этот тип объявлен в WinNT. h следующим образом:
Длинный тип со знаком для точности указателя. Используется при приведении указателя к типу long для выполнения арифметических операций с указателями.
Этот тип объявляется в Басетсд. h следующим образом:
32-разрядное знаковое целое число. Диапазон значений — от-2147483648 до 2147483647.
Этот тип объявляется в Басетсд. h следующим образом:
typedef signed int LONG32;
64-разрядное целое число со знаком. Диапазон составляет от-9223372036854775808 до 9223372036854775807 десятичного числа.
Этот тип объявляется в Басетсд. h следующим образом:
typedef __int64 LONG64;
Этот тип объявляется в Виндеф. h следующим образом:
typedef LONG_PTR LPARAM;
Этот тип объявляется в Виндеф. h следующим образом:
typedef BOOL far *LPBOOL;
Этот тип объявляется в Виндеф. h следующим образом:
typedef BYTE far *LPBYTE;
Этот тип объявляется в Виндеф. h следующим образом:
typedef DWORD *LPCOLORREF;
указатель на константную строку, завершающуюся нулем, в 8-разрядной Windows (ANSI) символов. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами.
Этот тип объявлен в WinNT. h следующим образом:
typedef __nullterminated CONST CHAR *LPCSTR;
Этот тип объявлен в WinNT. h следующим образом:
Указатель на константу любого типа.
Этот тип объявляется в Виндеф. h следующим образом:
typedef CONST void *LPCVOID;
Указатель на константную строку из 16-разрядных символов Юникода, завершающуюся нулем. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами.
Этот тип объявлен в WinNT. h следующим образом:
typedef CONST WCHAR *LPCWSTR;
Этот тип объявляется в Виндеф. h следующим образом:
typedef DWORD *LPDWORD;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HANDLE *LPHANDLE;
Этот тип объявляется в Виндеф. h следующим образом:
Этот тип объявляется в Виндеф. h следующим образом:
typedef long *LPLONG;
указатель на строку, завершающуюся нулем или 8-разрядную Windows (ANSI) символов. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами.
Этот тип объявлен в WinNT. h следующим образом:
typedef CHAR *LPSTR;
Этот тип объявлен в WinNT. h следующим образом:
Указатель на любой тип.
Этот тип объявляется в Виндеф. h следующим образом:
typedef void *LPVOID;
Этот тип объявляется в Виндеф. h следующим образом:
typedef WORD *LPWORD;
Указатель на строку из 16-разрядных символов Юникода, завершающуюся нулем. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами.
Этот тип объявлен в WinNT. h следующим образом:
typedef WCHAR *LPWSTR;
Подписанный результат обработки сообщения.
Этот тип объявляется в Виндеф. h следующим образом:
typedef LONG_PTR LRESULT;
Этот тип объявляется в Виндеф. h следующим образом:
typedef BOOL *PBOOL;
Этот тип объявлен в WinNT. h следующим образом:
typedef BOOLEAN *PBOOLEAN;
Этот тип объявляется в Виндеф. h следующим образом:
typedef BYTE *PBYTE;
Этот тип объявлен в WinNT. h следующим образом:
typedef CHAR *PCHAR;
указатель на константную строку, завершающуюся нулем, в 8-разрядной Windows (ANSI) символов. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами.
Этот тип объявлен в WinNT. h следующим образом:
typedef CONST CHAR *PCSTR;
Этот тип объявлен в WinNT. h следующим образом:
Указатель на константную строку из 16-разрядных символов Юникода, завершающуюся нулем. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами.
Этот тип объявлен в WinNT. h следующим образом:
typedef CONST WCHAR *PCWSTR;
Этот тип объявляется в Виндеф. h следующим образом:
typedef DWORD *PDWORD;
Этот тип объявлен в WinNT. h следующим образом:
typedef DWORDLONG *PDWORDLONG;
Этот тип объявляется в Басетсд. h следующим образом:
typedef DWORD_PTR *PDWORD_PTR;
Этот тип объявляется в Басетсд. h следующим образом:
typedef DWORD32 *PDWORD32;
Этот тип объявляется в Басетсд. h следующим образом:
typedef DWORD64 *PDWORD64;
Этот тип объявляется в Виндеф. h следующим образом:
typedef FLOAT *PFLOAT;
Этот тип объявляется в Басетсд. h следующим образом:
Этот тип объявлен в WinNT. h следующим образом:
typedef HANDLE *PHANDLE;
Этот тип объявляется в Виндеф. h следующим образом:
typedef HKEY *PHKEY;
Этот тип объявляется в Виндеф. h следующим образом:
Этот тип объявляется в Басетсд. h следующим образом:
typedef INT_PTR *PINT_PTR;
Этот тип объявляется в Басетсд. h следующим образом:
typedef INT8 *PINT8;
Этот тип объявляется в Басетсд. h следующим образом:
typedef INT16 *PINT16;
Этот тип объявляется в Басетсд. h следующим образом:
typedef INT32 *PINT32;
Этот тип объявляется в Басетсд. h следующим образом:
typedef INT64 *PINT64;
Этот тип объявлен в WinNT. h следующим образом:
typedef PDWORD PLCID;
Этот тип объявлен в WinNT. h следующим образом:
typedef LONG *PLONG;
Этот тип объявлен в WinNT. h следующим образом:
typedef LONGLONG *PLONGLONG;
Этот тип объявляется в Басетсд. h следующим образом:
typedef LONG_PTR *PLONG_PTR;
Этот тип объявляется в Басетсд. h следующим образом:
typedef LONG32 *PLONG32;
Этот тип объявляется в Басетсд. h следующим образом:
typedef LONG64 *PLONG64;
32-разрядный указатель. В 32-разрядной системе это собственный указатель. В 64-разрядной системе это усеченный 64-разрядный указатель.
Этот тип объявляется в Басетсд. h следующим образом:
64-разрядный указатель. В 64-разрядной системе это собственный указатель. В 32-разрядной системе это расширенный по знаку 32-разрядный указатель.
Обратите внимание, что нельзя считать, что состояние старших битов указателя не является надежным.
Этот тип объявляется в Басетсд. h следующим образом:
Указатель со знаком.
Этот тип объявляется в Басетсд. h следующим образом:
#define POINTER_SIGNED __sptr
Указатель без знака.
Этот тип объявляется в Басетсд. h следующим образом:
#define POINTER_UNSIGNED __uptr
Этот тип объявлен в WinNT. h следующим образом:
typedef SHORT *PSHORT;
Этот тип объявляется в Басетсд. h следующим образом:
typedef SIZE_T *PSIZE_T;
Этот тип объявляется в Басетсд. h следующим образом:
typedef SSIZE_T *PSSIZE_T;
указатель на строку, завершающуюся нулем или 8-разрядную Windows (ANSI) символов. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами.
Этот тип объявлен в WinNT. h следующим образом:
Этот тип объявлен в WinNT. h следующим образом:
typedef TBYTE *PTBYTE;
Этот тип объявлен в WinNT. h следующим образом:
typedef TCHAR *PTCHAR;
Этот тип объявлен в WinNT. h следующим образом:
Этот тип объявляется в Виндеф. h следующим образом:
typedef UCHAR *PUCHAR;
Этот тип объявляется в Басетсд. h следующим образом:
Этот тип объявляется в Виндеф. h следующим образом:
typedef UINT *PUINT;
Этот тип объявляется в Басетсд. h следующим образом:
typedef UINT_PTR *PUINT_PTR;
Этот тип объявляется в Басетсд. h следующим образом:
typedef UINT8 *PUINT8;
Этот тип объявляется в Басетсд. h следующим образом:
typedef UINT16 *PUINT16;
Этот тип объявляется в Басетсд. h следующим образом:
typedef UINT32 *PUINT32;
Этот тип объявляется в Басетсд. h следующим образом:
typedef UINT64 *PUINT64;
Этот тип объявляется в Виндеф. h следующим образом:
typedef ULONG *PULONG;
Этот тип объявляется в Виндеф. h следующим образом:
typedef ULONGLONG *PULONGLONG;
Этот тип объявляется в Басетсд. h следующим образом:
typedef ULONG_PTR *PULONG_PTR;
Этот тип объявляется в Басетсд. h следующим образом:
typedef ULONG32 *PULONG32;
Этот тип объявляется в Басетсд. h следующим образом:
typedef ULONG64 *PULONG64;
Этот тип объявляется в Виндеф. h следующим образом:
typedef USHORT *PUSHORT;
Указатель на любой тип.
Этот тип объявлен в WinNT. h следующим образом:
typedef void *PVOID;
Этот тип объявлен в WinNT. h следующим образом:
typedef WCHAR *PWCHAR;
Этот тип объявляется в Виндеф. h следующим образом:
typedef WORD *PWORD;
Указатель на строку из 16-разрядных символов Юникода, завершающуюся нулем. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами.
Этот тип объявлен в WinNT. h следующим образом:
typedef WCHAR *PWSTR;
64-разрядное целое число без знака.
Этот тип объявляется следующим образом:
typedef unsigned __int64 QWORD;
Маркер базы данных диспетчера управления службами. Дополнительные сведения см. в разделе дескрипторы SCM.
Этот тип объявляется в Винсвк. h следующим образом:
typedef HANDLE SC_HANDLE;
Блокировка базы данных диспетчера управления службами. Дополнительные сведения см. в разделе дескрипторы SCM.
Этот тип объявляется в Винсвк. h следующим образом:
typedef LPVOID SC_LOCK;
Маркер для значения состояния службы. Дополнительные сведения см. в разделе дескрипторы SCM.
Этот тип объявляется в Винсвк. h следующим образом:
typedef HANDLE SERVICE_STATUS_HANDLE;
16-разрядное целое число. Диапазон значений — от-32768 до 32767.
Этот тип объявлен в WinNT. h следующим образом:
typedef short SHORT;
Максимальное число байтов, на которое может указывать указатель. Используется для подсчета, который должен охватывать полный диапазон указателя.
Этот тип объявляется в Басетсд. h следующим образом:
typedef ULONG_PTR SIZE_T;
Этот тип объявляется в Басетсд. h следующим образом:
typedef LONG_PTR SSIZE_T;
Этот тип объявлен в WinNT. h следующим образом:
Этот тип объявлен в WinNT. h следующим образом:
Этот тип объявляется в Виндеф. h следующим образом:
typedef unsigned char UCHAR;
HALF_PTRбез знака. Используйте в структуре, содержащей указатель и два маленьких поля.
Этот тип объявляется в Басетсд. h следующим образом:
Целое число без знака. Диапазон — от 0 до 4294967295 десятичных знаков.
Этот тип объявляется в Виндеф. h следующим образом:
typedef unsigned int UINT;
Этот тип объявляется в Басетсд. h следующим образом:
Этот тип объявляется в Басетсд. h следующим образом:
typedef unsigned char UINT8;
Этот тип объявляется в Басетсд. h следующим образом:
typedef unsigned short UINT16;
Int32без знака. Диапазон — от 0 до 4294967295 десятичных знаков.
Этот тип объявляется в Басетсд. h следующим образом:
typedef unsigned int UINT32;
Int64без знака. Диапазон — от 0 до 18446744073709551615 Decimal.
Этот тип объявляется в Басетсд. h следующим образом:
typedef usigned __int 64 UINT64;
Длинноецелое без знака. Диапазон — от 0 до 4294967295 десятичных знаков.
Этот тип объявляется в Виндеф. h следующим образом:
typedef unsigned long ULONG;
64-разрядное целое число без знака. Диапазон — от 0 до 18446744073709551615 Decimal.
Этот тип объявлен в WinNT. h следующим образом:
Этот тип объявляется в Басетсд. h следующим образом:
Неподписанный LONG32. Диапазон — от 0 до 4294967295 десятичных знаков.
Этот тип объявляется в Басетсд. h следующим образом:
typedef unsigned int ULONG32;
Неподписанный LONG64. Диапазон — от 0 до 18446744073709551615 Decimal.
Этот тип объявляется в Басетсд. h следующим образом:
typedef unsigned __int64 ULONG64;
Этот тип объявляется в Винтернл. h следующим образом:
Короткоецелое без знака. Диапазон — от 0 до 65535 десятичных знаков.
Этот тип объявляется в Виндеф. h следующим образом:
typedef unsigned short USHORT;
Порядковый номер обновления (USN).
Этот тип объявлен в WinNT. h следующим образом:
typedef LONGLONG USN;
Этот тип объявлен в WinNT. h следующим образом:
16-разрядный символ Юникода. Дополнительные сведения см. в разделе наборы символов, используемые шрифтами.
Этот тип объявлен в WinNT. h следующим образом:
typedef wchar_t WCHAR;
Соглашение о вызовах для системных функций.
Этот тип объявляется в Виндеф. h следующим образом:
#define WINAPI __stdcall
Функции callback, WinAPIи апиентри используются для определения функций с помощью соглашения о вызовах __stdcall. большинство функций в API Windows объявляются с помощью WINAPI. Вы можете использовать обратный вызов для функций обратного вызова, которые реализуются, чтобы определить функцию как функцию обратного вызова.
16-разрядное целое число без знака. Диапазон — от 0 до 65535 десятичных знаков.
Этот тип объявляется в Виндеф. h следующим образом:
typedef unsigned short WORD;
Этот тип объявляется в Виндеф. h следующим образом:
Creating Threads
The CreateThread function creates a new thread for a process. The creating thread must specify the starting address of the code that the new thread is to execute. Typically, the starting address is the name of a function defined in the program code (for more information, see ThreadProc). This function takes a single parameter and returns a DWORD value. A process can have multiple threads simultaneously executing the same function.
The calling thread uses the WaitForMultipleObjects function to persist until all worker threads have terminated. The calling thread blocks while it is waiting; to continue processing, a calling thread would use WaitForSingleObject and wait for each worker thread to signal its wait object. Note that if you were to close the handle to a worker thread before it terminated, this does not terminate the worker thread. However, the handle will be unavailable for use in subsequent function calls.
The MyThreadFunction function avoids the use of the C run-time library (CRT), as many of its functions are not thread-safe, particularly if you are not using the multithreaded CRT. If you would like to use the CRT in a ThreadProc function, use the _beginthreadex function instead.
It is risky to pass the address of a local variable if the creating thread exits before the new thread, because the pointer becomes invalid. Instead, either pass a pointer to dynamically allocated memory or make the creating thread wait for the new thread to terminate. Data can also be passed from the creating thread to the new thread using global variables. With global variables, it is usually necessary to synchronize access by multiple threads. For more information about synchronization, see Synchronizing Execution of Multiple Threads.
The creating thread can use the arguments to CreateThread to specify the following:
You can also create a thread by calling the CreateRemoteThread function. This function is used by debugger processes to create a thread that runs in the address space of the process being debugged.
Взаимодействие процессов (приложений) на WinApi
Сейчас в интернетах можно встретить много Hello World’ов на WinApi, но когда новичок спрашивает как в этот Hello World добавить пару нужных функций — закидывают тухлыми яблоками и тут же отправляют в пресловутый и могучий MSDN.
В этой статье от новичка новичкам я расскажу, как построить два простых приложения которые будут взаимодействовать друг с другом — одно будет принимать на вход параметры геометрической прогрессии и передавать её второму, второе же приложение будет рассчитывать n-ый член прогрессии, записывать его в файл и передавать ответ первому приложению.
Итак, поехали (Гагарин).
С тем что нам нужно мы уже определились во введении, разрабатывать мы будем в Visual Studio 2008, так как она единственная лежала на сервере университета.
Создаем проект пустой проект Application A, а в нем создадим обертку для упрощенния создания окна (эта обертка понадобится и в другом проекте, а так же может понадобится Вам в будущем).
Хоть статья и для начинающих — на описании процесса создания окна мы останавливаться не будем, так как этой информации в интернете предостаточно.
Далее нам нужно в файл ресурсов добавить диалоговое окно:
Выглядеть это должно примерно так:
Приступим к кодингу.
Интересные и интересующие моменты рассмотрим отдельно
Тут мы объявляем структуру данных которую мы посылаем и необходимые структуры:
Далее идет проверка — запущено ли второе приложение, если нет то программа запускает его.
Далее упаковываем данные в нашу структуру
Правильно заполняем структуру передаваемых данных и отправляем её другому приложению:
Вот и все — не каких проверок на то заполнены ли поля и заполнены ли они корректно мы делать не будем в этой статье.
А теперь приступим к приложению B. Первые два файла — kWnd.h и kWnd.cpp остаются неизменными. Само приложение мы будем строить уже не на базе диалогового окна, а на базе чистого хардкора.
Вооот, этот длинный файл и делает всю сложную работу — принимает сообщение, вычисляет(в многопоточном режиме(не удивляетесь, это было одним из пунктов задания)), записывает, отправляет назад.
Здесь из интересных моментов стоит отметить прием данных в событии:
Далее к принятым данным можно достучаться например так:
Остальные приемы этого файла нам не интересны и скучны, далее там следует подсчет прогрессии и отправка тем же методом первому процессу.
И вот что у нас получилось:
Я очень надеюсь что моя статья была кому либо полезна и очень извиняюсь перед теми кому она не понравилась. Жду комментариев к коду (говнокоду).