Как-то взялся делать поддержку плагинов. Даже сделал Но количество их ограничевается 10-ю, т.к. я выделяю 10 двордов под адреса. А вот, скажем, в PE TOOLS хоть 150 их запихни... Как же такое замутить?
может быть я что-то не понимаю, но .. во-первых, неужели жалко несколько лишних dword'ов памяти в неинициализированной секции? во-вторых, если уж очень хочется выделить именно столько, сколько нужно, то: HeapAlloc, HeapReAlloc ? ну, или VirtualAlloc с MEM_RESERVE. да, и под какие адреса то?
Мдя, извените, затупил. Адреса функций экспортируемых. Ок, выделил я сколькон нужнл, но ведь нужно в оконной процедуре обрабатывать какой плагин запускать. Если не ясно: все плагины загружаются, вычилсяются адреса функций и они сохраняются. Далее - при приходе сообщения от меню программа вызывает функцию по тому адресу. Как это организовать? Ведь не буду я 150 меню под плагины отводить?!
прочитай в статье "Как написать аддин для винасма" как это сделано в винасме: адреса всех однородных экспортируемых функций плагинов записываются в список, и каждое сообщение посылается каждой функции, если функция его распознала, она возвращает истину, и дальше обработка его прекращается, и, кроме этого, после того как сам винасм обработает WM_COMMAND, он каждой функции посылает дополнительное сообщение о том, что коанда обработана: например, тебя интересует не команда "скомпилировать", а момент, когда уже скомпилировано, чтобы затем что-нибудь сделать (например, упаковать готовый бинарник)... вот-с. а меню - плагин запрашивает себе уникальный идентификатор у главного окна, в котором стоит банальный счетчик, и никаких конфликтов.