2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Программирование Microsoft Visual C++
Сообщение04.12.2011, 23:23 
Аватара пользователя


10/06/09
68
Новомосковск
Всем добрый день!
При программировании в 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 


01/07/08
836
Киев
Вот пример в 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 
Заслуженный участник


27/04/09
28128
Нет, hurtsy, они именно не экземпляры, а классы.

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

 Профиль  
                  
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 18:23 
Заслуженный участник


09/08/09
3438
С.Петербург
Lokkie, должно работать. Сделал именно так, как у Вас написано: вторая форма показывается.

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

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

 Профиль  
                  
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 18:43 
Аватара пользователя


10/06/09
68
Новомосковск
Maslov в сообщении #511795 писал(а):
Lokkie, должно работать. Сделал именно так, как у Вас написано: вторая форма показывается.

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

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


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

 Профиль  
                  
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 19:03 
Заслуженный участник


09/08/09
3438
С.Петербург
Странно. Проверил под VS 2008 Professional (Express у меня нет): тоже все работает.

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

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

 Профиль  
                  
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 19:22 
Аватара пользователя


10/06/09
68
Новомосковск
Сделал новый проект с одной кнопкой, ей вызываю вторую форму тем-же методом, #include "Form2.h" имеется. Для этого проекта VC выдаёт ошибки: Form2 - необъявленный идентификатор, f2-необъявленный идентификатор. Что-то я неправильно делаю, только что не понимаю. В Form1 #include "Form2.h" должен стоять перед определением using namespace, правильно?

 Профиль  
                  
 
 Re: Программирование Microsoft Visual C++
Сообщение05.12.2011, 19:32 
Заслуженный участник


09/08/09
3438
С.Петербург
У меня 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 
Аватара пользователя


10/06/09
68
Новомосковск
Да, вставляю в Form1. Я переустановил VC, всё работает. Огромное спасибо Вам за помощь! :-)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group