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

TX Library Документация


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

Version:
00173a, Revision: 105
Date:
2017-05-10 00:54:44 +0400
Copyright:
(C) Ded (Ilya Dedinsky, http://txlib.ru) <mail@txlib.ru>

Назначение

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

Философия TX Library - облегчить первые шаги в программировании и подтолкнуть к творчеству и самостоятельности.

TX Library is a tiny graphics library for Win32 written in C++. It is a small sandbox for the very beginners to help them to learn basic programming principles. The documentation is currently in Russian.


Разделы системы помощи

Примеры:

Представительство в Интернет

Официальный сайт библиотеки: txlib.ru.

См. также страницу проекта на SourceForge. Короткая ссылка на онлайн-документацию: gg.gg/TXLib.

Предупреждения:
Это альфа-версия. Для использования библиотеки требуется согласование с ее автором.

Правила использования материалов библиотеки и сайта см. на официальном сайте TXLib.
Ссылки:

Скриншоты

Example03.png

Example03.cpp: Простейшая программа

  
Movie.png

Movie.cpp: Мультфильм

Shaker.png

Shaker.cpp: Простая физическая модель движения

  
Phong.jpg

Phong.cpp: Модель освещения сферы

Tree.png

Tree.cpp: Простая рекурсия: Дерево

  
Tennis.jpg

Tennis.cpp: Использование картинок


Предупреждение, или TXLib – это всего лишь инструмент

Библиотека TXLib – это всего лишь инструмент для того, чтобы облегчить первые шаги в программировании. Однако этот инструмент, как и любой другой, может быть применен неправильно. (Тем не менее, в основу TXLib заложены некоторые принципы, помогающие конструктивному неиллюзорному обучению.)

Сама по себе любая библиотека или язык программирования не научит начинающего писать программы грамотно. Научит этому разработка своих, достаточно больших проектов, в сочетании с тесным общением профессионалов, желающих помочь начинающим. Такие профессионалы должны обладать и опытом разработки больших программ, и педагогическими навыками, чтобы передать свой опыт начинающим. К сожалению, не всегда это совпадает. Профессионалы-программисты зачастую не хотят лезть в обучение, где хватает своих проблем. С другой стороны, недобросовестные учителя, иногда даже в сильных школах и курсах, хватаются за удобные инструменты обучения (чужие или свои библиотеки, среды и языки программирования), не удосуживаясь следить за качеством кода обучаемых, за стилем и направлением их мышления, ограничиваясь лишь видимостью обучения. Такие образовательные иллюзии очень вредны. Заметны они становятся достаточно поздно, когда выясняется, что ученик, легко пишущий небольшие программы (пусть даже логически насыщенные, олимпиадные), принципиально не способен написать что-то большее, путается в коде, а другие, в том числе и профессионалы, его не понимают в силу спутанности его мышления и неумения внятно выразить мысли на уровне современных стандартов. Чтобы преодолеть этот барьер, воздвигнутый нерадивым преподавателем (или вашей собственной нерадивостью), приходится серьезно и самостоятельно переучиваться – иногда будучи уже студентом или аспирантом. Либо смириться и "носить кофе программистам".

Искусство программирования – это искусство мышления, не надо это забывать, дорогие преподаватели и учащиеся.

Принципы, заложенные в TXLib для повышения качества обучения:
  • Сделай сам. В TXLib многие вещи сделаны или оставлены не совсем удобными для применения. Это – предложение подумать, как сделать это самому, и, как правило, для этого в TXLib есть средства. Сделав, покажите решение другим, если они быстро поймут его и оценят -- то ваше решение удачное.
  • Загляни в Help. (Слово неспроста выбрано английским, потому что большинство информации в современном программировании – на английском языке. Учите его.) Под системой помощи понимается не только TXLib Help, но и весь Internet.
  • Посмотри, как сделано. Загляни в код (см. "Исходные тексты"). Он создавался в том числе как пример программной системы со своей логикой и со своей реализацией, а некоторые функции можно понять только по коду, потому что их нет в системе помощи. Не всегда решения, примененные в TXLib оптимальны даже с точки зрения автора – он надеется, что это убережет желающих научиться качественно, но нетерпеливых учеников, от   Ctrl+C и Ctrl+V   плагиата.
  • Посмотри, как сделано иначе. TXLib – не единственная графическая библиотека, и реализация "простого графического холста", примененная в ней – не единственное решение. Посмотри, как устроены десятки других графических библиотек. Но избегай плохого кода (его можно определить по тому, как морщатся профессионалы, глядя на него, если у вас нет более объективных средств такого определения) – он научит вас плохому. Хороший, но сложный код (глядя на него, профессионалы не морщатся, а вздыхают) – отложи до времени и вернись к нему позже.
  • Выйди за пределы "песочницы". Это усиление принципа "сделай сам". Собери вместе свои мысли про хорошую библиотеку, посмотри, как устроен TXLib и его аналоги, сделай свою библиотеку, лучше TXLib'а. Это нетрудно. :) Примеры таких библиотек можно найти на сайте TXLib и в Интернете, и некоторые из них сделаны как раз начинающими.

Удачи, и May the Source be with you! :)


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

