![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#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. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 25.12.2010
Сообщений: 11
|
![]()
Все разобрался с пунктом 5.
Пожалуйста объясните как добавить горячую клавишу. Последний раз редактировалось Ялок; 25.12.2010 в 22:31. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Здравствуйте!!!!!!!! | Адвокат | Помощь студентам | 0 | 13.05.2010 15:33 |