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

Технические детали

Макросы

#define _TX_VER
 Текущая версия библиотеки.

Инициализация библиотеки

const char * txVersion ()
 Возвращает строку с информацией о текущей версии библиотеки.
unsigned txVersionNumber ()
 Возвращает номер версии библиотеки.
const char * txGetModuleFileName (bool fileNameOnly=true)
 Возвращает имя исполняемого файла или изначальный заголовок окна TXLib.

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

char _txLogName [MAX_PATH] = ""
 Имя лог-файла TXLib.
int _txConsoleMode = SW_HIDE
 Режим отображения консольного окна. Допустимы любые флаги функции ShowWindow.
int _txWindowStyle = WS_POPUP | WS_BORDER | WS_CAPTION | WS_SYSMENU
 Стиль графического окна библиотеки.
const char * _txConsoleFont = "Lucida Console"
 Шрифт консоли
unsigned _txCursorBlinkInterval = 500
 Интервал мигания курсора консоли (мс)
unsigned _txWindowUpdateInterval = 25
 Интервал обновления холста (мс)
const int _TX_TIMEOUT = 1000
 Таймаут операций ожидания (мс)
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
 Минимальный размер стека для потоков программы.
#define _TX_NOINIT
 Запрет ранней инициализации TXLib.
#define _TX_EXCEPTIONS_LIMIT   (LONG_MAX - 1)
 Максимальное количество исключений в программе.
#define _TX_FULL_STACKTRACE
 Если определено, не исключать адреса без отладочной информации из трассировок стека.
#define _TX_WAITABLE_PARENTS
 Список запускающих программ, которые ждут нажатия клавиши после завершения процесса TXLib.
#define _TX_ALLOW_KILL_PARENT   true
 Разрешать принудительное завершение вызывающих программ, ждущих нажатия клавиш после завершения TXLib.
#define _TX_FATAL_EXCEPTIONS_LIMIT   16
 Максимальное количество фатальных исключений.

Внутренняя диагностика

#define _TX_ALLOW_TRACE
 Включает/отключает внутреннюю трассировку исполнения кода библиотеки.
#define TX_TRACE
 Трассирует исполнение кода через OutputDebugString().

Макросы

#define _TX_VER

Текущая версия библиотеки.

Версия библиотеки в целочисленном формате: старшее слово -- номер версии, младшее -- номер ревизии, в двоично-десятичном формате. Например, 0x172a0050 -- версия 0.172a, ревизия 50.

            #define _TX_VERSION "TXLib [Version: 1.72a, Revision 50]"                 //
            #define _TX_AUTHOR  "Copyright (C) Ded (Ilya Dedinsky, http://txlib.ru)"  //  ПРИМЕР
            #define _TX_VER      0x172a0000                                           //

Эти константы автоматически обновляются при изменении версии.

См. также:
txVersion()
Примеры использования:
            #if !(defined (_TX_VER) && (_TX_VER >= 0x172a0000))
            #error Must use TXLib.h version >= 1.72 to compile this.
            #endif

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

#define _TX_NOINIT

Запрет ранней инициализации TXLib.

Если константа определена с помощью #define до включения TXLib.h в программу, ранняя инициализация (до запуска функции main) не проводится.

Заметки:
Ранняя инициализация включает:
  • Открытие окна консоли,
  • Установку кодовой страницы _TX_CP (1251) консоли для поддержки русского языка,
  • Установку русской локали стандартной библиотеки,
  • Переинициализация библиотек stdio и iostream на случай, если приложение не скомпоновано как консольное и библиотеки остались неинициализированы,
  • Перехват системных сигналов (деление на 0, арифметические ошибки, обращение по неверному адресу и т.д.),
  • Перехват необработанных исключений,
  • Смена заголовка консольного окна,
  • Установка режима паузы по завершении программы, чтобы окно закрывалось не сразу,
  • Подавление паузы при запуске из сред программирования, заставляющей нажимать на клавишу два раза.
