Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
эволюционирую потихоньку
 Аватар для TanT
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401

Взаимодействие проектов

01.08.2009, 18:07. Показов 5717. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, проблема следующего рода: имеется проект, организующий ряд математических операций, требуется надстроить на него графический интерфейс (пока примитивный: окно с полями под ввод данных и кнопка, по которой осуществляются вычисления и выводиться результат в тоже окно). С графикой не работал вовсе, поэтому создал первое окно по шаблону, получил проект с кучей фалов и теперь страшно туда добавлять файлы вычислительной части, ибо потеряются совсем.

Возможно организовать взаимодействие графического интерфейса и математической модели без слияния файлов в один проект? Если да, то каким образом.
Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.08.2009, 18:07
Ответы с готовыми решениями:

В чем разница MFC проектов и CLI проектов?
хочется свободно использовать winApi функции т.к. мне кажется что .net в CLI/ WinForm мешает свободному использованию их. Предпочитаю...

Взаимодействие 2-х проектов
Доброе время. Я новичок в asp.net mvc, изучаю его на практических примерах. Вот встала такая проблема: У меня есть 1 проект на...

Взаимодействие двух проектов
Здравствуйте Есть два отдельных проекта, скажем OpenCV и ZedGraf. как так сделать, что бы через button с проекта OpenCV открыть проект...

37
эволюционирую потихоньку
 Аватар для TanT
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
04.08.2009, 21:12  [ТС]
Студворк — интернет-сервис помощи студентам
odip, у меня функция snprintf числиться как _snprintf с таким же синтаксисом.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
04.08.2009, 21:14
Лучше использовать snprintf() чем sprintf(), так как есть контроль размера буфера.
В стандарте C99 есть snprintf().
Правда Visual Studio 2005/2008 не поддерживают C99
0
эволюционирую потихоньку
 Аватар для TanT
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
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
22.08.2009, 23:53
проект зазиповать и выложить суда. тогда можно разговаривать. иначе каждый будет говорить на своем языке, даже ему не понятном.
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
эволюционирую потихоньку
 Аватар для TanT
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
23.08.2009, 10:20  [ТС]
Обмен данными сделал примитивным способом. Консольный проект отрабатывает и генерит txtшник. в той же папке лежит exeшник графического приложения, который при запуске черпает данные из txtшника. то есть работа проектов поочерёдная. не очень хорошо конечно. В последсвии, если будет время, перекину все классы консольного приложения в графическое. их немного получилось. думаю сильно не напряжёт.
0
эволюционирую потихоньку
 Аватар для TanT
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
23.08.2009, 20:53  [ТС]
В принципе, если требуется более плотно связать два проекта, то можно ввести буферный txtшник который будет заполняться консольным проектом при появлении новых данных. а графический проект будет анализировать данные в этом буфере и по ним решать есть ли новые данные от консольного проекта. типа маилбокса получиться, только шибко извращённого. Но проще в графическом проете делать регуляный опрос по таймеру (или по кнопке) данных от консольного проекта. я так сделаю, пока у меня графическое приложение просто делает более доступный анализ данных от консольного и не отслеживает появление новых данных.
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
23.08.2009, 21:01
не путайте понятия "проект" и "процесс"
ну не поленитесь хоть один свой проект (или упрощенный пример, если в проекте секреты или они очеь громоздкие) выложить сюда полностью.
0
эволюционирую потихоньку
 Аватар для TanT
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
23.08.2009, 22:14  [ТС]
Не вопрос, урезал как мог, чтобы не путать сильно. За небрежность прошу не винить, делал по шаблонам из книжек, ибо тока учусь. Данный пример берёт координаты точек из файла logFile.txt и рисует поним линии.
Предупреждение появляется при быстром перемещении окна. Без класса CLientsList окно двигается без проблем.
Вложения
Тип файла: rar test_forum.rar (35.4 Кб, 16 просмотров)
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
23.08.2009, 23:12
Цитата Сообщение от TanT Посмотреть сообщение
Не вопрос, урезал как мог, чтобы не путать сильно. За небрежность прошу не винить, делал по шаблонам из книжек, ибо тока учусь. Данный пример берёт координаты точек из файла logFile.txt и рисует поним линии.
Предупреждение появляется при быстром перемещении окна. Без класса CLientsList окно двигается без проблем.
непосредственная причина появления так называемого Debug assertion - попытка повторно создать уже созданный объект класса CPen. и не нужно для этого ничего "быстро перемещать": достаточно заставить окно перерисоваться хотя бы однажды: перекройте его, не двигая, другим приложением, а потом снова сделайте видимым.
вы, видимо, не понимаете как все происходит, поэтому такая штука получается. инициализировать все вещи, необходимые для рисования, нужно один раз, а не при каждой прорисовке. и файл нет нужды каждый раз при перерисовке окна читать. в OnPaint() нужно только рисовать, эта ф-я вызывается каждый раз когда требуется нарисовать ваше окно заново!
и зачем вам там dc, если вы его не используете? я это имею ввиду:

