|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
Взаимодействие проектов01.08.2009, 18:07. Показов 5727. Ответов 37
Метки нет (Все метки)
Здравствуйте, проблема следующего рода: имеется проект, организующий ряд математических операций, требуется надстроить на него графический интерфейс (пока примитивный: окно с полями под ввод данных и кнопка, по которой осуществляются вычисления и выводиться результат в тоже окно). С графикой не работал вовсе, поэтому создал первое окно по шаблону, получил проект с кучей фалов и теперь страшно туда добавлять файлы вычислительной части, ибо потеряются совсем.
Возможно организовать взаимодействие графического интерфейса и математической модели без слияния файлов в один проект? Если да, то каким образом. Заранее спасибо
0
|
|
| 01.08.2009, 18:07 | |
|
Ответы с готовыми решениями:
37
В чем разница MFC проектов и CLI проектов? Взаимодействие 2-х проектов Взаимодействие двух проектов |
|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 04.08.2009, 21:12 [ТС] | |
|
0
|
|
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
| 04.08.2009, 21:14 | |
|
Лучше использовать snprintf() чем sprintf(), так как есть контроль размера буфера.
В стандарте C99 есть snprintf(). Правда Visual Studio 2005/2008 не поддерживают C99
0
|
|
|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 22.08.2009, 20:51 [ТС] | |
|
В продолжении темы. Более менее на уровне рисования и кнопочек разобрался с MFC. создал что-то свой - пара кнопок и клиентских областей где кружочки рисуются и тут как началось...
Во-первых, наверно, самый распрастранённый вопрос, чего на других компах не работает? в настройках project->settings поставил Use MFC in a Static Library - это и всё? размер экзешника вообще не увеличился, подозрительно как-то. и второй основной вопрос, при перемещении плавном перемещении окна всё нормально, стоит резко подвинуть окошко, то тут же вылазит предупреждение Micrisoft Visual C++ Debug Library со словами на нерусском Debug Assertion Failed Program: адрес к моему экзешнику File: wingdi.cpp Line: 1120 Это мне совсем не понятно. Чем могло быть вызванно это предупреждение?
0
|
|
|
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 5
|
|
| 23.08.2009, 05:49 | |
|
Здравствуйте!
Та же проблема: есть рабочее консольное приложение и к нему нужно прицепить графический интерфейс для ввода даних. Эти данные надо использовать в консольном приложении как исходные данные. Вопрос1: Можно ли в Visual C++ 6.0 или в С++2008 создать 2 проекта (один из них консольный) в одном Workspace котрые бы а) выполнялись ПООЧЕРЕДНО б)Обменивались данными? Если можно, то как насторить поочередность выполнения проектов? В Visual C++ 6.0 ничего не нашел, а в С++2008 нашел только как запустить оба одновременно. Совет по Visual C++ 6.0 предпочтительнее, т.к. меньше изменений в консольной проге. Вопрос2: Тут люди советовали сделать обмен через файлы. Нельзя ли подробнее расказать как запустить консольный проэкт или ехе-файл с диалогового окна (проект с графическим интерфейсом) чтобы реализовать такой способ обмена. Заранее спасибо. P.S. TanT, а как Вы решили свою проблему?
0
|
|
|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 23.08.2009, 10:20 [ТС] | |
|
Обмен данными сделал примитивным способом. Консольный проект отрабатывает и генерит txtшник. в той же папке лежит exeшник графического приложения, который при запуске черпает данные из txtшника. то есть работа проектов поочерёдная. не очень хорошо конечно. В последсвии, если будет время, перекину все классы консольного приложения в графическое. их немного получилось. думаю сильно не напряжёт.
0
|
|
|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 23.08.2009, 20:53 [ТС] | |
|
В принципе, если требуется более плотно связать два проекта, то можно ввести буферный txtшник который будет заполняться консольным проектом при появлении новых данных. а графический проект будет анализировать данные в этом буфере и по ним решать есть ли новые данные от консольного проекта. типа маилбокса получиться, только шибко извращённого. Но проще в графическом проете делать регуляный опрос по таймеру (или по кнопке) данных от консольного проекта. я так сделаю, пока у меня графическое приложение просто делает более доступный анализ данных от консольного и не отслеживает появление новых данных.
0
|
|
|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 23.08.2009, 22:14 [ТС] | |
|
Не вопрос, урезал как мог, чтобы не путать сильно. За небрежность прошу не винить, делал по шаблонам из книжек, ибо тока учусь. Данный пример берёт координаты точек из файла logFile.txt и рисует поним линии.
Предупреждение появляется при быстром перемещении окна. Без класса CLientsList окно двигается без проблем.
0
|
|
| 23.08.2009, 23:12 | ||
|
вы, видимо, не понимаете как все происходит, поэтому такая штука получается. инициализировать все вещи, необходимые для рисования, нужно один раз, а не при каждой прорисовке. и файл нет нужды каждый раз при перерисовке окна читать. в OnPaint() нужно только рисовать, эта ф-я вызывается каждый раз когда требуется нарисовать ваше окно заново! и зачем вам там dc, если вы его не используете? я это имею ввиду: CClientDC dc(this); dc.SelectStockObject(NULL_PEN); dc.Rectangle(m_Canvas); InitReadFile(); в общем, я бы посоветовал в OnInitDialog() прочитать файл и сохранить все что из него нужно в каком-нибудь контейнере, который легко использовать, и насоздавать все карандаши-кисти-цвета, а в OnPaint() - только рисовать и все что с этим связано! но вообще "сверхзадача" была - связать два проекта. а здесь - только один!
1
|
||
|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|||||
| 24.08.2009, 06:25 [ТС] | |||||
|
Уважаемый novi4ok, спасибо за замечания. Правильно ли я наметил пути их устранения?
P.S.
0
|
|||||
|
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 5
|
|
| 24.08.2009, 06:50 | |
|
Уважемый "novi4ok"!
Подскажите пожалуйста, нет ли ошибки в п.1-9 (на 1 страница) в файле, который я прицепил? Дело в том, что этом примере все получается до п.10. В п.10 при вызове MFC ClassWizard должно появится(по книге) еще и окно Adding a Class. Однако у меня его нет, появляется только окно MFC ClassWizard. Соответственно дальше все стопориться. Извините за беспокойство, но потратил сегодня большую половину дня и не могу пройти этот пример. В Интернете других примеров создания диалогового окна с вкладками + кнопками "Вперед"- "Назад" не нашел, хотя скачал уже книг 10. Может у Вас есть простая книга с примерами на эту тему (это уже 2 просьба )?Спасибо.
0
|
|
|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 24.08.2009, 07:15 [ТС] | |
|
alex123, я не novi4ok и мож я чего не понял, но в 6м вижуале, в окне MFC ClassWizard есть кнопка AddClass (правый верхний угол). На неё жмёшь и дальше вроде что тебе надо.
0
|
|
| 24.08.2009, 13:13 | ||
|
TanT , vy pravilno ponjali napravlenije. DC sozdajte odin ras v OnPaint(), i esli risujete v podprogrammah, ne sozdavajte tam novyh, a peredavajte tuda uzhe sozdannyj kak argument (lu4she pointer)
1
|
||
|
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 5
|
|
| 25.08.2009, 05:56 | |
|
Спасибо за участие в моей проблеме. С примером в этой книжке (Секунов, Самоучитель Visual C++) вроде уже разобрался, заработало. Ошибочки там, точнее пропустил дядя пункти создания 1 дочернего окна + забыл написать дальше о том, что надо вставить #include "Sheet.h". Ну да ладно, зато алгоритм теперь наизусть помню
, времени только жаль. Теперь буду писать интерфейс. Просьба к "novi4ok": если у Вас будет время, загляньте сюда пожалуйста дней через 3. Вдруг не смогу сконектить обе части и нужен будет дельный совет от Вас по теме взаимодействия обеих программ. Я открыл похожую тему на 2 других форумах, но там глухо. А сюда я вижу заходят спецы. Заранее спасибо.
0
|
|
|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 25.08.2009, 09:23 [ТС] | |
|
alex123, я тебе даже больше скажу, если у тебя сольються две части, не забудь похвалиться
Серьёзно: может вариант будет оптимальным и твой опыт полезен остальным.
0
|
|
|
0 / 0 / 0
Регистрация: 23.08.2009
Сообщений: 5
|
|
| 09.09.2009, 20:59 | |
|
Хвалюсь
: Связал свои 2 проекта. В новый интерфейс засунул код консольного проекта, который был у меня структурированный в виде подпрограмм. Для передачи данных между новыми и старими функциями использовал класс с глобальными переменными (обьявленными как static). Таким образом я пошел по класическому пути, котрый тут советовали.Однако есть и другие возможности передачи данных через буфер и потоки(см. книги). Однако я с этим не разбирался глубоко , т. к. мне это показалось достаточно стремным, а в книгах я нашел только общее описание такого подхода. Так что удачи TanT.
0
|
|
|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 10.09.2009, 07:48 [ТС] | |
|
А я так и не вклинил код консольного проекта. вполне хватило маилбокса, аккуратненько получилось.
Следующий проект сразу поведу по классическому путЮ, а может и попробую осилить "передачи данных через буфер и потоки" наверняка не всё так стрёмно.
0
|
|
| 10.09.2009, 07:48 | |
|
Взаимодействие проектов в одном решении Взаимодействие двух проектов в одном решении C++ восстановление проектов соединение проектов Синхронизирование проектов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|