2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Ламерский вопрос по поводу MFC
Сообщение17.04.2012, 17:45 


03/04/12
11
Всем привет. Пользую по службе MFC, в котором до этого не работал (до этого только под .NET). Собственно, возник дурацкий вопрос. Как добавить обработку кнопки в форме? То есть создался метод
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
в котором я понаписал исполняемый код. А как сделать, чтобы на неё нажать-то можно было?
Я понял, как это делать, если приложение диалоговое. А если просто MID?

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение17.04.2012, 18:15 
Заслуженный участник


09/08/09
3438
С.Петербург
001010001 в сообщении #561130 писал(а):
Пользую по службе MFC, в котором до этого не работал (до этого только под .NET). Собственно, возник дурацкий вопрос. Как добавить обработку кнопки в форме? То есть создался метод
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
в котором я понаписал исполняемый код

Стесняюсь спросить, какого типа проект Вы создавали?

Обработчик кнопки у Вас дотнетовский, и я не очень понимаю, при чем тут вообще MFC.

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение18.04.2012, 06:34 


03/04/12
11
Maslov в сообщении #561163 писал(а):
001010001 в сообщении #561130 писал(а):
Пользую по службе MFC, в котором до этого не работал (до этого только под .NET). Собственно, возник дурацкий вопрос. Как добавить обработку кнопки в форме? То есть создался метод
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
в котором я понаписал исполняемый код

Стесняюсь спросить, какого типа проект Вы создавали?

Обработчик кнопки у Вас дотнетовский, и я не очень понимаю, при чем тут вообще MFC.

Ну, создавал обычный MFC проект в Visual Studio. Работаю с C++, причём задание делать именно в VS и c помощью MFC. Я собственно не понимаю такой простой вопрос: после того, как я нарисовал кнопку на форме, как сделать так, чтобы на неё можно было нажать. Всё.

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение18.04.2012, 11:11 


20/12/11
44
Насколько я помню, в VS были всякие мастера. Щелкаем по своей кнопке, где-то в окне свойств этой кнопки имеется список возможных событий, для которых можно назначить обработчик. Щелкаем туда, появляется мастер, записываем имя класса и метода, который будет обработчиком, нажимаем ОК. Мастер добавляет сам метод и прописывает его в карту сообщений класса-обработчика. Карта сообщений -- набор макросов, который связывает сообщения с методом-обработчиком. Как-то коряво выразился :-) Все это можно и вручную делать, надо только образец иметь. Справки то нет?

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение18.04.2012, 12:23 
Заслуженный участник


09/08/09
3438
С.Петербург
Вообще-то, обычно делается так:

1. Создаем кнопку (программно или в редакторе диалогов); назначаем ей какой-то ID ресурса, например, IDC_HELLO.

2. В соответствующий заголовочный файл (например, CYourWindow.h) включаем описание обработчика, типа
Код:
class CYourWindow: public <родительский класс>
    ...
private:
    afx_msg void OnBnHelloClicked();
    ...

3. В файле CYourWindow.cpp размещаем таблицу диспетчеризации
Код:
BEGIN_MESSAGE_MAP(CYourWindow, <родительский класс>) 
    ...
    ON_BN_CLICKED(IDC_HELLO,  &CYourWindow::OnBnHelloClicked)
    ...
END_MESSAGE_MAP()
и сам обработчик
Код:
void CYourWindow::OnBnHelloClicked()
{
    ....
}


Правда, я не понимаю двух вещей:
1. Каким образом Вам удалось в MFC-проекте создать дотнетовский обработчик события:
001010001 в сообщении #561130 писал(а):
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
2. Что такое MID? Может быть, имелся в виду MDI (Multiple Document Interface)?

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение18.04.2012, 13:47 


03/04/12
11
Да, я конечно имел ввиду MDI, опечатался.
Цитата:
1. Каким образом Вам удалось в MFC-проекте создать дотнетовский обработчик события:

Если честно, сам не знаю. Я всё делаю методом тыка, ибо среда незнакомая. Просто создал форму, просто нарисовал на ней кнопку, просто тыкнул дважды по ней и перешёл на этот метод, который создался в основном файле формы (form1.h).
Всё, что вы написали выше, я делал, когда у меня был Dialog base project. Что делать в случае MDI - я вот и не знаю. Может я ненароком сделал что-то, что делать было не нужно?

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение18.04.2012, 14:08 
Заслуженный участник


09/08/09
3438
С.Петербург
001010001 в сообщении #561428 писал(а):
Может я ненароком сделал что-то, что делать было не нужно?
Скорее всего, Вы создали проект типа C++/CLR.
001010001 в сообщении #561428 писал(а):
Я всё делаю методом тыка, ибо среда незнакомая.
А книжку или help почитать -- религия не позволяет?

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение18.04.2012, 14:10 


03/04/12
11
Maslov в сообщении #561439 писал(а):
001010001 в сообщении #561428 писал(а):
Может я ненароком сделал что-то, что делать было не нужно?
Скорее всего, Вы создали проект типа C++/CLR.

Так. То есть придётся пересоздавать заново? А какой надо создавать?

-- 18.04.2012, 15:52 --

Задание состояло в следующем: надо свести решение задачи Дирихле к решению СЛАУ. Для этого я написал пока(только) метод Зейделя. Ну, помимо всяких необходимых функций, вроде правой части и тд. При этом, мне надо рисовать два этаких графика: на первом приближенное решение, на втором точное. При этом, в зависимости от значения в узле, я крашу соотв. квадратик в соотв. цвет - чем больше, тем краснее. Собственно, я нарисовал форму, записал в метод для кнопки метод Зейделя и пытаюсь скомпилировать. По идее должна быть форма с работающей кнопкой, которая по щелчку рисует в двух боксах два цветовых графика. Но на деле ничего не происходит, не могу понять в чём причина. Я приложу проект, Maslov, если у вас будет время - посмотрите и скажите что я делаю не так.

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение20.04.2012, 23:16 


03/10/06
826
Читайте хелп/справку, как уже советовали. С++ язык используется в VS как для .Net проектов, так и для проектов, что были до .Net, когда ещё не было никаких Фреймворков.

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение21.04.2012, 00:01 


17/05/11
158
001010001 в сообщении #561354 писал(а):
Maslov в сообщении #561163 писал(а):
001010001 в сообщении #561130 писал(а):
Пользую по службе MFC, в котором до этого не работал (до этого только под .NET). Собственно, возник дурацкий вопрос. Как добавить обработку кнопки в форме? То есть создался метод
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
в котором я понаписал исполняемый код

Стесняюсь спросить, какого типа проект Вы создавали?

Обработчик кнопки у Вас дотнетовский, и я не очень понимаю, при чем тут вообще MFC.

Ну, создавал обычный MFC проект в Visual Studio. Работаю с C++, причём задание делать именно в VS и c помощью MFC. Я собственно не понимаю такой простой вопрос: после того, как я нарисовал кнопку на форме, как сделать так, чтобы на неё можно было нажать. Всё.


такой вид обработчика присущ CLR :o

а по сабжу, в MFC кардинально другие концепции. Я бы советовал использовать библиотеку Qt - более актуально. На днях ещё и 5 версия вышла.

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение21.04.2012, 00:21 
Заслуженный участник


09/08/09
3438
С.Петербург
001010001 в сообщении #561441 писал(а):
Maslov, если у вас будет время - посмотрите и скажите что я делаю не так
Даже не знаю, с чего начать... :)
Насколько я понял, Вы создали MFC-приложение с MDI и прочими причиндалами, а потом просто добавили в него дотнетовскую форму. Так не получится: вызвать эту форму Вы не сможете. Начните с создания простого dialog-based MFC-проекта и попробуйте добиться, чтобы Ваш код для рисования графиков заработал. Правда, для этого его придется переписать.

Только учтите, что в отличие от Windows.Forms в .Net, MFC -- это достаточно тонкая прослойка над Windows API, и без понимания принципов работы этого самого API Вам не обойтись. Поэтому начать, на мой взгляд, следует с чтения какой-нибудь книжки по программированию в Windows (например Ч.Петцольд. Программирование для Windows 95.), потом почитать про MFC, и только после этого браться за Вашу задачу.

-- Сб апр 21, 2012 01:28:14 --

coll3ctor в сообщении #562312 писал(а):
в MFC кардинально другие концепции. Я бы советовал использовать библиотеку Qt - более актуально.
Добровольно люди с .Net на MFC не переходят :). Скорее всего, существуют внешние обстоятельства, над которыми ТС не властен.

 Профиль  
                  
 
 Re: Ламерский вопрос по поводу MFC
Сообщение22.04.2012, 15:53 


26/02/12
50
Это человека сразу - из под .Net - и в API его бросает, в набежавшего Петцольд? :shock: Не выплывет же! Ему ведь пока не надо (вроде) все в тонкостях действия понимать, пускай попробует все же конкретно с MFC разобраться. У Вас вот аналогии с Windows API, а у топикстартера, может, аналогии с .Net появятся...

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

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



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

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


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

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