Quantum Да, согласен, посчитал уже после того как запостил, а исправлять лень Но сути это не особо меняет.
Это ты собрался на асме макросами, или новый язык? Если новый то суть взять можно из любого логического языка тогоже Моцарта, и нужно бы почитать литуратуру о графах и их использовании.
Что-то подобное понадобилось мне в свое время (для создания описаний интерфейса текстовых трейнеров для игр), но из-за недостатка времени я свел все к обычному формату ini-файлов. В любом случае для таких целей хочется иметь более удобный инструмент, спроектированный столь же тщательно как и Оберон (язык / ось). Может стоит идти по стопам html/css - ограниченный набор тегов, некоторый набор стандартных обработчиков + возможность референсных ссылок?
Неплохая GUI библиотека, язык разметки похож на HTML, вот цитата с сайта: Библиотека mGUI предназначена для удобного и быстрого создания графического интерфейса пользователя (GUI) для вашей программы. Метод описания интерфейса здесь подобен языку разметки HTML. Тут тоже есть свои теги и их аттрибуты. Библиотека mGUI интерпретирует текстовое описание интерфейса и создает его, позволяя перехватывать необходимые события. Описание интерфейса может быть встроено в Вашу программу (либо в виде текстовой константы, либо в виде ресурса), или же храниться во внешнем файле, что позволяет изменять интерфейс вручную. Небольшие размеры библиотеки (15 КБ), а также удобные и большие возможности делают ее очень привлекательной. В комплекте с самой библиотекой идут примеры использования.. http://mrhx.narod.ru/libs.htm
не поддерживает визуальные стили, дефолтный шрифт таймс (смотрится кошмарно, его сменить хоть можно?), скромный хтмл (даже прогресс бара, скажем, нету, не говоря уже о более нестандартных вещах, ну например бегущего текста ), нет поддержки png/jpeg, есть еще куда двигаться А так вроде ничего. Вот пример хороший - http://terrainformatica.com/htmlayout
Ну mGUI это не HTML. Это только HTML-подобный интерфейс к встроенным контролам Windows. Шрифт менять можно стандартными в Windows средствами (CreateFont, CreateFontIndirect). Прогресс бара кажеться и правда нету ) Но зато есть TabControl )) Но при всем при этом HTMLLayout DLL 600Kb, а mGUI DLL 15Kb - разница существенная. Но вообще да, согласен, двигаться есть куда... Жаль автор забросил это покачто.
Web рулит потому что на Desktop нет ничего кроме стандартных серых коробок из Win32. Редко встретишь что-то другое.. У меня была похожая идея - сделать такой декларативный интерфейс, где все размеры в независимых единицах (points например, как font size) и все контрольные окна не из Win32, а Custom Controls. Сейчас занят созданием IDE, так что времени нет. После IDE наверное попробую.
AsmGuru62 Я этим же занят Щас впрягся с изменением размеров контрола на форме)) PS: как напишем - обменяемся опытом Я уже 1.5мес ее делаю до собственно GUI тока щас добрался Систему назвал просто POWER Долго писал утиль powerc - зато она приложения очень маленькие собирает но пока только консольные (hello world весит 2 колобайта) -- у них заголовок 1 байт, INIT-часть 3 байта DIV-часть(ни у кого такого нет) 1 байт. Еще умеет ресурсы сжимать (то есть если проге есть графика - она как RES сжимается зипом и разжимается при обращении к ней) Пишу на Ada95 и Assembler. Вот только от HTML я чуть отошел. Я создал функции Create_form_control, destroy_form_control. Так же по кнопкам и другим контролам. Из гипертекста понимает почти все теги кроме скриптов. Пока не выложу на сайт -- исправлю кое-че и предоставлю сначала компилер (powerc) а потом все остальное
Попробуй посмотреть WPF. Там описание интерфейса принципиально делается отдельно от собственно программы. Язык описания интерфейса называется XAML (читается "Заммель").
идея хорошая, но требует энтузеазма и довольно большого кол-ва времени. основной модуль сделоть как ехе, туда кинуть парсир всей этой ахинеи, а обработчики событий можно кидать в длл и экспортировать, а в ХМЛ указывать их.
В ноябрьском номере "MSDN magazine" за 2002 год была статья Пола Дилация о создании XML-языка для упрощения программирования и локализации GUI. Видно, актуальности эта статья ещё не утратила. Думаю, её легко можно в Сети найти.
wxWidgets :: xrc Code (Text): <?xml version="1.0" encoding="ISO-8859-1"?> <resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.3.0.1"> <object class="wxDialog" name="variable_expansion_dialog"> <title>Variable Expansion Example</title> <centered>1</centered> <object class="wxFlexGridSizer"> <cols>1</cols> <rows>0</rows> <vgap>0</vgap> <hgap>0</hgap> <growablecols>0</growablecols> <growablerows>0</growablerows> <object class="sizeritem"> <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag> <border>5</border> <object class="wxTextCtrl" name="message_textctrl"> <size>500,150</size> <style>wxTE_MULTILINE</style> <value>Небольшой пример использования XRC входящий в стандартную поставку</value> </object> </object> <object class="sizeritem"> <flag>wxGROW|wxALIGN_BOTTOM</flag> <object class="wxFlexGridSizer"> <cols>3</cols> <rows>0</rows> <vgap>0</vgap> <hgap>0</hgap> <growablecols>2</growablecols> <growablerows>0</growablerows> <object class="sizeritem"> <flag>wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM</flag> <border>5</border> <object class="wxStaticText" name="build_information_statictext"> <label>This build is:</label> </object> </object> <object class="sizeritem"> <flag>wxALIGN_CENTRE|wxALL</flag> <border>5</border> <object class="wxStaticText" name="version_statictext"> <label>$(version)</label> </object> </object> <object class="sizeritem"> <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag> <border>5</border> <object class="wxButton" name="wxID_OK"> <label>OK</label> </object> </object> </object> </object> </object> </object> </resource>