Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
1

Значения из формы переслать в программу срр

02.03.2012, 09:37. Показов 1538. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, вот у меня есть наметки программы, которую я буду использовать, там есть код, который написан консольно. Как теперь мне подключить к этому коду форму, например с textBox, так чтоб я мог данные из формы передать на выполнение - программе?
C++
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
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <windows.h>
#include <GL/glut.h>
#include <conio.h>
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut32.lib")
 
using std::cout;
using std::cin;
 
using namespace System;
 
void init(void){
    glClearColor(1.0,1.0,1.0,0.0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0,200.0,0.0,150.0);
    glMatrixMode(GL_MODELVIEW);
}
static int yOld,yNew,x=0;
void LineSegment(void){
    int l;
    l=2;
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,0.0,0.0);
    glPushMatrix();
    glTranslatef(-x,0.0f,0.0f);
    glBegin(GL_LINE_STRIP);
    glVertex2i(l,yOld);
    l++;
    glVertex2i(l,yNew);
    glEnd();
    glPopMatrix();
    l++;
    glFlush();
}
 
int main(int argc,char** argv)
{   
    cout << "Enter yOld"<<endl;
    cin >> yOld;
    cout << "Enter yNew"<<endl;
    cin >> yNew;
 
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowPosition(50,100);
    glutInitWindowSize(400,300);
    glutCreateWindow("OpenGL окошко");
    init();
    glutDisplayFunc(LineSegment);
    glutMainLoop();
    return 0;
}
С консоли всё вводится, рисует - как мне надо, а вот подключить форму - не удается, куча ошибок вылезает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2012, 09:37
Ответы с готовыми решениями:

Как сделать несколько функций в одном срр ?Написал программы, которые нужно поочередно запустить в одном срр
#include &lt;iostream&gt; void func(double&amp; x,double&amp; y) { double temp_min = (x + y) / 2.0;; ...

срр файл в нутри срр
можна ли зделать так что бы срр файл выполнялса в нутри главно файла програмы (срр) при нажатии...

Разработать в VBA программу с использованием формы для вычисления значения функции Y=A2 +(A+B) /(А-1) , п
Разработать в VBA программу с использованием формы для вычисления значения функции Y=A2 +(A+B)...

Сравнение значения поля подчиненной формы с элементом списка главной формы
Здравствуйте. Есть форма, на которой есть список, куда выводятся некоторые данные из запроса, а...

18
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.03.2012, 14:52 2
Думаю не как, нужно код переносить в проект с формой.
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
05.03.2012, 14:55  [ТС] 3
хорошо, просто с консольного файла переносить на срр файл проекта с формой?
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.03.2012, 15:03 4
Ну да создать проект с формой и внего записывать,а содержимое функции main впишиш в обработчик кнопки к примеру.
Ну и заменишь :
C++
1
2
3
4
cout << "Enter yOld"<<endl;
        cin >> yOld;
        cout << "Enter yNew"<<endl;
        cin >> yNew;
визуальными компонентами.
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
05.03.2012, 15:12  [ТС] 5
я пробовал, не получилось ну я еще попробую, раз вариантов нету
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.03.2012, 15:25 6
А что пишит?

Добавлено через 3 минуты
Если пишиш на Builder-e, надо выкинуть
C++
1
2
3
4
5
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <windows.h>
#include <conio.h>
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
05.03.2012, 15:40  [ТС] 7
на VisualStudio 2008? уже не помню где ругается, только я буду пытаться запускать OpenGL окно, не знаю - получится ли?
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
05.03.2012, 18:46 8
...а из визуальной программы разве с консолью вы работать не можете? СreatePipe(), CreateProcess(), StdOutPipeWrite, StdOutPipeRead. Оно конечно две программы.
1
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.03.2012, 18:57 9
А при чем тут VCL ?
0
Почетный модератор
14018 / 3624 / 87
Регистрация: 11.06.2009
Сообщений: 11,783
05.03.2012, 19:33 10
Avazart, убрано из названия темы.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.03.2012, 20:07 11
Попробуй сначала добавить в чистый проект
C++
1
#include <GL/glut.h>
Вдруг у тебя его нет? Прокомпиль, ошибки выложи.
Потом добавь функции init, LineSegment, и глобальные переменные
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
06.03.2012, 09:27  [ТС] 12
Цитата Сообщение от Avazart Посмотреть сообщение
А при чем тут VCL ?
Сплю CLR конечно

Добавлено через 2 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Попробуй сначала добавить в чистый проект
#include <GL/glut.h>

Вдруг у тебя его нет? Прокомпиль, ошибки выложи.
Потом добавь функции init, LineSegment, и глобальные переменные
Через пустой проект работает всё. Создается форма, рисуется нужная линия
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.03.2012, 10:26 13
Ну тогда в чем проблема?
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
06.03.2012, 11:01  [ТС] 14
Цитата Сообщение от Avazart Посмотреть сообщение
А что пишит?

