Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: Студент
Рейтинг: 886
∙ повысить рейтинг >>
Micren
Статус: Практикант
Рейтинг: 435
∙ повысить рейтинг >>
Серг aka umbSSE
Статус: 10-й класс
Рейтинг: 236
∙ повысить рейтинг >>

∙ / КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1359 от 25.07.2009, 09:05
Администратор рассылки: Dr_Andrew, Модератор
В рассылке: подписчиков - 637, экспертов - 157
В номере: вопросов - 1, ответов - 1

Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
оценить выпуск >>

Вопрос № 170597: Здраствуйте Уважаемые эксперты. Я не могу разобраться с MS Visual C++ 2008. А точнее с формами. Что мне нужно написать для того чтобы при нажатии на кнопку, которая уже имеется в программе выполнялся вывод текста в форме. где нибудь. например в прав...



Вопрос № 170597:

Здраствуйте Уважаемые эксперты. Я не могу разобраться с MS Visual C++ 2008. А точнее с формами. Что мне нужно написать для того чтобы при нажатии на кнопку, которая уже имеется в программе выполнялся вывод текста в форме. где нибудь. например в правом углу экрана. Или же вывод значения переменной. Подключал библиотеку <iostream> и пользовался std::cout компилятор жаловался на эту конструкцию. И я не понимаю как с помощью например ее вывести текст в форму. Помогите пожалуйста. В ссылке код программы.

Отправлен: 20.07.2009, 08:46
Вопрос задал: Dimon4ik, 1-й класс
Всего ответов: 1
Страница вопроса >>


Отвечает Micren, Практикант :
Здравствуйте, Dimon4ik.
Та технология которую Вы используете называется Windows Forms. Это часть более обширной технологии .NET Framework. Стандарт C++ не поддерживает эту технологию. Тот язык на котором Вы программируете это расширение Microsoft называемое C++/CLI. Если Вы решили программировать под .NET то и средства необходимо использовать соответствующие.
std::cout Вам здесь не поможет. Этот потоковый класс предназначен для вывода в стандартный поток вывода. Кроме того смешивать в программе .NET управляемый и неуправляемый(native) код хоть и можно но крайне не желательно. В .NET Framework достаточно средств, чтоб обойтись без этого.
Писать приложения Windows Forms можно как используя дизайнер Visual Studio так и полностью вручную.
Для того, чтоб программа реагировала на нажатие кнопки необходимо создать обработчик события нажатия этой же кнопки. Для этого достаточно клацнуть 2 раза в дизайнере на этой кнопке и после этого наполнить обработчик тем функциона лом какой Вам необходим.
Код сгенерированный дизайнером:
Код:

#pragma once


namespace My170597 {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}

protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Button^ calculateButton;
protected:

protected:

protected:
private: System::Windows::Forms::Label^ resultLabel;

private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::NumericUpDown^ valueNumericUpDown;
private: System::Windows::Forms::GroupBox^ groupBox1;

private:
/// <summary>
/// Required designer variable.
/// < /summary>
System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->calculateButton = (gcnew System::Windows::Forms::Button());
this->resultLabel = (gcnew System::Windows::Forms::Label());
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->valueNumericUpDown = (gcnew System::Windows::Forms::NumericUpDown());
this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->valueNumericUpDown))->BeginInit();
this->groupBox1->SuspendLayout();
this->SuspendLayout();
//
// calculateButton
//
// Это сгенерировано для кнопки
this->calculateButton->Location = System::Drawing::Point(85, 7 1);
this->calculateButton->Name = L"calculateButton";
this->calculateButton->Size = System::Drawing::Size(75, 23);
this->calculateButton->TabIndex = 0;
this->calculateButton->Text = L"Вычислить";
this->calculateButton->UseVisualStyleBackColor = true;

// Регистрация обработчика для события Click
this->calculateButton->Click += gcnew System::EventHandler(this, &Form1::calculateButto_Click);

//
// resultLabel
//
this->resultLabel->Borderstyle="System::Windows::Forms::BorderStyle::Fixed3D;"
this->resultLabel->Location = System::Drawing::Point(137, 34);
this->resultLabel->Margin = System::Windows::Forms::Padding(3);
this->resultLabel->Name = L"resultLabel";
this->resultLabel->Size = System::Drawing::Size(100, 23);
this->resultLabel->TabIndex = 1;
this->resultLabel-> ;TextAlign = System::Drawing::ContentAlignment::MiddleLeft;
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(8, 14);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(58, 13);
this->label1->TabIndex = 3;
this->label1->Text = L"Значение:";
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(140, 14);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(62, 13);
this->label2->TabIndex = 4;
this->label2->Text = L"Результат:";
//
// valueNumericUpDown
//
this->valueNumericUpDown->Location = System::Drawing::Point(11, 35);
this->valueNumericUpDown->Name = L"valueNumericUpDown&qu ot;;
this->valueNumericUpDown->Size = System::Drawing::Size(93, 20);
this->valueNumericUpDown->TabIndex = 5;
//
// groupBox1
//
this->groupBox1->Controls->Add(this->calculateButton);
this->groupBox1->Controls->Add(this->valueNumericUpDown);
this->groupBox1->Controls->Add(this->label2);
this->groupBox1->Controls->Add(this->resultLabel);
this->groupBox1->Controls->Add(this->label1);
this->groupBox1->Location = System::Drawing::Point(12, 12);
this->groupBox1->Margin = System::Windows::Forms::Padding(10);
this->groupBox1->Name = L"groupBox1";
this->groupBox1->Size = System::Drawing::Size(245, 100);
this->groupBox1->TabIndex = 6;
this->groupBox1->TabStop = false;
this->groupBox1->Text = L"Sqr(X)";
//
// Form1
//
this-> ;AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->AutoSize = true;
this->AutoSizeMode = System::Windows::Forms::AutoSizeMode::GrowAndShrink;
this->ClientSize = System::Drawing::Size(269, 123);
this->Controls->Add(this->groupBox1);
this->Name = L"Form1";
this->Text = L"Sqr(X)";
(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->valueNumericUpDown))->EndInit();
this->groupBox1->ResumeLayout(false);
this->groupBox1->PerformLayout();
this->ResumeLayout(false);

}
#pragma endregion
// Собственно обработчик
private: System::Void calculateButto_Click(System::Object^ sender, System::EventArgs^ e) {
// Пользоваться будем типами .NET, а не native
System::Decimal value=valueNumericUpDown->Value;
resultLabel ->Text=(value*value).ToString();
}
};
}

Ответ отправил: Micren, Практикант
Ответ отправлен: 20.07.2009, 10:33

Оценка ответа: 5

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252361 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
    оценить выпуск >>

    подать вопрос экспертам этой рассылки >>

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.5 от 08.07.2009

    В избранное