Тема уже неактуальная - разве вашу программу на ассемблере оценят дороже, чем аналогичную на VC++? Для небольшого или среднего "проекта для себя" обычно подходит RadAsm, например. Программирование на MASM. Все начинается с мелочей. Заметьте сейчас я пишу это на понятном для многих языке, черными буквами на белом фоне. Макроассемблер использует тот же формат ресурсного файла, что и VС++, но MASM добавляет свою неповторимую волокиту - каждый идентификатор должен иметь уникальное числовое значение. Но на этом все не заканчивается - используемые символьные идентификаторы ресурсов должны быть продублированы в другом формате, а иначе нельзя, в инк-файле. RadAsm похоже решает эту задачу и практически все автоматизирует. Я все время порываюсь написать спецутилитку длч автоматического создания инк файла идентификаторов ресурсов на стадии компиляции ресурсов и присоединения его к проекту при ассемблировании. Группу Контролов диалога при проектировании диалога в RadAsm можно было бы выделять как принято в вижелбейсике, т.е мышкой - это намного удобнее. Ничего не мешает использовать библиотеку для конкретного ассемблера типа VCL, WTL, MFC. Без этих библиотек С++ просто улучшенная версия С - С склассами. Класс -это дальнейшее развитие принципа структуры. Тед Фейсон утверждает в своей книге "ООП на Boland С++ 4.5, что ООП можно применять и в программах на бейсике, и на ассемблере, но это связано с определенными трудностями. Инкапсуляция назвать переменные трудными именами as56567657857865_m_hWnd и получать их с помощью функций или Tbar_m_hWnd, Tbar_MyProc Наследование Добавить в программу производный класс от базового значит добавить член структуры с указателем на структуру базового класса Каждый пишет на том, языке, который больше всего отвечает его сути.
Раз тут упомянули дымок, то большую часть времени я практикую тенсёгрити и отбиваюсь от летунов. Времени писать программы не остается, минут 15-30, да и желания, но вырабатывается звериный рык и боевой настрой, например.
В данный момент я выбрал для себя RadAsm, но всю отладку программы на MASM удобнее всего производить в VC++. В справочных файлах RadAsm есть описание, как это сделать. Неприятные мелочи для asm-программистов. Еще один момент для пишущих свое IDE. Без тулбара не обходится практически любая современная программа. но как получается битмэп для ресурса? Вы должны вручную собрать весь набор картинок из отдельный рисунков в один большой файл. Чтобы что-то изменить или добавить необх начинать сначало. Можно ведь собрать этот большой битмеп прямо в креаторе тулбара, потом сохранить или перезаписать. amdtm (C)
amdtm Неудачный подход. Наследование достигается не через указатель, а через полное включение базовой структуры в структуру наследуемого класса. Причём обязательно в самом его начале: Код (Text): virtual at 0 TBase: .vtbl_Offset PVTABLE ? .Handle HWND ? .currMsgID UINT ? .currMsgWP WPARAM ? .currMsgLP LPARAM ? .rcClient RECT .size = $ end virtual virtual at 0 TDerived: .base rb TBase.size .docPath WCHARS MAX_PATH .pSplitter1 POBJECT ? .pSplitter2 POBJECT ? .size = $ end virtual Таким образом если вызывается функция для базового класса, но передаётся указатель на наследованный класс - всё работает как надо (как в С++), поскольку данные на базовый класс не изменили своих смещений. Если же там будет указатель на базу, то надо перед вызовом функций всегда перезагружать этот указатель.
AsmGuru62 Вам виднее. Другой пример, кто-то на форуме спросил меню на ребарах, в стиле Експлоера. Повторное использование кода не предусатривалось. Я случайно прочитал эту тему и немного изменил этот код, оформив все в библиотеку. Теперь, если устранить глюки и указанные там недостатки, можно получить готовую библиотеку для галереи повторноиспользуемого кода, а также сделать шаблон для радасма или асмстудии.
Зачем вы все шаблоны для радасма какого-то клепаете Давно бы уже лучше сделать могли бы. Народ подскажите как нумерацию строк в ричэдите сделать, что надо 2х кадровый буфер обязательно? Кста amdtm , я сам сделал док ребар нормальный, может с менюхой твоей синтегрируем, а заодно и компонент нормальный будет?