CClientDC dc(this);
dc.SelectStockObject(NULL_PEN);
dc.Rectangle(m_Canvas);
InitReadFile();

в общем, я бы посоветовал в OnInitDialog() прочитать файл и сохранить все что из него нужно в каком-нибудь контейнере, который легко использовать, и насоздавать все карандаши-кисти-цвета, а в OnPaint() - только рисовать и все что с этим связано!

но вообще "сверхзадача" была - связать два проекта. а здесь - только один!
1
эволюционирую потихоньку
 Аватар для TanT
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
24.08.2009, 06:25  [ТС]
Уважаемый novi4ok, спасибо за замечания. Правильно ли я наметил пути их устранения?

и зачем вам там dc, если вы его не используете? я это имею ввиду:
Отсутствие знаний и опыта, пользуюсь С.Гилберт, Б.Маккарти "САМОУЧИТЕЛЬ VISUAL C++ 6 В ПРИМЕРАХ". Там повсеместно используется подобная конструкция.

в общем, я бы посоветовал в OnInitDialog() прочитать файл и сохранить все что из него нужно в каком-нибудь контейнере, который легко использовать, и насоздавать все карандаши-кисти-цвета,
Функцию InitReadFile(); переместить из OnPaint() в OnInitDialog().

а в OnPaint() - только рисовать и все что с этим связано!
Включить в OnPaint() все функции рисования : void EllipsE(); void PaintLine(int index);

P.S.
но вообще "сверхзадача" была - связать два проекта. а здесь - только один!
Результатом работы второго или консольного проекта/процесса является фаил logFile.txt. Больше никакого взаимодействия между ними нет. Выложить пока не могу.
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 просьба)?
Спасибо.
Вложения
Тип файла: zip str86.zip (1.56 Мб, 16 просмотров)
0
эволюционирую потихоньку
 Аватар для TanT
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
24.08.2009, 07:15  [ТС]
alex123, я не novi4ok и мож я чего не понял, но в 6м вижуале, в окне MFC ClassWizard есть кнопка AddClass (правый верхний угол). На неё жмёшь и дальше вроде что тебе надо.
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
24.08.2009, 13:13
Цитата Сообщение от alex123 Посмотреть сообщение
Уважемый "novi4ok"!
Подскажите пожалуйста, нет ли ошибки в п.1-9 (на 1 страница) в файле, который я прицепил?
Дело в том, что этом примере все получается до п.10. В п.10 при вызове MFC ClassWizard должно появится(по книге) еще и окно Adding a Class. Однако у меня его нет, появляется только окно MFC ClassWizard. Соответственно дальше все стопориться.

Извините за беспокойство, но потратил сегодня большую половину дня и не могу пройти этот пример. В Интернете других примеров создания диалогового окна с вкладками + кнопками "Вперед"- "Назад" не нашел, хотя скачал уже книг 10. Может у Вас есть простая книга с примерами на эту тему (это уже 2 просьба)?
Спасибо.
ne dolzhno stoporit'sja. prosto propustite etot shag, on vam ne nuzhen: class okna dolzhen byt' sozdan srazu, kogda vy dialog-base application sosdavali.


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
эволюционирую потихоньку
 Аватар для TanT
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
эволюционирую потихоньку
 Аватар для TanT
469 / 466 / 92
Регистрация: 30.06.2009
Сообщений: 1,401
10.09.2009, 07:48  [ТС]
А я так и не вклинил код консольного проекта. вполне хватило маилбокса, аккуратненько получилось.
Следующий проект сразу поведу по классическому путЮ, а может и попробую осилить "передачи данных через буфер и потоки" наверняка не всё так стрёмно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2009, 07:48

Взаимодействие проектов в одном решении
Доброго времени суток! :) Имеем решение, в нем припустим 2 проекта. Нужно организовать взаимосвязь между ними - вызывать методы из этих...

Взаимодействие двух проектов в одном решении
Как сделать например кнопку в первом проекте, чтобы открывалась форма второго? И соответственно на форме второго обратно? Возможно ли...

C++ восстановление проектов
Случилось так что был удален рабочий стол на котором находилась папка с проектами рабочий стол я восстановил а вот все файлы которые на нем...

соединение проектов
привет) мне нужно сделать прогу, состоящую из двух окон: сначала одно, затем кнопка далее и уже второе. Подскажите плз, как это сделать?

Синхронизирование проектов
Подскажите как можно синхронизировать проекты в Delphi если работаешь из нескольких мест (например работа-дом-ноутбук)? Раньше...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
Особенности 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
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru