Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2010, 16:42   #1
Ялок
Пользователь
 
Регистрация: 25.12.2010
Сообщений: 11
По умолчанию Всем здравствуйте. С++

Задание дано следующее:

1)Разработать одноконное приложение.
2)Обработать сообщение правой кнопки мыши.
3)Добавить горячую клавишу для обработки следующего сообщения.
4) Еще раз Обработать сообщение правой кнопки мыши.
5)Обработать сообщение WM_CLOSE.

Проблемы с пунктом 3 и 5. Подскажите как их реализовать.

Сам код без пунктов 3,4.

Вот какая проблема при нажатии крестика для закрытия окна, у меня выводит надпись что окно закрывается, дальше нажимаю Ок. Но оно не закрывается.
Подскажите в чем может быть проблема. Где и что нужно изменить?



#include "afxwin.h" // MFC Основные и стандартные компоненты
#define IDC_MYBUTTON 100 // Идентификатор кнопки
#define IDC_MYEDIT 102 // Идентификатор поля редактирования



class CMainWnd : public CFrameWnd
{
public:
CMainWnd();

afx_msg void OnRButtonDown(UINT, CPoint);
afx_msg void OnClose(); // виртуальная процедура ответа на нажатия крестика для закрытия окна

~CMainWnd(); // деструктор
private:
CStatic* MyStatic;
CButton* MyButton;
CEdit* MyEdit;
DECLARE_MESSAGE_MAP(); // таблица откликов
};


BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd) // таблица откликов на сообщения

ON_WM_RBUTTONDOWN()
ON_WM_CLOSE() // реакция на нажятие крестика при закрытии окна


END_MESSAGE_MAP()

void CMainWnd::OnRButtonDown(UINT,CPoint )
{
AfxMessageBox(" Нажата правая кнопка мыши ");

}
void CMainWnd::OnClose()
{
AfxMessageBox("Закрытие окна"); // Для закрытия окна


}





CMainWnd::CMainWnd()
{
Create(NULL,"Step2",WS_OVERLAPPEDWI NDOW,rectDefault,
NULL,NULL);// Создать окно программы
// оператор new по умолчанию в случае ошибки вернет NULL
// проверка указателя на NULL дает возможность избавиться от дальнейших ошибок
MyStatic = new CStatic();
if (MyStatic!=NULL) MyStatic->Create("MyStatic",WS_CHILD|WS_VISI BLE|SS_CENTER,
CRect(10,10,100,50),this); // создали
MyButton = new CButton();
if (MyButton!=NULL) MyButton->Create("MyButton",WS_CHILD|WS_VISI BLE|SS_CENTER,
CRect(120,10,220,50),this,IDC_MYBUT TON);
MyEdit = new CEdit();
if (MyEdit!=NULL) MyEdit->Create(WS_CHILD|WS_VISIBLE|WS_BORD ER,
CRect(240,10,340,50),this,IDC_MYEDI T);
}

CMainWnd::~CMainWnd()
{
if (MyStatic!=NULL) delete MyStatic; // удалить динамический объект
if (MyButton!=NULL) delete MyButton; // удалить динамический объект
if (MyEdit!=NULL) delete MyEdit; // удалить динамический объект
}




class CMyApp : public CWinApp
{
public:
CMyApp(); //конструктор по умолчанию
virtual BOOL InitInstance();//стандартная инициализация
};

CMyApp::CMyApp() // конструктор главного класса приложения
{}

BOOL CMyApp::InitInstance() // стандартная инициализация
{
m_pMainWnd=new CMainWnd(); // создать класс окна
ASSERT(m_pMainWnd); // проверить его правильность
m_pMainWnd->ShowWindow(SW_SHOW);// Показать окно
m_pMainWnd->UpdateWindow(); // Обновить окно
return TRUE; // Вернуть что все нормально
};

CMyApp theApp; // запуск приложения

Последний раз редактировалось Ялок; 25.12.2010 в 21:30.
Ялок вне форума Ответить с цитированием
Старый 25.12.2010, 21:32   #2
Ялок
Пользователь
 
Регистрация: 25.12.2010
Сообщений: 11
По умолчанию

Все разобрался с пунктом 5.
Пожалуйста объясните как добавить горячую клавишу.

Последний раз редактировалось Ялок; 25.12.2010 в 22:31.
Ялок вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Здравствуйте!!!!!!!! Адвокат Помощь студентам 0 13.05.2010 15:33