|
|
|
меня замыкает IMPLEMENT_DYNAMIC
|
|||
|---|---|---|---|
|
#18+
Народ, трям! Кто может доступно и внятно объяснить, зачем нужны макросы: DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE. msdn не объясняет всех тонкостей. Непонятно, какие могут быть последствия, если не объявлять оконный класс динамическим. Да и вообще!!! Кумарят они меня :(( наверное потому, что непонятно. Помогите, спасите! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 18:02 |
|
||
|
меня замыкает IMPLEMENT_DYNAMIC
|
|||
|---|---|---|---|
|
#18+
Да все там написано. Все эти DYNAMIC-свойства позволяют реализовать три (казалось бы независимых, но на самом деле связанных) функциональности. RTTI (run time type information), определение типов во время исполнения. Это обеспечивает DECLARE_DYNAMIC. Практически полный аналог C++ RTTI. Хочу напомнить, чтобы было ясно, зачем это нужно, - во время создания MFC в C++ еще не было RTTI, поэтому все разработчики серьезных библиотек реклизовывали ее сами. RTTI через DECLARE_DYNAMIC не поддерживает множественное наследование внутри себя, но и не запрещает его снаружи. Динамическое создание экземпляров классов во время работы программы, аналог фабрики классов (на самом деле, это и есть фабрика классов, только реализация размазана по всей библиотеке). Это обеспечивает DECLARE_DYNCREATE, причем DECLARE_DYNCREATE включает в себя то, что необходимо для реализации DECLARE_DYNAMIC, т.е. Код: plaintext Сериализация объектов в поток и восстановление из потока. Это обеспечивает DECLARE_SERIAL, причем DECLARE_SERIAL включает в себя DECLARE_DYNAMIC и DECLARE_DYNCREATE, т.е. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 09:36 |
|
||
|
меня замыкает IMPLEMENT_DYNAMIC
|
|||
|---|---|---|---|
|
#18+
Большое спасибо, MasterZiv, за отличный развернутый ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 11:19 |
|
||
|
меня замыкает IMPLEMENT_DYNAMIC
|
|||
|---|---|---|---|
|
#18+
MasterZivRTTI (run time type information), определение типов во время исполнения. Это обеспечивает DECLARE_DYNAMIC. Практически полный аналог C++ RTTI. Хочу напомнить, чтобы было ясно, зачем это нужно, - во время создания MFC в C++ еще не было RTTI, поэтому все разработчики серьезных библиотек реклизовывали ее сами. RTTI через DECLARE_DYNAMIC не поддерживает множественное наследование внутри себя, но и не запрещает его снаружи. Абасаца! Аффтар жжет адназначна. Всем распечатать и при наступлении депрессии перечитать. Особо понравилось место "... во время создания MFC в С++ еще не было RTTI..." Давно так не ржал. Вспомнилась инкарнация Microsoft Visual C++ 1.5XX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 19:08 |
|
||
|
меня замыкает IMPLEMENT_DYNAMIC
|
|||
|---|---|---|---|
|
#18+
Не могу не дополнить сагу ибо пятница. Во времена создания MFC в C++ не было обработки исключений, поэтому все разработчики серьезных библиотек реализовывали ее сами. Макросы TRY - CATCH не поддерживали никакой типизации (ибо ее в C++ тогда не существовало), поэтому типизацию в макросе CATCH реализовывали тоже на макросах DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 19:23 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33178789&tid=2032985]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 380ms |

| 0 / 0 |
