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

Тема в разделе "MS Visual C++", создана пользователем metal, 10 мар 2008.

  1. metal

    metal Гость

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Вы нашли в VS никому не известный генератор форм? А вообще, с такой постановкой вопроса, ошибка в 17 строке
     
  3. UrianDy

    UrianDy Гость

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

    metal Гость

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

    извините но какой не известный генератор форм????
    вот код из МСДН который я приводил выше)))
    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;
     
  5. Pasha

    Pasha Гость

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

    metal Гость

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

    gamecreator Гость

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

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

    Pasha Гость

    Попробуй вот так:
    Код (Text):
    Form2^ form2 = new Form2;
    form2.show();
     
  9. metal

    metal Гость

    если так делать то компилятор говорит что слева от метода должно быть либо класс либо объединение или что то ещё хотя модуль form2.h подключен, мне тут говорят что невозможно отобразить вторую форму только рисовать а я почему то не верю))), может по тому что долго в дельфи кодил))))


    а вот после этого ваще страшно в окно компилятора смотреть))
    вот сделал так
    System::Windows::Forms::Form^ Form2 ;
    form2->Show();
    или
    Form2->Show();

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

    Pasha Гость

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

    metal Гость

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

    Pasha Гость

    Это не ссылки, и не указатели, это хэндлы управляемых объектов. Синтаксис действительно поменялся в 2005-й студии, раньше надо было использовать __gc *. То, что работала прото * - случайность.
     
Загрузка...

Поделиться этой страницей