Почему не работают кнопки (Visual C++)?







+3 +/-

Нажимаю на кнопки - и ничего не происходит. Должен выводиться результат, а по кнопке "По умолчанию" должны выводиться значения по умолчанию.

Мой код:

// Laba2-22Dlg.cpp : файл реализации

//

include "stdafx.h"

include "Laba2-22.h"

include "Laba2-22Dlg.h"

include "afxdialogex.h"

ifdef _DEBUG

define new DEBUG_NEW

endif

// Диалоговое окно CAboutDlg используется для описания сведений о приложении

class CAboutDlg : public CDialogEx

{

public:

CAboutDlg();

// Данные диалогового окна

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV

// Реализация

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)

END_MESSAGE_MAP()

// диалоговое окно CLaba222Dlg

CLaba222Dlg::CLaba222Dlg(CWnd* pParent /*=NULL*/)

: CDialogEx(CLaba222Dlg::IDD, pParent)

, m_edWay(0)

, m_edLitres(0)

, m_edPrice(0)

, m_edResult(0)

, m_edNum(0)

, m_edWay2(0)

, m_edLitres2(0)

, m_edPrice2(0)

, m_edResult2(0)

, m_edNum2(0)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CLaba222Dlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CLaba222Dlg, CDialogEx)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDOK, &CLaba222Dlg::OnBnClickedOk)

ON_EN_CHANGE(IDC_EDIT3, &CLaba222Dlg::OnEnChangeEdit3)

ON_BN_CLICKED(IDC_BUTTON1, &CLaba222Dlg::OnBnClickedButton1)

END_MESSAGE_MAP()

// обработчики сообщений CLaba222Dlg

BOOL CLaba222Dlg::OnInitDialog()

{

CDialogEx::OnInitDialog();

// Добавление пункта "О программе..." в системное меню.

// IDM_ABOUTBOX должен быть в пределах системной команды.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

BOOL bNameValid;

CString strAboutMenu;

bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

ASSERT(bNameValid);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Задает значок для этого диалогового окна. Среда делает это автоматически,

// если главное окно приложения не является диалоговым

SetIcon(m_hIcon, TRUE); // Крупный значок

SetIcon(m_hIcon, FALSE); // Мелкий значок

// TODO: добавьте дополнительную инициализацию

return TRUE; // возврат значения TRUE, если фокус не передан элементу управления

}

void CLaba222Dlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialogEx::OnSysCommand(nID, lParam);

}

}

// При добавлении кнопки свертывания в диалоговое окно нужно воспользоваться приведенным ниже кодом,

// чтобы нарисовать значок. Для приложений MFC, использующих модель документов или представлений,

// это автоматически выполняется рабочей областью.

void CLaba222Dlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // контекст устройства для рисования

SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);

// Выравнивание значка по центру клиентского прямоугольника

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Нарисуйте значок

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialogEx::OnPaint();

}

}

// Система вызывает эту функцию для получения отображения курсора при перемещении

// свернутого окна.

HCURSOR CLaba222Dlg::OnQueryDragIcon()

{

return static_cast(m_hIcon);

}

void CLaba222Dlg::OnBnClickedOk()

{

// TODO: добавьте свой код обработчика уведомлений

UpdateData(1);

m_edResult2 = (m_edWay2/100)*m_edLitres2*m_edPrice2*m_edNum; UpdateData(0);

//CDialogEx::OnOK();

}

void CLaba222Dlg::OnEnChangeEdit3()

{

// TODO: Если это элемент управления RICHEDIT, то элемент управления не будет

// send this notification unless you override the CDialogEx::OnInitDialog()

// function and call CRichEditCtrl().SetEventMask()

// with the ENM_CHANGE flag ORed into the mask.

// TODO: Добавьте код элемента управления

}

void CLaba222Dlg::OnBnClickedButton1()

{

{

m_edWay = 240; //Расстояние

m_edLitres = 8.4; //Расход

m_edPrice = 16.5; //Цена

m_edNum = 1; //Количество поездок

m_edResult = (m_edWay/100)*m_edLitres*m_edPrice*m_edNum;

UpdateData(0); //Вывести данные в редакторы

}

// TODO: добавьте свой код обработчика уведомлений

}

Профиль пользователя ANDRES Спросил: ANDRES   (рейтинг 29711) Категория: компьютеры и интернет

Ответов: 1

1 +/-
Лучший ответ

Я, к сожалению, не знаю С++, работаю с Visual Basic, но думаю, что кнопки устроены одинаково.

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

В VB она называется что-то типа Button1_Click.

Есть еще программы типа Button_MouseMove, которая срабатывает, когда курсор мыши наезжает на кнопку.

Есть и еще события, связанные с кнопками - отпускание, двойной клик, установка или снятие фокуса и некоторые другие.

Проверь, где у тебя находятся все твои части программы: на кнопках? Или просто в окне?

События на кнопках правильные? Может быть, ты вместо Click задал DblClick, и функция сработает при двойном нажатии?

Ответил на вопрос: Guenter  

Похожие вопросы

Спросил
2 Отв.
Как решать подобные задачи по ИВТ(Паскаль, подготовка к ЕГЭ)(см.)?
Ответ: Данные задачи относятся к заданиям ЕГЭ по информатике, суть которых - анализ кода программы, содержащей циклы и ветвления. От решающего задачу требуется проанализировать ход выполнения программы, для ... Читать далее...
Автор вопроса: Iranian, в категории | | |
Спросил Iranian
1 Отв.
Как зашифровать свое имя в двоичном коде?
Ответ: Если вы любитель мозговых штурмов и у вас масса свободного времени, то можно, используя Коды символов ASCII выразить своё имя, к примеру, в десятеричном ... Читать далее...
Автор вопроса: Burnier, в категории | | |
Спросил Burnier
2 Отв.
Что такое «класс» в программировании?
Ответ: Классами программисты описывают некие абстрактные типы данных. В классе также определяются свойства, данные и методы обработки данных. Классы можно объявлять ... Читать далее...
Автор вопроса: Carita, в категории | |
Спросил Carita
1 Отв.
Как получить оповещение о появлении на чужом сайте определенной фразы?
Ответ: Закажите у веб-программиста Парсер который будет постоянно проверять контентна сайте и проверять в нем наличие той самой ... Читать далее...
Автор вопроса: Crankpin, в категории | | | | |
Спросил Crankpin
3 Отв.
Как научиться писать компьютерные программы и зарабатывать на этом?
Ответ: Советую углубиться немного в другую отрасль - веб-программирования. Это очень выгодно и прибыльно. В среднем цена за сайт составляет от 3 до 5 тысяч рублей. ... Читать далее...
Автор вопроса: Contraction, в категории | |
Спросил Contraction
1 Отв.
Каково основное преимущество, получаемое при использовании функции?
Ответ: Функции позволяют делать одно и то же действие много раз подряд одинаково хорошо, в этом главное преимущество как функций, так и компьютеров в целом :) автор ... Читать далее...
Автор вопроса: Garboils, в категории |
Спросил Garboils
1 Отв.
Какой микроконтроллер выбрать новичку для начала?
Ответ: Хотел в начале предложить, что попроще, а потом подумал, что нет в этом смысла. Конечно если трудности пугают, то с простого легче начинать. Но как показывает ... Читать далее...
Автор вопроса: Reaping, в категории | | | | |
Спросил Reaping
1 Отв.
Как начинать самому учить язык программирования?
Ответ: Нет языка программирования - есть языки программирования! Какой именно язык вы хотите начать учить?! Дело в том, что все языки программирования отличаются ... Читать далее...
Автор вопроса: Sorcer, в категории