Если ранняя инициализация запрещена, но в EXE-файле создается окно TXLib с помощью txCreateWindow(), то библиотека все равно будет инициализирована. В DLL ранняя инициализация никогда не проводится.

Ранняя инициализация не потокобезопасна (not thread-safe).
См. также:
txCreateWindow(), _TX_ALLOW_KILL_PARENT, _TX_WAITABLE_PARENTS, _txConsoleMode
Примеры использования:
          #define _TX_NOINIT
          #include "TXLib.h"

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

#define _TX_WAITABLE_PARENTS
Макроопределение:
"cmd.exe:devenv.exe, "                    /* MSVS 2003+    */ \
                                          "vcspawn.exe:msdev.exe, "                 /* MSVS 6        */ \
                                          "cb_console_runner.exe:codeblocks.exe, "  /* CodeBlocks 8+ */ \
                                          "cmd.exe:console_runner.exe, "            /* CodeBlocks 1  */ \
                                          "starter.exe:eclipse.exe, "               /* Eclipse 4     */ \
                                          "starter.exe:javaw.exe, "                 /* Eclipse 3     */ \
                                          "consolepauser.exe:devcpp.exe"

Список запускающих программ, которые ждут нажатия клавиши после завершения процесса TXLib.

Если программа перечислена в списке и TXLib запущена из нее, то при завершении TXLib указанная программа будет закрыта. (Это произойдет, если не открыто графическое окно TXLib, а есть только окно консоли.)

Программы разделяются пробелом или запятой. Допускается указание родителя запускающей программы, после двоеточия.

Может задаваться перед включением TXLib.h в программу.

См. также:
_TX_ALLOW_KILL_PARENT, _TX_NOINIT

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

#define _TX_ALLOW_KILL_PARENT   true

Разрешать принудительное завершение вызывающих программ, ждущих нажатия клавиш после завершения TXLib.

Иначе отменяется собственная пауза до нажатия клавиши, встроенная в TXLib, и пусть тогда паузу делает вызывающий процесс.

Список вызывающих программ, которые могут делать такую паузу, задается в _TX_WAITABLE_PARENTS.

Может задаваться перед включением TXLib.h в программу.

См. также определение этой константы в файле TXLib.h.

См. также:
_TX_WAITABLE_PARENTS, _TX_NOINIT
Примеры использования:
          #define _TX_ALLOW_KILL_PARENT false
          #include "TXLib.h"

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

#define _TX_ALLOW_TRACE

Включает/отключает внутреннюю трассировку исполнения кода библиотеки.

Трассировка идет через макрос TX_TRACE, который подставляется перед каждым оператором (statement). По умолчанию трассировка выключена.

По умолчанию трассировка ведется через функцию OutputDebugString(), ее вывод можно перехватить утилитами-логгерами, например, DbgView. Это можно изменить, переопределив макрос TX_TRACE до включения TXLib.h в программу.

Предупреждения:
Трассировка очень тормозит выполнение программы, особенно при отладке в Microsoft Visual Studio. В этом случае лучше пользоваться DbgView (см. выше) и запускать отлаживаемую программу отдельно, а не из-под отладчика Visual Studio.

_TX_ALLOW_TRACE и TX_TRACE задаются перед включением TXLib.h в программу.

Примеры использования:
          // Для просмотра трассы запустить DbgView до запуска программы!

          #define  _TX_ALLOW_TRACE    // Трассировать только входы в функции.
          #include "TXLib.h"

          #define  _TX_ALLOW_TRACE 1  // Трассировать все строки TXLib.
          #include "TXLib.h"

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

#define TX_TRACE

Трассирует исполнение кода через OutputDebugString().

По умолчанию трассировка ведется через функцию OutputDebugString(), ее вывод можно перехватить утилитами-логгерами, например, DbgView. Для "раскраски" лога есть файл TX\Dev\DbgView.ini, его надо загрузить в DbgView через меню Edit/Filter/Load (Ctrl+L).

С помощью TX_TRACE можно трассировать код самой библиотеки TXLib. Для этого надо разрешить трассировку TXLib, определив макрос _TX_ALLOW_TRACE перед включением файла TXLib.h в программу. По умолчанию трассировка TXLib выключена.

