Привет, может кто знает как решить вопрос. Создаю через визард класс производный от CWnd.. содаю в нем руками функцию CreateWnd в которой пытаюсь создать окно(именно окно) функцией CWnd::Create. Регистрирую класс окна (WNDCLASS) и тут проблема мне надо указать имя функции обработки сообщения, хочу связать с картой сообщений. Прочитал статью "Блуждания по лабиринту маршрутизации сообщений и команд в MFC"
http://www.rsdn.ru/article/mfc/maze.xml Вроде как есть функция в катре сообщений AfxWndProc указываю ее... класс регистрируется окно не создается.... вроде есть еше CWnd::WindowProc но она чисто виртуальная, а реализовывать ее не надо, так как есть карта сообщений которую нужно юзать.
Поискал по поиску запросами типа "Карта сообшений", "функция обработки сообщений" и от них производные. Ничего, что могло бы помочь на RSDN совсем мало и не то, в Яндексе ссылки на книжки либо которые купить либо совсем для ламеро что есть мол карта сообшений... Помогите решить проблему заранее благодарен....
Здравствуйте, Holy_coder, Вы писали:
H_> Привет, может кто знает как решить вопрос. Создаю через визард класс производный от CWnd.. содаю в нем руками функцию CreateWnd в которой пытаюсь создать окно(именно окно) функцией CWnd::Create. Регистрирую класс окна (WNDCLASS) и тут проблема мне надо указать имя функции обработки сообщения, хочу связать с картой сообщений. Прочитал статью "Блуждания по лабиринту маршрутизации сообщений и команд в MFC" http://www.rsdn.ru/article/mfc/maze.xml Вроде как есть функция в катре сообщений AfxWndProc указываю ее... класс регистрируется окно не создается.... вроде есть еше CWnd::WindowProc но она чисто виртуальная, а реализовывать ее не надо, так как есть карта сообщений которую нужно юзать.
H_> Поискал по поиску запросами типа "Карта сообшений", "функция обработки сообщений" и от них производные. Ничего, что могло бы помочь на RSDN совсем мало и не то, в Яндексе ссылки на книжки либо которые купить либо совсем для ламеро что есть мол карта сообшений... Помогите решить проблему заранее благодарен....
AfxGetAfxWndProc()
Здравствуйте, Holy_coder, Вы писали:
H_> Привет, может кто знает как решить вопрос. Создаю через визард класс производный от CWnd.. содаю в нем руками функцию CreateWnd в которой пытаюсь создать окно(именно окно) функцией CWnd::Create. Регистрирую класс окна (WNDCLASS) и тут проблема мне надо указать имя функции обработки сообщения, хочу связать с картой сообщений. Прочитал статью "Блуждания по лабиринту маршрутизации сообщений и команд в MFC" http://www.rsdn.ru/article/mfc/maze.xml Вроде как есть функция в катре сообщений AfxWndProc указываю ее... класс регистрируется окно не создается.... вроде есть еше CWnd::WindowProc но она чисто виртуальная, а реализовывать ее не надо, так как есть карта сообщений которую нужно юзать.
H_> Поискал по поиску запросами типа "Карта сообшений", "функция обработки сообщений" и от них производные. Ничего, что могло бы помочь на RSDN совсем мало и не то, в Яндексе ссылки на книжки либо которые купить либо совсем для ламеро что есть мол карта сообшений... Помогите решить проблему заранее благодарен....
Возможностей AfxRegisterWndClass не хватает?
//h...........
class CFunctionWindow : public CWnd
{
DECLARE_DYNAMIC(CFunctionWindow)
public:
bool CreateWnd(LPCSTR lpszCaption);
...............
protected:
DECLARE_MESSAGE_MAP()
................
};
//cpp...................
bool CFunctionWindow::CreateWnd(LPCSTR lpszCaption)
{
LPCTSTR strMyClass;
strMyClass = AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW,
::LoadCursor(NULL, IDC_ARROW),
(HBRUSH)::GetStockObject(WHITE_BRUSH),
::LoadIcon(NULL, IDI_APPLICATION));
Create(strMyClass,
lpszCaption,
WS_OVERLAPPEDWINDOW,
CRect(5, 5, 600, 600),
NULL,
0);
}
Или так или непосредственно с WNDCLASS и AfxWndProc.
А с AfxGetAfxWndProc и CWnd::WindowProc не компилится.
В чем ошибка в чем может быть затор???!!!!
Заранее благодарен!!!
Здравствуйте, Holy_coder, Вы писали:
H_>Или так или непосредственно с WNDCLASS и AfxWndProc.
H_>А с AfxGetAfxWndProc и CWnd::WindowProc не компилится.
H_>В чем ошибка в чем может быть затор???!!!!
H_>Заранее благодарен!!!
Вот кусок одного моего InitInstance():
H_>WNDCLASS wc;
...
// try to register custom window class
memset(&wc, 0, sizeof(wc));
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = AfxGetAfxWndProc();
wc.hInstance = m_hInstance;
wc.hIcon = LoadIcon(IDR_APPICON);
wc.hCursor = LoadStandardCursor(IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = _T("WC_MAIN_FRAME");
if (!::RegisterClass(&wc)) {
return (FALSE);
}
H_>
Здравствуйте, Holy_coder, Вы писали:
H_>H_>//cpp...................
H_>bool CFunctionWindow::CreateWnd(LPCSTR lpszCaption)
H_>{
H_> LPCTSTR strMyClass;
H_> strMyClass = AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW,
H_> ::LoadCursor(NULL, IDC_ARROW),
H_> (HBRUSH)::GetStockObject(WHITE_BRUSH),
H_> ::LoadIcon(NULL, IDI_APPLICATION));
H_> Create(strMyClass,
H_> lpszCaption,
H_> WS_OVERLAPPEDWINDOW,
H_> CRect(5, 5, 600, 600),
H_> NULL,
H_> 0);
H_>}
H_>
А что, так не работает?