Заметки:
Библиотека TXLib состоит из единственного файла и не требует никаких настроек в среде программирования, чтобы облегчить ее установку и работу для начинающих.
  1. Скачайте программу установки, загрузка по ссылке начнется автоматически. Ее имя имеет вид TXLib-v0173a.rar.exe. Цифры могут отличаться (это номер версии), расширение .exe может не отображаться, в зависимости от текущих настроек Windows.
  2. Запустите скачанную программу установки. Программа установки - это саморазархивирующийся архив, она не требует особых прав для запуска.
  3. На рабочем столе появится "Ярлык для TX". Откройте его и запустите систему помощи TXLib Help, изучите ее. Простейший пример см. <http://storage.ded32.net.ru/Lib/TX/TXUpdate/Doc/HTML.ru/a00001.htm> здесь. Другие примеры см. в папке Examples, в папке Examples/Demo.
  1. Для полной обработки ошибок библиотеке требуются модули, которые желательно установить (скопировать) в папку Windows. Устанавливать эти библиотеки не обязательно. Программы, использующие TXLib, будут запускаться и без них.
  1. Модули библиотеки Microsoft DBGHELP для доступа к отладочным символам Microsoft:
  • dbghelp32.dll для 32-разрядных программ (либо dbghelp.dll, 32-разрядная версия),
  • dbghelp64.dll для 64-разрядных программ (либо dbghelp.dll, 64-разрядная версия),
  • symsrv32.dll для 32-разрядных программ (либо symsrv.dll, 32-разрядная версия),
  • symsrv64.dll для 64-разрядных программ (либо symsrv.dll, 64-разрядная версия),
  • symsrv.yes.
  1. Модули библиотеки DrMinGW для доступа к отладочным символам MinGW компилятора GCC g++:
  • mgwhelp32.dll для 32-разрядных программ (либо mgwhelp.dll, 32-разрядная версия),
  • mgwhelp64.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 будут отображаться неправильно.

