Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите создать Класс
|
|||
|---|---|---|---|
|
#18+
Как в рантайме создать класс, точнее наследника от класса. т.е. есть класс CReferenceFrm как от него создать наследника CReferenceFrm1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2003, 15:52 |
|
||
|
Помогите создать Класс
|
|||
|---|---|---|---|
|
#18+
Ты что с дуба рухнул? Нельзя в рантайме создать подкласс. Это C++, а не Python. Можно только создать экземпляр класса, наследующего у заданного суперкласса. Но определение подкласса должно быть известно на стадии компиляции. Ты уж определись, что тебе надо, не понял вопроса, если честно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2003, 09:16 |
|
||
|
Помогите создать Класс
|
|||
|---|---|---|---|
|
#18+
Любой класс дожен быть известен на момент компиляции. Что именно интересует? Есть несколько способов: Если myfrm1 наследуется от myfrm без всякого виртуального наследования, и ты получил ссылку или указатель на myfrm, но точно знаешь, что под ним "прячется" myfrm1, то выполни static_cast<>(). Если точно не уверен, что это именно он, или если наследовался виртуально - выполни dynamic_cast<>() и проверь результат, если NULL - это был не myfrm1 (и не его потомок). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2003, 09:36 |
|
||
|
Помогите создать Класс
|
|||
|---|---|---|---|
|
#18+
В C...App есть описание окон, у меня ~72 окна получается, и для каждого писать новый класс (описывать фрейм окна), это западло, я определил голальную переменную .... потом // 1 - 10 Справочники // * Window #1: Справочник.Организации CMultiDocTemplate* pRef1DocTemplate = new CMultiDocTemplate( IDI_BUH, RUNTIME_CLASS(CTradeDoc), RUNTIME_CLASS(CReferenceFrame), RUNTIME_CLASS(CReferencesFrm)); AddDocTemplate(pRef1DocTemplate); // * Window #2: Справочник.Склады CMultiDocTemplate* pRef2DocTemplate = new CMultiDocTemplate( IDI_BUH, RUNTIME_CLASS(CTradeDoc), RUNTIME_CLASS(CReferenceFrame), RUNTIME_CLASS(CReferencesFrm)); AddDocTemplate(pRef2DocTemplate); // * Window #3: Справочник.Контрагенты CMultiDocTemplate* pRef3DocTemplate = new CMultiDocTemplate( IDI_BUH, RUNTIME_CLASS(CTradeDoc), RUNTIME_CLASS(CReferenceFrame), RUNTIME_CLASS(CReferencesFrm)); AddDocTemplate(pRef3DocTemplate); // * Window #4: Справочник.Валюта CMultiDocTemplate* pRef4DocTemplate = new CMultiDocTemplate( IDI_BUH, RUNTIME_CLASS(CTradeDoc), RUNTIME_CLASS(CReferenceFrame), RUNTIME_CLASS(CReferencesFrm)); AddDocTemplate(pRef4DocTemplate); // * Window #5: Справочник.Список ТМЦ CMultiDocTemplate* pRef5DocTemplate = new CMultiDocTemplate( IDI_BUH, RUNTIME_CLASS(CTradeDoc), RUNTIME_CLASS(CReferenceFrame), RUNTIME_CLASS(CReferencesFrm)); AddDocTemplate(pRef5DocTemplate); // * Window #6: Справочник.Ценообразование CMultiDocTemplate* pRef6DocTemplate = new CMultiDocTemplate( IDI_BUH, RUNTIME_CLASS(CTradeDoc), RUNTIME_CLASS(CReferenceFrame), RUNTIME_CLASS(CReferencesFrm)); AddDocTemplate(pRef6DocTemplate); // * Window #7: Справочник.Пользователи CMultiDocTemplate* pRef7DocTemplate = new CMultiDocTemplate( IDI_BUH, RUNTIME_CLASS(CTradeDoc), RUNTIME_CLASS(CReferenceFrame), RUNTIME_CLASS(CReferencesFrm)); AddDocTemplate(pRef7DocTemplate); Если бы было не CReferencesFrm для каждого окна, а например CReferencesFrmN где N номер потомка оно бы и не глючило с фреймом, или есть еще какие варианты чтобы фрем не глючил... P.S. Глюк заключается в том, что у такого рода создания окга с фреймом у неактивного и затем активного окга надпись на фрейме получается одинаковая ВОПРОС ГАМЛЕТА:КАК ЭТО ИСПРАВИТЬ ИЛИ НЕ БЫТЬ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2003, 23:43 |
|
||
|
Помогите создать Класс
|
|||
|---|---|---|---|
|
#18+
Недопонял ?? Если проблема только в надписи окна при его создании , так переопредели в CReferenceFrame - OnWindowNew .... мап ( ON_COMMAND(ID_WINDOW_NEW,OnWindowNew)) далее найди нужный темплейт и присвой нужный заголовок при создании ... или я что то не так понял ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 00:38 |
|
||
|
Помогите создать Класс
|
|||
|---|---|---|---|
|
#18+
да добавлю ... создавать разные справочники на основе одного и того же CTradeDoc - по концепции документ-вид не есть верно, если они все похожи то можно создпть базовый клас наследуемый от CDocument (CTradeDoc public CDocument), а на основе CTradeDoc создать создать конкретные справочники (возможно с привязкой к конкретному источнику данных если речь идет о БД) ... проникнетесь - объект документ должен представлять данные (содержание) документа, фрейм - отображать рамку документа (в том числе и заголовок) , вид - представление документа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 00:54 |
|
||
|
Помогите создать Класс
|
|||
|---|---|---|---|
|
#18+
Thank you for rendered by You help ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 16:30 |
|
||
|
Помогите создать Класс
|
|||
|---|---|---|---|
|
#18+
Я тут калякаю проект, тоже для работы с данными. Так вот, пришел к выводу, что регистрировать миллион Doc-темплейтов - это как-то муторно. Короче, у меня есть мой базовый класс для всех моих форм, (у нас около 250 форм), весь енжин по работе с данными - в базывом классе. CDocument я не использую. Свои формы я создаю непосредственно в MDI фрейме - это очень легко, и не надо регистрировать 250 Doc-темплейтов. Причем пихаю я туда даже диалоги, т.е. когда хочу - отображаю их модально, а когда хочу - пихаю их в MDI фрейм. И нечего пытаться ссать против ветра, юзая один-в-один предложенный MFC Document-View шаблон, если у тебя десятки и сотни дата-форм. Код: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. m_wndView - мой базовый класс формы, обрати внимание на m_wndView->CreateInFrame(this); Код: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. тут пара чисто "наших" функций, типа SLoadAccelerators и _app()->get_DocMenu(); но, надеюсь, они не помешали восприятию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 20:02 |
|
||
|
Помогите создать Класс
|
|||
|---|---|---|---|
|
#18+
да, еще: CWSView - базовый класс для всех форм, CCommonFrame - единственный в проекте фрейм. Там еще есть несколько мелочей, типа с ресайзингом и передачей фокуса, но это ерунда, хотя интересующимся могу выслать на мыло полный текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 20:07 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32223020&tid=2036151]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 375ms |

| 0 / 0 |
