2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Программирование Microsoft Visual C++
Сообщение04.12.2011, 23:23 
Аватара пользователя
Всем добрый день!
При программировании в Microsoft Visual C++ столкнулся с такой проблемой: пытаюсь вызвать из основной формы Form1 дополнительную форму Form2. Вызов должен осуществляться кнопкой.
Метод вызова делаю следующим образом:

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
Form2 ^f2 = gcnew Form2();
f2->Show();
}
Метод приводистя в книге Б. Пахомова MS Visual C++ и должен вызывать Form2 в обычном (немодальном) режиме. Пока метод не работает!
Подскажите, пожалуйста, есть ли иные способы вызвать форму в VC++? Или, может, объясните, почему
метод не работает? Спасибо!

 
 
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 16:31 
Вот пример в Google по запросу gcnew
Цитата:
Код:
// example2.cpp : main project file.
// compile with /clr

#include "stdafx.h"
using namespace System;
value class Boxed {
    public:
        int i;
};

int main()
{
    Boxed^ y = gcnew Boxed;
    y->i = 32;
    System::Console::WriteLine(y->i);
    return 0;
}

Мне кажется, что Form1 и Form2 не являются типами, а просто экземпляры класса. С уважением,

 
 
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 17:29 
Нет, hurtsy, они именно не экземпляры, а классы.

Странно, что не работает. По идее, всё правильно. Может, надо было что-то ещё у f2 вызвать перед Show()?

 
 
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 18:23 
Lokkie, должно работать. Сделал именно так, как у Вас написано: вторая форма показывается.

Стесняюсь спросить: а при построении никаких ошибок не выдается? :)

Какая у Вас версия Visual Studio?

 
 
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 18:43 
Аватара пользователя
Maslov в сообщении #511795 писал(а):
Lokkie, должно работать. Сделал именно так, как у Вас написано: вторая форма показывается.

Стесняюсь спросить: а при построении никаких ошибок не выдается? :)

Какая у Вас версия Visual Studio?


В том и дело, что никаких ошибок не показывает. После компиляции первая форма работает, а вторая не вызывается. Студия VC++ 2008 Express. Вторую форму в проект добавляю так: Проект->Добавить новый элемент->Форма Windows Form. После присваивания имени форма появляется в дереве проекта. По идее она должна быть подключена к Form1, но #include "Form2.h", почему-то, не срабатывает, даже странно, сам теряюсь в догадках.

 
 
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 19:03 
Странно. Проверил под VS 2008 Professional (Express у меня нет): тоже все работает.

Что значит
Lokkie в сообщении #511807 писал(а):
#include "Form2.h", почему-то, не срабатывает
?

(без #include ошибку при компиляции должна давать)

 
 
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 19:22 
Аватара пользователя
Сделал новый проект с одной кнопкой, ей вызываю вторую форму тем-же методом, #include "Form2.h" имеется. Для этого проекта VC выдаёт ошибки: Form2 - необъявленный идентификатор, f2-необъявленный идентификатор. Что-то я неправильно делаю, только что не понимаю. В Form1 #include "Form2.h" должен стоять перед определением using namespace, правильно?

 
 
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 19:32 
У меня Form1.h выглядит так:
Код:
#pragma once

#include "Form2.h"

namespace WinForm2008 {

    using namespace System;
    ...

А Вы #include "Form2.h" точно в Form1.h вставляете?

 
 
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 19:58 
Аватара пользователя
Да, вставляю в Form1. Я переустановил VC, всё работает. Огромное спасибо Вам за помощь! :-)

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group