TX Library Help – Version: 00173a, Revision: 173
 ALL  Windows graphics in a sandbox

Файл TXLib.h

Библиотека Тупого Художника (The Dumb Artist Library, TX Library, TXLib). Подробнее...

См. исходные тексты.

Классы

class  txAutoLock
 Класс для автоматической блокировки и разблокировки критической секции. Подробнее...
struct  txDialog
 Базовый класс для диалоговых окон. Подробнее...
struct  txDialog::Layout
 Класс для описания элемента диалогового окна (контрола) Подробнее...

Макросы

#define _TX_VER
 Текущая версия библиотеки.
#define _TX_MODULE
 Имя модуля TXLib. Входит в диагностические сообщения.
#define __TX_COMPILER__
 Имя и версия текущего компилятора
#define _TX_BUILDMODE
 Имя режима сборки
#define __TX_FILELINE__
 Макрос, раскрывающийся в имя файла и номер строки файла, где он встретился.
#define __TX_FUNCTION__
 Имя текущей функции
#define MAX(a, b)
 Возвращает максимальное из двух чисел
#define MIN(a, b)
 Возвращает минимальное из двух чисел
#define ROUND(x)
 Округляет число до целого
#define _TX_DESTROY_3D
 Ну просто очень удобный макрос.
#define ZERO(type)
 Обнулитель типов, не имеющих конструкторов
#define TX_ASSERT(cond)
 Замена стандартного макроса assert(), с выдачей сообщения через txMessageBox(), консоль и OutputDebugString().
#define asserted
 Выводит диагностическое сообщение в случае нулевого или ложного результата.
#define verified   asserted
 For compatibility with assert macro.
#define verify
 Выполняет команду (вычисляет выражение) и проверяет результат.
#define TX_ERROR(msg)
 Выводит развернутое диагностическое сообщение.
#define TX_DEBUG_ERROR(...)
 Выводит развернутое диагностическое сообщение в отладочном режиме.
#define txStackBackTrace()
 Распечатывает текущий стек вызовов функций в консоли.
#define TX_DLLIMPORT(required, libName, retValType, funcName, funcParams, callType)
 Импортирует функцию из динамической библиотеки @с .dll.
#define txGDI(command, dc)
 Вызывает функции Win32 GDI с автоматической блокировкой и разблокировкой.
Адаптация к компиляторам и платформам
#define strncpy_s(dest, sizeof_dest, src, count)   ( strncpy ((dest), (src), MIN ((count), (sizeof_dest))) )
#define wcsncpy_s(dest, sizeof_dest, src, count)   ( wcsncpy ((dest), (src), MIN ((count), (sizeof_dest))) )
#define strncat_s(dest, sizeof_dest, src, count)   ( strncat ((dest), (src), MIN ((count), (sizeof_dest))) )
#define strerror_s(buf, sizeof_buf, code)   ( strncpy ((buf), strerror ((int)(code)), (sizeof_buf)-1) )
#define strtok_s(buf, delim, ctx)   ( (void)(ctx), strtok ((buf), (delim)) )
#define fopen_s(file, name, mode)   ( *(file) = fopen ((name), (mode)) )
#define _strlwr_s(str, sizeof_str)   ( _strlwr (str) )
#define ctime_s(buf, sizeof_buf, time)   ( strncpy ((buf), ctime (time), (sizeof_buf)-1) )
#define _controlfp_s(oldCtl, newCtl, mask)   ( assert (oldCtl), *(oldCtl) = _controlfp (newCtl, mask), 0 )
#define _snprintf_s   snprintf
#define _vsnprintf_s(str, sz, trunc, format, arg)   _vsnprintf (str, sz, format, arg)
#define getenv_s(sz, buf, sizeof_buf, name)   ( (void)(sz), strncpy ((buf), getenv (name), (sizeof_buf)-1) )
#define PRId64   "I64d"
#define PRIi64   "I64i"
#define PRIo64   "I64o"
#define PRIu64   "I64u"
#define PRIx64   "I64x"
#define PRIX64   "I64X"
#define meow   ;
 Еще парочка макросов.
#define _
 Макрос, позволяющий передать переменное число параметров в какой-либо другой макрос.
#define TX_COMMA   ,
 Синоним макроса _ (символ подчеркивания)
