|
эволюционирую потихоньку
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
Взаимодействие проектов01.08.2009, 18:07. Показов 5717. Ответов 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++ восстановление проектов соединение проектов Синхронизирование проектов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|