• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

как из одной формы отобразить вторую в С++

  • Автор темы metal
  • Дата начала
M

metal

ЛЮДИ подскажите как по нажатию на первой форме по кнопке отобразить вторую форму, обе формы сделаны вот нашёл в МСДНЕ такой кусок Form^ form2 = gcnew Form; form2->show(); всё бы хорошо только так он мне делает свою форму, а мне надо что бы мою показал есть два модуля form1.h form2.h и для них свои формы памагите плиз)))
 
E

European

всё бы хорошо только так он мне делает свою форму, а мне надо что бы мою показал
Вы нашли в VS никому не известный генератор форм? А вообще, с такой постановкой вопроса, ошибка в 17 строке
 
U

UrianDy

По new обычно новая форма открывается, ты чего, на нее просто сослаться хочешь?
 
M

metal

По new обычно новая форма открывается, ты чего, на нее просто сослаться хочешь?
да вот я делаю так создаю проект в VS2005 делаю Windows Forms Application он мне создаёт форму Form1.h[design]и к ней Form1.h, затем я делаю add new items и добавляю так же Windows Forms и он мне создаёт форму Form2.h[design]и к ней Form2.h вот есть две формы и вот из первой формы по клику на баттон надо показать вторую возможно???

Вы нашли в VS никому не известный генератор форм? А вообще, с такой постановкой вопроса, ошибка в 17 строке
извините но какой не известный генератор форм????
вот код из МСДН который я приводил выше)))
public:
void CreateMyForm()
{
// Create a new instance of the form.
Form^ form1 = gcnew Form;
// Create two buttons to use as the accept and cancel buttons.
Button^ button1 = gcnew Button;
Button^ button2 = gcnew Button;
 
P

Pasha

metal
Впиши код из своего первого поста в онклик кнопки. нажал кнопку - форма создалась и показалась. чего еще не хватает для счастья?
 
M

metal

metal
Впиши код из своего первого поста в онклик кнопки. нажал кнопку - форма создалась и показалась. чего еще не хватает для счастья?
ТАК весь прикол то в том что она создаётся, а если на ней многго всякого барахла вот к примеру обработка чивонить идёт и это всё в ручную задавать все кнопки все лейблы это же с ума сойдёшь мне наджо просто показать вторую форму на которой уже я сделал все кнопки все лейблы и так далее, а не создавать новую форму))) вот это я пытаюсь спросить
вот как я делаю для создания формы по клику на кнопке
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
Form^form2 = new Form;
form2.show();
} если вот так делать то он игнорирует то что я уже сдлал форму задал её координаты размер поместил на неё что то , он создаёт свою форму и всё и только кодом я могу добавить на эту форму чего то своего, а мне хочется использовать ту форму которую я сам селал form2.h и form2.h [Design] вот в чём трабл то!!!
 
G

gamecreator

а может не создавать новую форму, а попытаться отобразить существующую, раз она уже есть.

я имел ввиду
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
form2.show();
}
 
M

metal

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
form2.show();
}
если так делать то компилятор говорит что слева от метода должно быть либо класс либо объединение или что то ещё хотя модуль form2.h подключен, мне тут говорят что невозможно отобразить вторую форму только рисовать а я почему то не верю))), может по тому что долго в дельфи кодил))))


Попробуй вот так:
Код:
Form2^ form2 = new Form2;
form2.show();
а вот после этого ваще страшно в окно компилятора смотреть))
вот сделал так
System::Windows::Forms::Form^ Form2 ;
form2->Show();
или
Form2->Show();

код выполняется и компилируется но только во время выполнения даёт вот такую ошибку!!!
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
An unhandled exception of type 'System.NullReferenceException' occurred in System.Windows.Forms.dll \\\\
Additional information: В экземпляре объекта не задана ссылка на объект. \\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 
P

Pasha

а вот после этого ваще страшно в окно компилятора смотреть))
а ты не смотри. возьми книгу по ооп, почитай про классы, про создание объектов, про указатели, про ссылки. после "кодинга в дельфи" вообще тяжело на нормальных языках писать.
form2.h - это не модуль. объекты сами по себе не создаются. сообщения компилятора надо читать, а не бить в бубен. ошибки читать и исправлять, а не удивляться им.
1. Создаешь новый проект.
2. Добавляешь в него новыую форму - Form2
3. В файле form1.h в самом верху пишешь
Код:
#include "form2.h"
4. кидаешь на форму кнопку, даблкликаешь по ней, в обработчик вписываешь:
Код:
	private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Form2^ form2 = gcnew Form2();
form2->Show();
}
};
5. Запускаешь
6. Пытаешься понять каждый из шагов.
 
M

metal

В файле form1.h в самом верху пишешь
Код:
#include "form2.h"
4. кидаешь на форму кнопку, даблкликаешь по ней, в обработчик вписываешь:
Код:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Form2^ form2 = gcnew Form2();
form2->Show();
}
};
это то всё понятно меня вот какой факт смущает: в 2003 vs всё вот в таком виде работает
Код:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Form2* form2 = new Form2();
form2.Show();
}
};
а вот в 2005 уже убрали все указатели а сделать решили как шарп тока на ссылках да я понимаю не надо задумыватся что использовать ссылку или указатель и код менее опасен это верно тока вот пока допетришь чаво там билли гейц затеял так уже новая 2008 появляется)))
 
P

Pasha

а вот в 2005 уже убрали все указатели а сделать решили как шарп тока на ссылках да я понимаю не надо задумыватся что использовать ссылку или указатель и код менее опасен
Это не ссылки, и не указатели, это хэндлы управляемых объектов. Синтаксис действительно поменялся в 2005-й студии, раньше надо было использовать __gc *. То, что работала прото * - случайность.
In Visual C++ 2002 and Visual C++ 2003, __gc * was used to declare an object on the managed heap. The ^ replaces __gc * in the new syntax.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!