Внутренняя диагностика
#define _TX_ALLOW_TRACE
 Включает/отключает внутреннюю трассировку исполнения кода библиотеки.
#define TX_TRACE
 Трассирует исполнение кода через OutputDebugString().
Макросы для построения статической карты сообщений (Message Map)
#define TX_BEGIN_MESSAGE_MAP()
 Заголовок карты сообщений (Message Map).
#define TX_HANDLE(id)
 Заголовок обработчика сообщения (Message handler) карты сообщений.
#define TX_COMMAND_MAP
 Начало карты команд (Command map) в карте сообщений.
#define TX_END_MESSAGE_MAP
 Завершитель карты сообщений.
Экспериментальные отладочные макросы
#define __TX_DEBUG_MACROS   ("Группа отладочных $-макросов")
 Отладочная печать переменной во время вычисления выражения или участка кода во время его выполнения.

Функции

int txMessageBox (const char text[]="Муаххаха! :)", const char header[]="TXLib сообщает", unsigned flags=MB_ICONINFORMATION|MB_OKCANCEL)
 Выводит различные сообщения в окне с помощью функции MessageBox.
HRESULT txSetProgress (double percent, unsigned type=2, HWND wnd=NULL)
 Устанавливает Progress bar окна на панели задач.   Весело и вкусно   Красиво и иногда полезно.
int random (int range) tx_deprecated
 Генератор случайных чисел
double random (double left, double right) tx_nodiscard tx_deprecated
 Генератор случайных чисел
template<typename Tx , typename Ta , typename Tb >
bool In (Tx x, Ta a, Tb b) tx_nodiscard tx_deprecated
 Проверка, находится ли параметр х внутри замкнутого интервала [a; b].
template<typename T >
max (const T &a, const T &b)
 Функциональная версия макроса MAX.
template<typename T >
min (const T &a, const T &b)
 Функциональная версия макроса MIN.
void tx_fpreset ()
 Переинициализирует математический сопроцессор
double txSqr (double x)
 Очень удобное возведение числа в квадрат.
void txDump (const void *address, const char name[]="_txDump()", bool pause=true)
 Распечатывает дамп области памяти в консоли.
int txRegQuery (const char *keyName, const char *valueName, void *value, size_t szValue)
 Читает информацию из реестра Windows.
int txSetLocale (int codepage=_TX_CODEPAGE, const char locale[]=_TX_LOCALE, const wchar_t wLocale[]=_TX_WLOCALE)
 Меняет кодовую страницу консоли и локаль стандартной библиотеки С++.
int txPause (const char *message,...) tx_printfy(1)
 Приостанавливает программу до нажатия на любую клавишу.
Инициализация библиотеки
HWND txCreateWindow (double sizeX, double sizeY, bool centered=true)
 Создание окна рисования
HDC & txDC () tx_nodiscard
 Возвращает холст (дескриптор контекста рисования, HDC) окна рисования TXLib.
RGBQUAD * txVideoMemory () tx_nodiscard
 Возвращает буфер памяти, связанный с холстом (HDC) TXLib.
bool txSetDefaults (HDC dc=txDC())
 Установка параметров рисования по умолчанию.
bool txOK () tx_nodiscard
 Проверка правильности работы библиотеки
POINT txGetExtent (HDC dc=txDC()) tx_nodiscard
 Возвращает размер окна, картинки или холста в виде структуры POINT.
int txGetExtentX (HDC dc=txDC()) tx_nodiscard
 Возвращает ширину окна или холста.
int txGetExtentY (HDC dc=txDC()) tx_nodiscard
 Возвращает высоту окна или холста.
HWND txWindow () tx_nodiscard
 Возвращает дескриптор окна рисования
const char * txVersion () tx_nodiscard
 Возвращает строку с информацией о текущей версии библиотеки.
unsigned txVersionNumber () tx_nodiscard
 Возвращает номер версии библиотеки.
const char * txGetModuleFileName (bool fileNameOnly=true) tx_nodiscard
 Возвращает имя исполняемого файла или изначальный заголовок окна TXLib.
Рисование фигур
bool txClear (HDC dc=txDC())
 Стирает холст текущим цветом заполнения.
bool txSetPixel (double x, double y, COLORREF color, HDC dc=txDC())
 Рисует пиксель (точку на экране).
COLORREF txGetPixel (double x, double y, HDC dc=txDC()) tx_nodiscard
 Возвращает текущий цвет точки (пикселя) на экране.
bool txLine (double x0, double y0, double x1, double y1, HDC dc=txDC())
 Рисует линию.
bool txRectangle (double x0, double y0, double x1, double y1, HDC dc=txDC())
 Рисует прямоугольник.
bool txPolygon (const POINT points[], int numPoints, HDC dc=txDC())
 Рисует ломаную линию или многоугольник.
bool txEllipse (double x0, double y0, double x1, double y1, HDC dc=txDC())
 Рисует эллипс.
bool txCircle (double x, double y, double r)
 Рисует окружность или круг.
bool txArc (double x0, double y0, double x1, double y1, double startAngle, double totalAngle, HDC dc=txDC())
 Рисует дугу эллипса.
bool txPie (double x0, double y0, double x1, double y1, double startAngle, double totalAngle, HDC dc=txDC())
 Рисует сектор эллипса.
bool txChord (double x0, double y0, double x1, double y1, double startAngle, double totalAngle, HDC dc=txDC())
 Рисует хорду эллипса.
bool txFloodFill (double x, double y, COLORREF color=TX_TRANSPARENT, DWORD mode=FLOODFILLSURFACE, HDC dc=txDC())
 Заливает произвольный контур текущим цветом заполнения.
bool txTriangle (double x1, double y1, double x2, double y2, double x3, double y3)
 Функция, которая должна бы рисовать треугольник.
void txDrawMan (int x, int y, int sizeX, int sizeY, COLORREF color, double handL, double handR, double twist, double head, double eyes, double wink, double crazy, double smile, double hair, double wind)
 Рисует человечка.
Работа с текстом
bool txTextOut (double x, double y, const char text[], HDC dc=txDC())
 Рисует текст.
bool txDrawText (double x0, double y0, double x1, double y1, const char text[], unsigned format=DT_CENTER|DT_VCENTER|DT_WORDBREAK|DT_WORD_ELLIPSIS, HDC dc=txDC())
 Рисует текст, размещенный в прямоугольной области.
HFONT txSelectFont (const char name[], double sizeY, double sizeX=-1, int bold=FW_DONTCARE, bool italic=false, bool underline=false, bool strikeout=false, double angle=0, HDC dc=txDC())
 Выбирает текущий шрифт, его размер и другие атрибуты.
SIZE txGetTextExtent (const char text[], HDC dc=txDC()) tx_nodiscard
 Вычисляет размеры текстовой надписи.
int txGetTextExtentX (const char text[], HDC dc=txDC()) tx_nodiscard
 Вычисляет ширину текстовой надписи.
int txGetTextExtentY (const char text[], HDC dc=txDC()) tx_nodiscard
 Вычисляет высоту текстовой надписи.
unsigned txSetTextAlign (unsigned align=TA_CENTER|TA_BASELINE, HDC dc=txDC())
 Устанавливает текущее выравнивание текста (влево/вправо/по центру).
LOGFONT * txFontExist (const char name[]) tx_nodiscard
 Ищет шрифт по его названию.
Рисование в памяти (на "виртуальном холсте") и загрузка изображений
HDC txCreateCompatibleDC (double sizeX, double sizeY, HBITMAP bitmap=NULL, RGBQUAD **pixels=NULL) tx_nodiscard
 Создает дополнительный холст (контекст рисования, Device Context, DC) в памяти.
HDC txCreateDIBSection (double sizeX, double sizeY, RGBQUAD **pixels=NULL) tx_nodiscard
 Создает аппаратно-независимый дополнительный холст (контекст рисования, Device Context, DC) в памяти с возможностью прямого доступа к нему как к массиву.
HDC txLoadImage (const char filename[], int sizeX=0, int sizeY=0, unsigned imageType=IMAGE_BITMAP, unsigned loadFlags=LR_LOADFROMFILE) tx_nodiscard
 Загружает из файла изображение в формате BMP. Делает это довольно медленно.
bool txDeleteDC (HDC dc)
 Уничтожает холст (контекст рисования, DC) в памяти.
bool txBitBlt (HDC destImage, double xDest, double yDest, double width, double height, HDC sourceImage, double xSource=0, double ySource=0, unsigned operation=SRCCOPY)
 Копирует изображение с одного холста (контекста рисования, DC) на другой.
bool txBitBlt (double xDest, double yDest, HDC sourceImage, double xSource=0, double ySource=0)
 Копирует изображение на экран.
bool txTransparentBlt (HDC destImage, double xDest, double yDest, double width, double height, HDC sourceImage, double xSource=0, double ySource=0, COLORREF transColor=TX_BLACK)
 Копирует изображение с одного холста (контекста рисования, DC) на другой с учетом прозрачности.
bool txTransparentBlt (double xDest, double yDest, HDC sourceImage, COLORREF transColor=TX_BLACK, double xSource=0, double ySource=0)
 Копирует изображение на экран с учетом прозрачности.
bool txAlphaBlend (HDC destImage, double xDest, double yDest, double width, double height, HDC sourceImage, double xSource=0, double ySource=0, double alpha=1.0)
 Копирует изображение с одного холста (контекста рисования, DC) на другой с учетом полупрозрачности.
bool txAlphaBlend (double xDest, double yDest, HDC sourceImage, double xSource=0, double ySource=0, double alpha=1.0)
 Копирует изображение на экран с учетом полупрозрачности.
HDC txUseAlpha (HDC image)
 Пересчитывает цвета пикселей с учетом прозрачности (переводит цвета в формат Premultiplied Alpha).
bool txSaveImage (const char filename[], HDC dc=txDC())
 Сохраняет в файл изображение в формате BMP.
Вспомогательные функции
double txSleep (double time=0)
 Задерживает выполнение программы на определенное время.
int txBegin ()
 Блокирует обновление изображения окна, во избежание мигания.
int txEnd ()
 Разблокирует обновление окна, заблокированное функцией txBegin().
void txRedrawWindow ()
 Обновляет изображение в окне TXLib вручную.
int txUpdateWindow (int update=true)
 Разрешает или запрещает автоматическое обновление изображения в окне.
bool txSelectObject (HGDIOBJ obj, HDC dc=txDC())
 Устанавливает текущий активный объект GDI.
bool txIDontWantToHaveAPauseAfterMyProgramBeforeTheWindowWillClose_AndIWillNotBeAskingWhereIsMyPicture ()
 Делает нечто иногда удобное. См. название функции.
bool txDestroyWindow (HWND wnd=txWindow())
 Уничтожает окно.
double txQueryPerformance () tx_nodiscard
 Оценивает скорость работы компьютера.
double txGetFPS (int minFrames=txFramesToAverage) tx_nodiscard
 Выдает количество кадров (вызовов этой функции) в секунду.
Работа с Мышью!
POINT txMousePos () tx_nodiscard
 Возвращает позицию Мыши!
double txMouseX () tx_nodiscard
 Возвращает X-Координату Мыши!
double txMouseY () tx_nodiscard
 Возвращает Y-Координату Мыши!
unsigned txMouseButtons () tx_nodiscard
 Возвращает состояние Кнопок Мыши!
Mouse & txCatchMouse (bool shouldEat=true)
 Ловит Мышь!
Функции консоли
unsigned txSetConsoleAttr (unsigned colors=0x07)
 Устанавливает цветовые атрибуты консоли.
unsigned txGetConsoleAttr () tx_nodiscard
 Возвращает текущие цветовые атрибуты консоли.
bool txClearConsole ()
 Стирает текст консоли.
POINT txSetConsoleCursorPos (double x, double y)
 Устанавливает позицию мигающего курсора консоли.
POINT txGetConsoleCursorPos ()
 Возвращает позицию мигающего курсора консоли.
POINT txGetConsoleExtent ()
 Возвращает размер консоли.
POINT txGetConsoleFontSize () tx_nodiscard
 Возвращает размеры шрифта консоли.
bool txTextCursor (bool blink=true)
 Запрещает или разрешает рисование мигающего курсора в окне.
bool In (const POINT &pt, const RECT &rect) tx_nodiscard tx_deprecated
 Проверка, находится ли точка pt внутри прямоугольника rect.
Очень служебные функции
WNDPROC txSetWindowsHook (WNDPROC wndProc=NULL)
 Устанавливает альтернативную функцию обработки оконных сообщений Windows (оконную функцию) для окна TXLib.
bool txLock (bool wait=true)
 Блокирует холст (контекст рисования).
bool txUnlock ()
 Разблокирует холст
Пример использования класса диалога: функция txInputBox()
const char * txInputBox (const char *text=NULL, const char *caption=NULL, const char *input=NULL) tx_nodiscard
 Ввод строки в отдельном окне.

Переменные

const double txPI
 Число Пи

Установка цветов и режимов рисования

enum  txColors {
  TX_BLACK = RGB ( 0, 0, 0),
  TX_BLUE = RGB ( 0, 0, 128),
  TX_GREEN = RGB ( 0, 128, 0),
  TX_CYAN = RGB ( 0, 128, 128),
  TX_RED = RGB (128, 0, 0),
  TX_MAGENTA = RGB (128, 0, 128),
  TX_BROWN = RGB (128, 128, 0),
  TX_ORANGE = RGB (255, 128, 0),
  TX_GRAY = RGB (160, 160, 160),
  TX_DARKGRAY = RGB (128, 128, 128),
  TX_LIGHTGRAY = RGB (192, 192, 192),
  TX_LIGHTBLUE = RGB ( 0, 0, 255),
  TX_LIGHTGREEN = RGB ( 0, 255, 128),
  TX_LIGHTCYAN = RGB ( 0, 255, 255),
  TX_LIGHTRED = RGB (255, 0, 128),
  TX_LIGHTMAGENTA = RGB (255, 0, 255),
  TX_PINK = RGB (255, 128, 255),
  TX_YELLOW = RGB (255, 255, 128),
  TX_WHITE = RGB (255, 255, 255),
  TX_TRANSPARENT = 0xFFFFFFFF,
  TX_NULL = TX_TRANSPARENT,
  TX_BLM = TX_BLACK,
  TX_white = TX_WHITE,
  TX_HUE = 0x04000000,
  TX_SATURATION = 0x05000000,
  TX_LIGHTNESS = 0x06000000
}
 

Названия предопределенных цветов.

Подробнее...
COLORREF RGB (int red, int green, int blue)
 Создает (смешивает) цвет из трех базовых цветов (компонент).
HPEN txSetColor (COLORREF color, double thickness=1, HDC dc=txDC())
 Устанавливает текущий цвет и толщину линий, цвет текста.
COLORREF txGetColor (HDC dc=txDC()) tx_nodiscard
 Возвращает текущий цвет линий и текста.
HBRUSH txSetFillColor (COLORREF color, HDC dc=txDC())
 Устанавливает текущий цвет заполнения фигур.
COLORREF txGetFillColor (HDC dc=txDC()) tx_nodiscard
 Возвращает текущий цвет заполнения фигур.
unsigned txExtractColor (COLORREF color, COLORREF component) tx_nodiscard
 Извлекает цветовую компоненту (цветовой канал) из смешанного цвета.
COLORREF txRGB2HSL (COLORREF rgbColor) tx_nodiscard
 Преобразует цвет из формата RGB в формат HSL.
COLORREF txHSL2RGB (COLORREF hslColor) tx_nodiscard
 Преобразует цвет из формата HSL в формат RGB.

Другие полезные функции, не связанные с рисованием

#define TX_PRINTF(...)   ( _txPrintfCheck (__VA_ARGS__), txPrintf (__VA_ARGS__) )
#define sizearr(arr)
 Вычисление размера массива в элементах
#define SIZEARR(arr)   ( sizeof (arr) / sizeof ((arr)[0]) )
bool txPlaySound (const char filename[]=NULL, DWORD mode=SND_ASYNC)
 Воспроизводит звуковой файл.
int txSpeak (const char *text,...) tx_printfy(1)
 Читает   мысли   текст вслух.
intptr_t txPlayVideo (int x, int y, int width, int height, const char fileName[], double zoom=0, double gain=1, HWND wnd=txWindow())
 Проигрывает видео.
intptr_t txPlayVideo (const char fileName[], double zoom=0, double gain=1, HWND wnd=txWindow())
 Проигрывает видео.
bool txGetAsyncKeyState (int key)
 Проверяет, нажата ли указанная клавиша.
bool txNotifyIcon (unsigned flags, const char title[], const char format[],...) tx_printfy(3)
 Выводит всплывающее сообщение в системном трее.
int txOutputDebugPrintf (const char format[],...) tx_printfy(1)
 Выводит сообщение в отладчике.
template<typename T , typename... ArgsT>
int txPrintf (const char *format, ArgsT...args)
 Добрый дядюшка Принтф. Теперь шаболонный.
template<typename T , typename... ArgsT>
int txPrintf (std::ostringstream &stream, const char *format, ArgsT...args)
 Печатает в строковый поток вывода, как sprintf().
template<typename T , typename... ArgsT>
int txPrintf (char buffer[], size_t size, const char *format, ArgsT...args)
 Печатает в строковый буфер, как sprintf().
template<typename... ArgsT>
std::string txFormat (const char *format, ArgsT...args)
 Форматирует строку, как sprintf().

#define tx_auto_func(func)
 Автоматический вызов функции при завершении другой функции (аналог __finally)

std::string txDemangle (const char *mangledName)
 Преобразует декорированное имя С++ в название типа.

Настроечные константы и переменные

#define _TX_NOINIT
 Запрет ранней инициализации TXLib.
#define TX_CONSOLE_MODE
 Режим отображения консольного окна. Допустимы любые флаги функции ShowWindow.
#define TX_CONSOLE_FONT   "Lucida Console"
 Шрифт консоли
#define TX_USE_SFML
 Макрос, разрешающий использовать TXLib вместе с графической библиотекой SFML
#define _TX_EXCEPTIONS_LIMIT   16
 Максимальное количество исключений в программе.
#define _TX_FATAL_EXCEPTIONS_LIMIT   16
 Максимальное количество фатальных исключений.
#define _TX_FULL_STACKTRACE
 Если определено, не исключать адреса без отладочной информации из трассировок стека.
#define _TX_WAITABLE_PARENTS
 Список запускающих программ, которые ждут нажатия клавиши после завершения процесса TXLib.
#define _TX_ALLOW_KILL_PARENT   true
 Разрешать принудительное завершение вызывающих программ, ждущих нажатия клавиш после завершения TXLib.
#define TX_COMPILED
 Макросы для поддержки прекомпиляции TX Library.
char _txLogName [MAX_PATH] = ""
 Имя лог-файла TXLib.
int _txWindowStyle = WS_POPUP | WS_BORDER | WS_CAPTION | WS_SYSMENU
 Стиль графического окна библиотеки.
unsigned _txCursorBlinkInterval = 500
 Интервал мигания курсора консоли (мс)
unsigned _txWindowUpdateInterval = 25
 Интервал обновления холста (мс)
const int _TX_TIMEOUT = 1000
 Таймаут операций ожидания событий (мс)
bool(* _txSwapBuffers )(HDC dest, int xDest, int yDest, int wDest, int hDest, HDC src, int xSrc, int ySrc, int wSrc, int hSrc, DWORD rOp) = NULL
 Указатель на функцию, выводящую изображение непосредственно в окно TXLib во время обработки WM_PAINT.
const unsigned _TX_BUFSIZE = 1024
 Размеры внутренних статических строковых буферов TXLib.
const unsigned _TX_BIGBUFSIZE = _TX_BUFSIZE * 2
 Размеры больших статических буферов.
const unsigned _TX_HUGEBUFSIZE = _TX_BUFSIZE * 20
 Размеры очень больших статических буферов.
const unsigned _TX_STACKSIZE = 64 * 1024
 Минимальный размер стека для потоков программы.
bool _txProcessSystemWarnings = true
 Если определено, обрабатывать ошибки в программе перед всеми другими обработчиками ошибок.
int _txWatchdogTimeout = 10*_TX_TIMEOUT
 Лимит времени на завершение программы, начиная от завершения функции main() или от вызова exit(), в мс.

Подробное описание

Библиотека Тупого Художника (The Dumb Artist Library, TX Library, TXLib).

И.Р. Дединский
Кафедра информатики и вычислительной математики МФТИ
Кафедра системного программирования МФТИ

