Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> События тыканья кнопк мыши :), почему не пашет? 
:(
    Опции темы
gepard
  Дата 7.6.2004, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Код

#include <afxwin.h>
class MainWindow:public CFrameWnd
{
public:
 MainWindow();
 ~MainWindow();
 afx_msg void OnLButtonDblClck(unsigned int, CPoint);
 afx_msg void OnRButtonDblClck(unsigned int, CPoint);
 afx_msg void OnKeyDown(unsigned int, unsigned int, unsigned int);
private:
 CStatic* Label;
 CButton* Button;
 CEdit*  Edit;
 DECLARE_MESSAGE_MAP();
};
BEGIN_MESSAGE_MAP(MainWindow, CFrameWnd)
ON_WM_LBUTTONDBLCLK()
ON_WM_RBUTTONDBLCLK()
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
void MainWindow::OnKeyDown(unsigned int, unsigned int, unsigned int)
{
AfxMessageBox("Key Button Down");
}
void MainWindow::OnLButtonDblClck(unsigned int, CPoint)
{
AfxMessageBox("Left Button Click");
}
void MainWindow::OnRButtonDblClck(unsigned int, CPoint)
{
AfxMessageBox("Right Button Click");
}
MainWindow::MainWindow()
{    
Create(0, "Still MFC Application!", WS_OVERLAPPEDWINDOW, rectDefault, 0, 0);
if (Label=new CStatic)
 Label->Create("It's Working!", WS_CHILD|WS_VISIBLE|SS_CENTER, CRect(10, 10, 100, 30), this, 0);
if (Button=new CButton)
 Button->Create("Push Me, plz", WS_CHILD|WS_VISIBLE|SS_CENTER, CRect(120, 10, 220, 50), this, 1);
if (Edit=new CEdit)
 Edit->Create(WS_CHILD|WS_VISIBLE|WS_BORDER, CRect(240, 10, 340, 50), this, 2);
}
MainWindow::~MainWindow()
{
if (Label) delete Label;
if (Button) delete Button;
if (Edit) delete Edit;
}
class Applications:public CWinApp
{
public:
 virtual int InitInstance();
};
int Applications::InitInstance()
{
m_pMainWnd=new MainWindow();
ASSERT(m_pMainWnd);
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return true;
};

Applications application;

Никак не могу понять: почему, когда я делаю двойной щелчок где-нибудь на созданном окне она не выдаёт сообщение?
Ногами не бить, я только начал учить MFC smile.gif


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 7.6.2004, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



потому что даблклик стопудово делается на CView-окне biggrin.gif


--------------------
user posted image
PM MAIL WWW   Вверх
gepard
Дата 8.6.2004, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Поясни. Не надо только орать на меня. Я ведь только начал.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 8.6.2004, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



CMainFrame - это окно-контейнер, содержащее:
1) неклиентскую область (заголовок окна, рамка)
2) тулбары, статусбар и меню (у каждого из них свой обработчик кликов мыши)
3) окно, производное от CView (растянуто по размеру оставшейся части CMainFrame, т.е. почти равное размерам главного окна)

Все свои события CView-окно (называемое также "видом" или "представлением") обрабатывает самостоятельно. Обработчик двойного клика нужно добавить именно в это окно, а не в фрейм.

Ещё вопрос по теме: пример, приведённый выше, был создан вручную, или с пом. AppWizard-а ?...


--------------------
user posted image
PM MAIL WWW   Вверх
gepard
Дата 8.6.2004, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



mr.DUDA
Цитата
Ещё вопрос по теме: пример, приведённый выше, был создан вручную, или с пом. AppWizard-а

Вручную.

Вот урок, с которого я писал: http://www.firststeps.ru/mfc/steps/r.php?3

Это сообщение отредактировал(а) gepard - 8.6.2004, 14:05


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 8.6.2004, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Тогда ясно. Пример сделан вручную, это есть гут. Но окно фрейма создано без стиля CS_DBLCLKS, а это есть не гут. Кроме того, перепутаны названия функций-обработчиков (вместо OnLButtonDblClk стоит OnLButtonDblClck), а это есть ещё хуже, т.к. макрос ON_WM_LBUTTONDBLCLK жёстко завязан на правильное имя функции.

Поэтому код правится и работает без проблем:
Цитата
#include <afxwin.h>

class MainWindow:public CFrameWnd
{
public:
   
MainWindow();
    ~
MainWindow();
   
afx_msg void OnLButtonDblClk(unsigned int, CPoint);
   
afx_msg void OnRButtonDblClk(unsigned int, CPoint);
   
afx_msg void OnKeyDown(unsigned int, unsigned int, unsigned int);
private:
   
CStatic* Label;
   
CButton* Button;
   
CEdit*  Edit;
   
DECLARE_MESSAGE_MAP();
};

BEGIN_MESSAGE_MAP(MainWindow, CFrameWnd)
   
ON_WM_LBUTTONDBLCLK()
   
ON_WM_RBUTTONDBLCLK()
   
ON_WM_KEYDOWN()
END_MESSAGE_MAP()

void MainWindow::OnKeyDown(unsigned int, unsigned int, unsigned int)
{
   
AfxMessageBox("Key Button Down");
}
void MainWindow::OnLButtonDblClk(unsigned int, CPoint)
{
   
AfxMessageBox("Left Button Click");
}
void MainWindow::OnRButtonDblClk(unsigned int, CPoint)
{
   
AfxMessageBox("Right Button Click");
}
MainWindow::MainWindow()
{   
   
Create(0, "Still MFC Application!", WS_OVERLAPPEDWINDOW, rectDefault, 0, 0);
   
if (Label=new CStatic)
       
Label->Create("It's Working!", WS_CHILD|WS_VISIBLE|SS_CENTER, CRect(10, 10, 100, 30), this, 0);
   
if (Button=new CButton)
       
Button->Create("Push Me, plz", WS_CHILD|WS_VISIBLE|SS_CENTER, CRect(120, 10, 220, 50), this, 1);
   
if (Edit=new CEdit)
       
Edit->Create(WS_CHILD|WS_VISIBLE|WS_BORDER, CRect(240, 10, 340, 50), this, 2);
}
MainWindow::~MainWindow()
{
   
if (Label) delete Label;
   
if (Button) delete Button;
   
if (Edit) delete Edit;
}

class Applications:public CWinApp
{
public:
   
virtual int InitInstance();
};

int Applications::InitInstance()
{
   
m_pMainWnd=new MainWindow();
   
ASSERT(m_pMainWnd);
   
m_pMainWnd->ShowWindow(SW_SHOW);
   
m_pMainWnd->UpdateWindow();
   
return true;
};

Applications application;



--------------------
user posted image
PM MAIL WWW   Вверх
gepard
Дата 9.6.2004, 04:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Блин, моя вина. wink.gif
Не досмотрел. В следующий раз 10000000 раз перепроверю.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.