Поддерживаемые платформы

  • Среды программирования и исполнения + компиляторы
    1. MinGW GCC 6.3.0 (NUWEN), 64-bit
    2. MinGW GCC 5.3.0 (NUWEN), 64-bit
    3. MinGW GCC 5.1.0 (NUWEN), 32-bit и 64-bit
    4. CodeBlocks 12.11 + MinGW GCC 4.8.0 (NUWEN)
    5. CodeBlocks 12.11 + MinGW GCC 4.7.2 (NUWEN)
    6. CodeBlocks 12.11 + MinGW GCC 4.7.1
    7. CodeBlocks 10.05 + MinGW GCC 4.7.1 (TDM), 32-bit и 64-bit
    8. CodeBlocks 10.05 + MinGW GCC 4.6.1 (TDM)
    9. CodeBlocks 10.05 + MinGW GCC 4.4.1
    10. CodeBlocks 8.02 + MinGW GCC 3.4.5
    11. CodeBlocks 1.0rc2 + MinGW GCC 3.4.4
    12. Dev-CPP 4.9.9.2 + MinGW GCC 3.4.2
    13. Qt Creator 4.2.2 + MinGW GCC 5.3.0, 32-bit (кодировка файлов в редакторе: только CP1251)
    14. Cygwin 2.8.0 + Cygwin GCC 5.4.0, 32-bit и 64-bit
    15. LLVM Clang 3.8.0, 32-bit и 64-bit
    16. Microsoft Visual Studio 14.0 (2015), 32-bit и 64-bit
    17. Microsoft Visual Studio 12.0 (2013), 32-bit и 64-bit
    18. Microsoft Visual Studio 11.0 (2012), 32-bit и 64-bit
    19. Microsoft Visual Studio 10.0 (2010), 32-bit и 64-bit
    20. Microsoft Visual Studio 9.0 (2008)
    21. Microsoft Visual Studio 8.0 (2005)
    22. Microsoft Visual Studio 7.1 (2003)
    23. Microsoft Visual Studio 6.0 (1998)
    24. Intel C++ Compiler 13.0 (2013)
    25. Intel C++ Compiler 9.0
  • Операционные системы
    1. Windows 10 ru/en, 32-bit и 64-bit
    2. Windows 8 ru/en, 32-bit и 64-bit
    3. Windows 7 ru/en, 32-bit и 64-bit
    4. Windows Vista ru/en
    5. Windows 2003 SP1 R1/R2 ru/en
    6. Windows XP SP2/SP3 ru/en
    7. Windows 2000 SP4 ru/en
    8. Linux + Wine
      • Ubuntu 10.04, 11.04 + Wine 1.2.2+
    9. MacOS X + Wine
      • Snow Leopard 10.6.8 + Wine 1.4-rc2
Заметки:
  • Принудительно отключается режим UNICODE (кроме редактора ресурсов Visual Studio). Для явной работы с UNICODE-функциями используйте суффикс W.
  • Принудительно включается режим _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES.
Предупреждения:
Если программа разрабатывалась на определенных платформах с настройками по умолчанию, то во время исполнения могут потребоваться файлы библиотек, без которых программа не запустится:
Компилятор   Среда разработки   Конфигурация   Требуемые библиотеки   

GCC g++   CodeBlocks, DevCpp, Eclipse   Debug, Release   msvcrt.dll   

Microsoft Visual C   Visual Studio 6   Debug, Release   Не требуются   
Intel Compiler 9.0   Visual Studio 6   Debug, Release   Не требуются   

Microsoft Visual C   Visual Studio 2003   Debug, Release   Не требуются   
Intel Compiler 9.0   Visual Studio 2003   Debug, Release   Не требуются   
Microsoft Visual C   Visual Studio 2005   Debug   msvcp80d.dll, msvcr80d.dll   
Microsoft Visual C   Visual Studio 2005   Release   msvcp80.dll,    msvcr80.dll   
Microsoft Visual C   Visual Studio 2008   Debug   msvcp90d.dll, msvcr90d.dll   
Microsoft Visual C   Visual Studio 2008   Release   msvcp90.dll,    msvcr90.dll   
Microsoft Visual C   Visual Studio 2010   Debug   msvcp100d.dll, msvcr100d.dll   
Microsoft Visual C   Visual Studio 2010   Release   msvcp100.dllmsvcr100.dll   
Microsoft Visual C   Visual Studio 2012   Debug   msvcp110d.dll, msvcr110d.dll   
Microsoft Visual C   Visual Studio 2012   Release   msvcp110.dllmsvcr110.dll   

Посмотреть эти зависимости можно утилитой Depends.exe.


Особенности использования

