Потому что класс окна в WinAPI и С++ класс несколько разные понятия. И пытаться "отнаследовать" класс окна чистейшей воды непонимание матчасти. Вопрос в том, какую задачу Вы перед собой ставите?
// глоб. переменная – для хранения адреса старой оконной функции
FARPROC OldWndProc;
// объявление новой оконной функции
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
. . .
стоп а разве в WinApi, Button как класс? Тоесть как класс, от которого можно наследоватся? Вроде там можно только создавать уже кнопки, и обрабатывать их сообщения. Что увеличивает код в разы…
Если не критично само WinApi, то пользуйся MFC…Там это можно 100%
28 февраля 2009 в 2:05
Спасибо за помощь.
28 февраля 2009 в 2:01
Читайте Петзольда и Румянцева на этот счет.
Посоветовал бы Рихтера, но у него по поводу GUI нет ничего.
Виктор Коновалов, +1
28 февраля 2009 в 1:02
"…чистейшей воды непонимание матчасти"
если бы понимал, не спрашивал.
27 февраля 2009 в 22:05
Потому что класс окна в WinAPI и С++ класс несколько разные понятия. И пытаться "отнаследовать" класс окна чистейшей воды непонимание матчасти. Вопрос в том, какую задачу Вы перед собой ставите?
27 февраля 2009 в 22:05
погуглите насчет субклассов и суперклассов
27 февраля 2009 в 22:05
вот пример если несудьба спросить у гугля:
// глоб. переменная – для хранения адреса старой оконной функции
FARPROC OldWndProc;
// объявление новой оконной функции
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
. . .
. . .
// <— начало фрагмента кода некоторой функции —
//создание суперкласса "button"
WNDCLASS wc;
GetClassInfo(hInstance,"button",&wc);
wc.lpszClassName="beepbutton";
wc.hInstance=hInstance;
OldWndProc=(FARPROC)wc.lpfnWndProc;
wc.lpfnWndProc=(WNDPROC)WndProc;
RegisterClass(&wc);
HWND hWnd=CreateWindow("beepbutton","superclassing",WS_VISIBLE|BS_CENTER,
100,100,200,50,NULL,NULL,hInstance,NULL);
// — конец фрагмента кода некоторой функции —>
. . .
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_LBUTTONDOWN: MessageBeep(-1);
default: return CallWindowProc(OldWndProc,hWnd,msg,wParam,lParam);
}
return 0l;
}
27 февраля 2009 в 21:01
Почему нельзя наследовать от button в WinApi ?
27 февраля 2009 в 21:00
Зачем? Интересно.
Как это сделать MFC ?
27 февраля 2009 в 20:03
стоп а разве в WinApi, Button как класс? Тоесть как класс, от которого можно наследоватся? Вроде там можно только создавать уже кнопки, и обрабатывать их сообщения. Что увеличивает код в разы…
Если не критично само WinApi, то пользуйся MFC…Там это можно 100%
Вообще зачем это???
27 февраля 2009 в 20:02
Пишет 'Button' : base class undefined
27 февраля 2009 в 20:02
Может надо использовать какое-то пространство имен, но не могу найти какое.