TX_TRACE можно переопределить в свой код. Тогда, если трассировка библиотеки разрешена, он будет вызываться почти перед каждой исполняемой строкой TXLib. Может быть, это кому-нибудь будет интересно.

Примеры использования:
          int main()
              {
              ...
              TX_TRACE;  // Через DbgView увидим имя файла и номер выполняемой строки
              ...
              }
          #define  TX_TRACE  printf (__TX_FILELINE__ "\n");
          #include "TXLib.h"

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


Функции

const char* txVersion ( ) [inline]

Возвращает строку с информацией о текущей версии библиотеки.

Возвращает:
Строка с информацией о текущей версии библиотеки.
Примеры использования:
          printf ("I personally love %s\n", txVersion());
unsigned txVersionNumber ( ) [inline]

Возвращает номер версии библиотеки.

Возвращает:
Номер версии библиотеки.
Примеры использования:
          printf ("My magic number is %x\n", txVersionNumber());
const char* txGetModuleFileName ( bool  fileNameOnly = true)

Возвращает имя исполняемого файла или изначальный заголовок окна TXLib.

Аргументы:
fileNameOnlyВозвратить только полное имя исполняемого файла, полученного через Win32 функцию GetFileModuleName (NULL, ...). Необязательно. Если не указано, то возвращается полное имя исполняемого файла.
Возвращает:
fileNameOnly = true: Имя исполняемого файла.
fileNameOnly = false: Изначальный заголовок окна TXLib.
Заметки:
Возвращается статическая строка.
См. также:
txWindow(), txVersion(), txVersionNumber()
Примеры использования:
          printf ("Смотрите на заголовок окна!");

          for (int done = 0; done <= 100; done++)
              {
              char title [1024] = "";
              sprintf (title, "%s - [%-10.*s] %d%%", txGetModuleFileName (false), done/10, "||||||||||", done);

              SetWindowText (txWindow(), title);
              SetWindowText (Win32::GetConsoleWindow(), title);
              txSleep (50);
              }

          txMessageBox ("Вот такой вот progress bar", "TXLib forever)");

Переменные

char _txLogName[MAX_PATH] = ""

Имя лог-файла TXLib.

В эту строку надо скопировать нужное вам имя лог-файла.

По умолчанию файл создается во время ошибки в одной папке с запущенной программой, имеет то же имя, что и файл программы, с добавлением расширения ".log".

Заметки:
Устанавливать имя лог-файла надо в начале работы программы, до появления первой ошибки.

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

int _txConsoleMode = SW_HIDE

Режим отображения консольного окна. Допустимы любые флаги функции ShowWindow.

По умолчанию: SW_HIDE -- Скрывать консольное окно.

Заметки:
Переменная устанавливается до открытия окна библиотеки.
См. также:
_TX_NOINIT
Примеры использования:
          _txConsoleMode = SW_HIDE;  // Всегда скрывать консольное окно
          txCreateWindow (800, 600);

          _txConsoleMode = SW_SHOW;  // Всегда показывать консольное окно
          txCreateWindow (800, 600);

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

int _txWindowStyle = WS_POPUP | WS_BORDER | WS_CAPTION | WS_SYSMENU

Стиль графического окна библиотеки.

Заметки:
  • Переменная устанавливается до открытия окна библиотеки.
Примеры использования:
          _txWindowStyle &= ~WS_CAPTION; // FullScreen: окно без заголовка, размером с экран
          txCreateWindow (GetSystemMetrics (SM_CXSCREEN), GetSystemMetrics (SM_CYSCREEN));

          printf ("Закройте меня через Alt+F4\n");

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

const char* _txConsoleFont = "Lucida Console"

Шрифт консоли

Заметки:
Переменная устанавливается до открытия окна библиотеки.

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

unsigned _txWindowUpdateInterval = 25

Интервал обновления холста (мс)

Заметки:
Переменная устанавливается до открытия окна библиотеки.

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