Заметки:
Файл TXLib.h должен быть включен (#include) в программу:
  • До или вместо файла windows.h. Либо надо задать (#define) константы WINVER и _WIN32_IE не ниже 0x0500 и отменить (#undef) макросы UNICODE и _UNICODE.
  • До или вместо файлов string.h или stdio.h, если используется режим строгого соответствия стандарту ANSI. Имейте в виду, что эти файлы могут включаться в windows.h.
  • После включения библиотек boost, использующих модуль boost::preprocessor.
Опции командной строки:

Компилятор Режим Опции командной строки
Dev-Cpp 4.9.9.2, GCC 3.4.2 Debug -D _DEBUG -g -ansi -std=c++98 -Wall -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings
Release -D NDEBUG -O2 -ansi -std=c++98 -Wall -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings
CodeBlocks 10.05, GCC 3.4.2 Debug -D _DEBUG -g -ansi -std=c++98 -pedantic -Wall -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings
Release -D NDEBUG -O2 -ansi -std=c++98 -pedantic -Wall -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings
CodeBlocks 8.02, GCC 3.4.5 Debug -D _DEBUG -g -ansi -std=c++98 -pedantic -Wall -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings
Release -D NDEBUG -O2 -ansi -std=c++98 -pedantic -Wall -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings
CodeBlocks 10.05, GCC 4.4.1 Debug -D _DEBUG -g -ansi -std=c++0x -pedantic -Wall -Wextra -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings -Wmissing-declarations -Wmissing-include-dirs -Wlogical-op -Wstrict-null-sentinel
Release -D NDEBUG -O2 -ansi -std=c++0x -pedantic -Wall -Wextra -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings -Wmissing-declarations -Wmissing-include-dirs -Wlogical-op -Wstrict-null-sentinel
TDM-GCC, GCC 4.6.1 Debug -D _DEBUG -g -ansi -std=c++0x -pedantic -Wall -Wextra -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings -Wmissing-declarations -Wmissing-include-dirs -Wlogical-op -Wstrict-null-sentinel
Release -D NDEBUG -O3 -ansi -std=c++0x -pedantic -Wall -Wextra -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings -Wmissing-declarations -Wmissing-include-dirs -Wlogical-op -Wstrict-null-sentinel
CodeBlocks 12.11, GCC 4.7.2 Debug -D _DEBUG -g -ansi -std=c++11 -pedantic -Wall -Wextra -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings -Wmissing-declarations -Wmissing-include-dirs -Wlogical-op -Wstrict-null-sentinel -Wstack-usage=8192
Release -D NDEBUG -O3 -ansi -std=c++11 -pedantic -Wall -Wextra -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings -Wmissing-declarations -Wmissing-include-dirs -Wlogical-op -Wstrict-null-sentinel -Wstack-usage=8192
CodeBlocks 12.11, GCC 4.8.0 Debug -D _DEBUG -g -ansi -std=c++11 -pedantic -Wall -Wextra -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings -Wmissing-declarations -Wmissing-include-dirs -Wlogical-op -Wstrict-null-sentinel -Wstack-usage=8192
Release -D NDEBUG -O3 -ansi -std=c++11 -pedantic -Wall -Wextra -Weffc++ -fexceptions -Wcast-align -Wfloat-equal -Winit-self -Winline -Wredundant-decls -Wshadow -Wundef -Wunreachable-code -Wctor-dtor-privacy -Wnon-virtual-dtor -Woverloaded-virtual -Wpointer-arith -Wsign-promo -Wcast-qual -Wconversion -Wformat=2 -Wstrict-aliasing -Wswitch-default -Wswitch-enum -Wwrite-strings -Wmissing-declarations -Wmissing-include-dirs -Wlogical-op -Wstrict-null-sentinel -Wstack-usage=8192
MSVS 6 Debug /D _DEBUG /Od /Gm /GX /GR /GZ /Zi /MTd /FD /W4 /D WIN32 /D _CONSOLE /D _MBCS
Release /D NDEBUG /O2 /GX /GR /MT /FD /W4 /D WIN32 /D _CONSOLE /D _MBCS
Intel C++ 9 (MSVS 6) Debug /D _DEBUG /Od /Gm /GX /GR /GZ /Zi /MTd /FD /W4 /Wall /Wcheck /Wport /D WIN32 /D _CONSOLE /D _MBCS
Release /D NDEBUG /O2 /GX /GR /MT /FD /W4 /Wall /Wcheck /Wport /D WIN32 /D _CONSOLE /D _MBCS
MSVS 2003 Debug /D _DEBUG /Od /Gm /GS /GR /EHsc /RTC1 /RTCc /Wp64 /TP /ZI /MTd /W4 /D WIN32 /D _CONSOLE /D _MBCS
Release /D NDEBUG /O2 /GS /GR /EHsc /Wp64 /TP /Zi /MT /FD /W4 /D WIN32 /D _CONSOLE /D _MBCS
Intel C++ 9 (MSVS 2003) Debug /D _DEBUG /Od /Gm /GS /GR /Gd /EHsc /RTC1 /RTCc /Wp64 /ZI /MTd /W4 /Wall /Wcheck /Wport /Qtrapuv /Qmultibyte-chars /Qvc7.1 /D WIN32 /D _CONSOLE /D _MBCS
Release /D NDEBUG /O2 /GR /Gd /EHsc /Wp64 /Zi /MT /FD /W4 /Wall /Wcheck /Wport /Qmultibyte-chars /Qvc7.1 /D WIN32 /D _CONSOLE /D _MBCS
MSVS 2005 Debug /D _DEBUG /Od /Gm /EHsc /RTC1 /RTCc /Wp64 /TP /ZI /MTd /W4 /analyze /fp:except /D WIN32 /D _CONSOLE
Release /D NDEBUG /O2 /GL /EHsc /Wp64 /TP /Zi /MT /FD /W4 /analyze /D WIN32 /D _CONSOLE
MSVS 2008 Debug /D _DEBUG /Od /Gm /EHsc /RTC1 /RTCc /TP /ZI /MTd /W4 /analyze /fp:except /D WIN32 /D _CONSOLE
Release /D NDEBUG /O2 /GL /Gy /Oi /EHsc /TP /Zi /MT /FD /W4 /analyze /D WIN32 /D _CONSOLE
MSVS 2010 Debug /D _DEBUG /Od /Gm /GS /GR /Gd /Oy- /EHsc /RTC1 /RTCc /MP /WX- /TP /ZI /MTd /W4 /analyze /fp:except /fp:precise /Zc:wchar_t /Zc:forScope /D WIN32 /D _CONSOLE /D CODE_ANALYSIS
Release /D NDEBUG /O2 /Gm- /GS /GR /GL /Gd /Gy /Oi /Oy- /EHsc /MP /WX- /TP /Zi /MT /W4 /analyze /fp:precise /Zc:wchar_t /Zc:forScope /D WIN32 /D _CONSOLE /D CODE_ANALYSIS
MSVS 2012 Debug /D _DEBUG /Od /Gm /GS /GR /Gd /GF /Oy- /EHsc /RTC1 /RTCc /MP /WX- /TP /ZI /MTd /W4 /analyze /fp:except /fp:precise /Zc:wchar_t /Zc:forScope /sdl /openmp /Qpar- /D WIN32 /D _CONSOLE /D _WINDOWS
Release /D NDEBUG /O2 /Gm- /GS /GR /GL /Gd /GF /GT /Gy /Oi /Oy- /Ob2 /Ot /EHsc /MP /WX- /TP /Zi /MT /W4 /analyze /fp:precise /Zc:wchar_t /Zc:forScope /sdl /openmp /Qpar /D WIN32 /D _CONSOLE /D _WINDOWS

Эти ключи могут вызывать появление предупреждений для файла TXLib.h о символе $, использующемся для отладки, и о директиве #warning. Они настолько суровы, что могут вызвать   Чака Норриса   предупреждения даже для файлов стандартных библиотек C++ (вне зависимости от того, используется TXLib.h или нет).


История изменений

  • Версия 0.172
    1. API
      1. Добавлена cовместимость с MS Visual Studio 2010 и 2012.
      2. Соответствие стандарту C++0x для MSVS 2010, MSVS 2012, GCC 4.6.1 и C++11 для GCC 4.7.1 в режиме компиляции -Wall -Wextra -Weffc++ (см. таблицу опций компиляторов).
      3. Убраны лишние предупреждения о неинициализированнях полях структур при инициализации вида = {} (только для компиляторов MS и GCC версии 4).
      4. Изменен диалог About, заголовки окна и окон сообщений.
      5. Изменен и дополнен формат вывода ошибок.
      6. Добавлены функции для работы с консолью.
      7. Добавлены новые функции служебного характера.
      8. Макрос TX_THROW переименован в TX_ERROR, макрос TX_NEEDED – в asserted. Добавлены макросы verify, verified. Обеспечена обратная совместимость.
      9. Макрос _TX_IMPORT переименован _TX_DLLIMPORT, так больше похоже на __declspec (dllimport).
      10. Убрана облегченная поддержка регионов отсечения (теперь – только средствами Win32).
      11. Добавлена системная клавиша Alt+Ctrl+Shift+PrintScreen, временно отменяющая блокировку обновления окна, см. txBegin().
      12. Добавлена многооконность и работа в DLL (experimental and not fully documented).
      13. Файл Graphics.h больше не поддерживается – не нужен он никому.
    2. Документация
      1. Дополнен текст документации, примеров использования, добавлены демонстрационные программы и дополнения от разных авторов (в папке TX/Examples/Demo). Подробно документирован исходный текст функции txInputBox() для иллюстрации работы с диалогами Win32.
      2. Документация по примерам вынесена в отдельный файл.
      3. TXLib теперь упоминает кота Мару (Maru the cat) в одной из своих функций. TXLib is now referencing Maru the Сat in one of its functions.
    3. Реализация
      1. Во все функции добавлены проверки параметров и установка кода ошибки SetLastError().
      2. Упрощен механизм трансляции текста консоли в окно TXLib.
      3. Добавлена динамическая иконка окна.
      4. Добавлено автоматическое удаление HDC и предупреждение об этом через Tray Notification.
      5. Добавлена принудительная установка русского языка в консоли, см. пляски с бубном в _txConsole_SetUnicodeFont().
      6. Если процесс с TXLib запущен в среде программирования, которая будет ожидать нажатия клавиши для завершения процесса, TXLib теперь завершает процесс-родитель этой среды. Поддерживаются MS Visual Studio, CodeBlocks, Eclipse. См. _TX_WAITABLE_PARENTS.
      7. Поддержка среды Eclipse с ее альтернативно талантливой идеей эмулировать консоль в эклипсовском окне и использованием каналов (pipes) для ввода-вывода.
      8. Код библиотеки верифицирован в статических анализаторах кода Cppcheck v1.53, PVS-Studio v4.54 и Coverity Scan, и в динамическом анализаторе MicroFocus DevPartner v10.5.
    4. Установка
      1. Убраны сообщения об ошибках в Setup.js
  • Версия 0.171
    1. Соответствие стандартам MS SAL и режиму компиляции /analyze в MSVS 2005, 2008.
    2. Восстановлен механизм обновления по таймеру.
    3. Русский язык в консоли в _txThrow().
  • Версия 0.170
    1. Исправление ошибок в _txCanvas_OnPAINT (NULL DC).
    2. Упрощен механизм генерации сообщений для обновления экрана.
    3. Добавлена трассировка (TX_TRACE).
  • Версия 0.169
    1. Добавлена работа с диалоговыми окнами (still experimental).
  • Версия 0.166
    1. Исправлена работа при использовании отладчиков на платформах Win2000, WinXP.
    2. Документированы отладочные функции и макросы.
  • Версия 0.165
    1. Добавлены Мастера проектов для VS6, VS2003-2008, CodeBlocks, DevCPP.
    2. Добавлена интеграция с системой помощи для VS2003-2008.
  • Версия 0.164
    1. Добавлена cовместимость с Visual Studio 2005.
    2. Изменен размер шрифта консоли и шрифта, выбранного по умолчанию.
  • Версия 0.150
    1. Добавлены txTransparentBlt(), txAlphaBlend() - Win98 и старше.
    2. ВНИМАНИЕ! Функции txSetBkColor(), txBkColor(), txGetBkColor() теперь называются txSetFillColor(), txFillColor(), txGetFillColor() (совместимость со старыми версиями - в Graphics.h).
  • Версия 0.145
    1. Добавлена txPlaySound().
  • Версия 0.144
    1. Исправлен баг в txMouseButtons().

Сообщения об ошибках

Тем, кто зарегистрирован на SourceForge.net, можно: