2014 dxdy logo

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

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




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

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

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

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

 
 
 
 Re: Ламерский вопрос по поводу MFC
Сообщение18.04.2012, 06:34 
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 
Насколько я помню, в VS были всякие мастера. Щелкаем по своей кнопке, где-то в окне свойств этой кнопки имеется список возможных событий, для которых можно назначить обработчик. Щелкаем туда, появляется мастер, записываем имя класса и метода, который будет обработчиком, нажимаем ОК. Мастер добавляет сам метод и прописывает его в карту сообщений класса-обработчика. Карта сообщений -- набор макросов, который связывает сообщения с методом-обработчиком. Как-то коряво выразился :-) Все это можно и вручную делать, надо только образец иметь. Справки то нет?

 
 
 
 Re: Ламерский вопрос по поводу MFC
Сообщение18.04.2012, 12:23 
Вообще-то, обычно делается так:

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 
Да, я конечно имел ввиду MDI, опечатался.
Цитата:
1. Каким образом Вам удалось в MFC-проекте создать дотнетовский обработчик события:

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

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

 
 
 
 Re: Ламерский вопрос по поводу MFC
Сообщение18.04.2012, 14:10 
Maslov в сообщении #561439 писал(а):
001010001 в сообщении #561428 писал(а):
Может я ненароком сделал что-то, что делать было не нужно?
Скорее всего, Вы создали проект типа C++/CLR.

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

-- 18.04.2012, 15:52 --

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

 
 
 
 Re: Ламерский вопрос по поводу MFC
Сообщение20.04.2012, 23:16 
Читайте хелп/справку, как уже советовали. С++ язык используется в VS как для .Net проектов, так и для проектов, что были до .Net, когда ещё не было никаких Фреймворков.

 
 
 
 Re: Ламерский вопрос по поводу MFC
Сообщение21.04.2012, 00:01 
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 
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 
Это человека сразу - из под .Net - и в API его бросает, в набежавшего Петцольд? :shock: Не выплывет же! Ему ведь пока не надо (вроде) все в тонкостях действия понимать, пускай попробует все же конкретно с MFC разобраться. У Вас вот аналогии с Windows API, а у топикстартера, может, аналогии с .Net появятся...

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


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