Version:
00173a, Revision: 173
Copyright:
(C) Ded (Ilya Dedinsky, http://txlib.ru) <mail@txlib.ru>
Date:
2024-04-10 21:00:00 +0400

TX Library -- компактная библиотека двумерной графики для MS Windows на С++. Это небольшая "песочница" для начинающих реализована с целью помочь им в изучении простейших принципов программирования. Документация на русском языке. Философия TX Library -- облегчить первые шаги в программировании и подтолкнуть к творчеству и самостоятельности.

TX Library is a tiny 2D graphics library for MS Windows written in C++. This is a small sandbox for the very beginners to help them to learn basic programming principles. The documentation is in Russian.

Официальный сайт библиотеки: txlib.ru.
См. также страницу проекта на SourceForge.

Онлайн-документация: здесь. Короткая ссылка: gg.gg/TXLib.

Учебник TXBook по программированию: здесь. Короткая ссылка: gg.gg/TXBook.


Установка и использование библиотеки

Скачать библиотеку: на сайте sourceforge.net. См. также раздел Установка библиотеки.

Заметки:
Библиотека TXLib состоит из единственного файла и не требует никаких настроек в среде программирования, чтобы облегчить ее установку и работу для начинающих.
Файл библиотеки большой и может компилироваться долго, поэтому обратите внимание на возможность использования прекомпилированной версии в проектак с раздельной компиляцией. См. макрос TX_COMPILED. Также можно определить макрос WIN32_LEAN_AND_MEAN до включения TXLib.h в программу.
  1. Скачайте программу установки, загрузка по ссылке начнется автоматически. Ее имя имеет вид TXLib-v0173a.rar.exe. Цифры могут отличаться (это номер версии), расширение .exe может не отображаться, в зависимости от настроек Windows.
  2. Запустите скачанную программу установки. Программа установки -- это саморазархивирующийся архив, она не требует особых прав для запуска.
  3. На рабочем столе появится "Ярлык для TX". Откройте его и запустите систему помощи TXLib Help, изучите ее. Простейший пример см. здесь. Другие примеры см. в папке Examples, в папке Examples/Demo.

    • Если при установке происходят ошибки или запуск программы установки невозможен, откройте файл библиотеки TXLib.h отсюда, сохраните (Ctrl+S) его в свою рабочую папку, где вы сохраняете свои программы. Пользуйтесь системой помощи онлайн.

  4. Для полной обработки ошибок библиотеке требуются модули, которые желательно установить (скопировать) в папку Windows. Устанавливать эти библиотеки не обязательно. Программы, использующие TXLib, запускаются и без них.

    1. Модули библиотеки Microsoft DBGHELP для доступа к отладочным символам Microsoft:
      • dbghelp32.dll или dbghe32.dll - для 32-разрядных программ (либо dbghelp.dll, 32-разрядная версия),
      • dbghelp64.dll или dbghe64.dll - для 64-разрядных программ (либо dbghelp.dll, 64-разрядная версия),

    2. Модули библиотеки DrMinGW для доступа к отладочным символам MinGW компилятора GCC g++:
      • mgwhelp32.dll или mgwhe32.dll - для 32-разрядных программ (либо mgwhelp.dll, 32-разрядная версия),
      • mgwhelp64.dll или mgwhe64.dll - для 64-разрядных программ (либо mgwhelp.dll, 64-разрядная версия).

Суффиксы 32 и 64 помогают отличить 32-разрядную и 64-разрядную версии DLL-файлов библиотек. Например, dbghelp32.dll -- это просто переименованная 32-разрядная версия файла dbghelp.dll.

Cамораспаковывающийся архив с этими библиотеками можно скачать здесь.

Для наиболее полной диагностики ошибок полностью отключайте оптимизацию при компиляции. Например, для компилятора GCC g++ -- с помощью ключа командной строки -O0. Разные среды программирования позволяют задать эти ключи по-разному, например, в CodeBlocks через Главное меню -- Settings -- Compiler -- (Global Compiler Settings) -- (Compiler Settings) -- Other Options.

Заметки:
Кодовая страница в редакторе среды разработки должна быть установлена как Windows CP1251, проверьте это. В разных средах разработки она устанавливается по-разному, например, в CodeBlocks через Главное меню -- Settings -- Editor -- (General Settings) -- Other Settings -- Encoding. Иначе русские буквы в сообщениях TXLib будут отображаться неправильно.
Предупреждения:
Это альфа-версия. Для использования библиотеки требуется согласование с ее автором.
Правила использования материалов библиотеки и сайта см. на официальном сайте TXLib.
Баг-трекер на GitHub:

См. определение в файле TXLib.h