Добавлено через 3 минуты
Если пишиш на Builder-e, надо выкинуть
C++
1
2
3
4
5
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <windows.h>
#include <conio.h>
Ошибка
error C2664: glutDisplayFunc: невозможно преобразовать параметр 1 из 'void (__clrcall *)(void)' в 'void (__cdecl *)(void)'
1> Конечному типу не соответствует ни одной функции с данным именем в области видимости


Код Form1.h
C++
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#pragma once
#include <tchar.h>
#include <windows.h>
#include <GL/glut.h>
#include <iostream>
#include <conio.h>
#pragma comment(lib, "opengl32.lib") //сообщаем линковщику, что мы будет использовать библиотеки opengl32, glu32. 
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut32.lib")
 
namespace BaseWinForm1 {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    /// <summary>
    /// Сводка для Form1
    ///
    /// Внимание! При изменении имени этого класса необходимо также изменить
    ///          свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса,
    ///          связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае,
    ///          конструкторы не смогут правильно работать с локализованными
    ///          ресурсами, сопоставленными данной форме.
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
 
    protected: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    private: System::ComponentModel::IContainer^  components;
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
 
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->SuspendLayout();
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(567, 262);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
            this->ResumeLayout(false);
 
        }
 
 
#pragma endregion
static void init(void){
    glClearColor(1.0,1.0,1.0,0.0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0,200.0,0.0,150.0);
}
 
static void LineSegment(void){
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0,0.0,0.0);
    glBegin(GL_POINTS);
        glVertex2i(180,15);
        glVertex2i(10,145);
    glEnd();
    glFlush();
}
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
int argc;
char** argv;
 
 
 
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
//  glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
    glutInitWindowPosition(50,100);
    glutInitWindowSize(400,300);
    glutCreateWindow("OpenGL окошко");
    init();
    glutDisplayFunc(LineSegment);
 
 
    glutMainLoop();
 
             }
};
}
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.03.2012, 13:30 15
error C2664: glutDisplayFunc: невозможно преобразовать параметр 1 из 'void (__clrcall *)(void)' в 'void (__cdecl *)(void)'
Cудя по этой ошибке что-то мне подсказывает, что юзать OpenGL из CLR не самая хорошая идея. Или хотя бы стоит обернуть в unsafe.

Добавлено через 38 секунд
http://msdn.microsoft.com/en-u... 80%29.aspx
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
06.03.2012, 16:30  [ТС] 16
Цитата Сообщение от ForEveR Посмотреть сообщение
unsafe
перерыл всё до куда дотянулся, не нашел такой функции в с++

по ссылке тоже не совсем понял - зачем ты мне её дал...
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.03.2012, 17:59 17
KokosSPb, Ах да. Не unsafe, а unmanaged. Суть ошибки в том, что в clr и нативе используются разные соглашения вызова.
1
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
11.03.2012, 12:20  [ТС] 18
Цитата Сообщение от ForEveR Посмотреть сообщение
KokosSPb, Ах да. Не unsafe, а unmanaged. Суть ошибки в том, что в clr и нативе используются разные соглашения вызова.
Тоже убил немало времени, не понял как мне его обернуть в unmanagment можно как-нибудь вылечить их разногласия по вызову?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
11.03.2012, 14:40 19
cdecl

Основной способ вызова для Си (отсюда название, сокращение от «c-declaration»). Аргументы передаются через стек, справа налево. Очистку стека производит вызывающая программа. Это основной способ вызова функций с переменным числом аргументов (например, printf(…))
clrcall
http://msdn.microsoft.com/en-u... 80%29.aspx

Добавлено через 11 минут
И насколько я могу вписаться в это все, я не могу понять зачем тебе работать из managed C++ OpenGL. Тем не менее, насколько я понимаю, импорт этих функций должен производится по другому.

Добавлено через 12 минут
Импорт по идее что-то вроде такого для функции glutDisplayFunc
C#
1
2
[DllImport(/*название либы*/, SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
static extern void glutDisplayFunc(IntPtr func);
Рекомендую https://www.cyberforum.ru/csha... 42135.html пункт 4.
1
11.03.2012, 14:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2012, 14:40
Помогаю со студенческими работами здесь

Соответствие значения поля подчиненной формы полю таблицы основной формы
Здравствуйте. В основной форме две подчиненные формы, одна в табличном режиме другая в режиме...

Сохранить значения выделеной строки в DBGrid одной формы, и перенести их в TEdit -ы другой формы
Привет. Помогите пожалуйста я уже незнаю что делать. У меня после заданного поиска выделятся...

Получить значения из Формы. Странной для новичка формы
Приветствую, подскажите пожалуйста. А то не могу выполнить задачку. Мне надо (именно надо)...

if then else => на срр
begin if i=0 then a:=b*(c0-d0) else if i=nx ...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru