Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 22.02.2010, 20:47   #1
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
MFC

Кто-нибудь юзал?

Дано:
Окно с кнопкой.
И то и другое имеют свои классы, дерив..ова..ные (derived короче) от CButton и CFrameWnd.

У окна есть Message Map для отлова сообщения о нажатии кнопки.
В хидере окна:
//{{AFX_MSG(CMyDialog)
  afx_msg void OnButtonPressed();
//}}AFX_MSG 
DECLARE_MESSAGE_MAP()
в реализации:

BEGIN_MESSAGE_MAP(CMyDialog, CFrameWnd)
//{{AFX_MSG(CMyDialog)
 ON_COMMAND(7,OnButtonPressed)
//}}AFX_MSG
END_MESSAGE_MAP()

void CMyDialog::OnButtonPressed()
{
 
}
И собсно вот! В послденей функции надо получить поинтер на нажатую кнопку, от которой по идее шёл месседж. Как это сделать?

Да, я знаю, что

21.02.2010 17:33:48, Mr F
MFC запутанное говно
21.02.2010 18:58:22,
+100

---

22.02.2010 19:32:22,
В МФЦ там все как-то по другому и через жопу сделано

---

22.02.2010 19:12:05,
ты извращенец!
но тем не менее требуется так вот сделать


-----
хм, если овверрайдить windowproc окна, можно словить мессагу
и по идее там должно быть
lParam
Identifies the control that sends the message if the message is from a control. Otherwise, lParam is 0.
и вроде он как раз отличается в зависимости от нажатой кнопки
Но, я не могу юзать его как CWnd* (вылетает), что делать?


----
ахаха, я крут, проблема решена

LRESULT COWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	if (message == WM_COMMAND)
	if (HIWORD(wParam) == BN_CLICKED)
	{
		if (LOWORD(wParam)==7) //только fbutton'ы
		{
			fbutton* c=(fbutton*)CWnd::FromHandle( ((HWND)(lParam)) );
			((FARPROC)c->func)();
		}
	}

	return CWnd::WindowProc(message, wParam, lParam);
}
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер

Последний раз редактировалось Mr_F_, 22.02.2010 в 22:14.
(Offline)
 
Ответить с цитированием
Старый 23.02.2010, 20:21   #2
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений
(для 142 пользователей)
Ответ: MFC

Сообщение от Mr_F_ Посмотреть сообщение
Кто-нибудь юзал?

Дано:
Окно с кнопкой.
И то и другое имеют свои классы, дерив..ова..ные (derived короче) от CButton и CFrameWnd.

У окна есть Message Map для отлова сообщения о нажатии кнопки.
В хидере окна:
//{{AFX_MSG(CMyDialog)
  afx_msg void OnButtonPressed();
//}}AFX_MSG 
DECLARE_MESSAGE_MAP()
в реализации:

BEGIN_MESSAGE_MAP(CMyDialog, CFrameWnd)
//{{AFX_MSG(CMyDialog)
 ON_COMMAND(7,OnButtonPressed)
//}}AFX_MSG
END_MESSAGE_MAP()

void CMyDialog::OnButtonPressed()
{
 
}
И собсно вот! В послденей функции надо получить поинтер на нажатую кнопку, от которой по идее шёл месседж. Как это сделать?

Да, я знаю, что



но тем не менее требуется так вот сделать


-----
хм, если овверрайдить windowproc окна, можно словить мессагу
и по идее там должно быть
lParam
Identifies the control that sends the message if the message is from a control. Otherwise, lParam is 0.
и вроде он как раз отличается в зависимости от нажатой кнопки
Но, я не могу юзать его как CWnd* (вылетает), что делать?


----
ахаха, я крут, проблема решена

LRESULT COWnd::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	if (message == WM_COMMAND)
	if (HIWORD(wParam) == BN_CLICKED)
	{
		if (LOWORD(wParam)==7) //только fbutton'ы
		{
			fbutton* c=(fbutton*)CWnd::FromHandle( ((HWND)(lParam)) );
			((FARPROC)c->func)();
		}
	}

	return CWnd::WindowProc(message, wParam, lParam);
}
"Брось бяку!" Открой для себя Qt,жизнь станет просче,гарантирую!
(Offline)
 
Ответить с цитированием
Старый 24.02.2010, 09:31   #3
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: MFC

что такое Qt
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 24.02.2010, 09:35   #4
Igor'
ПроЭктировщик
 
Аватар для Igor'
 
Регистрация: 15.10.2009
Сообщений: 190
Написано 47 полезных сообщений
(для 142 пользователей)
Ответ: MFC

Сообщение от Mr_F_ Посмотреть сообщение
что такое Qt
Qt - A cross-platform application and UI framework
http://qtlib.ru/
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (24.02.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:49.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com