Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.03.2009, 04:15   #1
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию Проблема с методом класса

Код:
class Window
{
protected:
	HWND hWindow;
	HWND hMass[10];
	MSG msg;
public:
    LRESULT WINAPI mainProc(HWND hWnd,UINT message,WPARAM wp,LPARAM lp)
	{
		return 0;
	};
	Window()
	{
     hWindow=CreateWindowEx(0,WC_DIALOG,"Hello world",WS_VISIBLE|WS_SYSMENU,CW_USEDEFAULT,CW_USEDEFAULT,200,200,0,0,0,0);
	 ShowWindow(hWindow,0);
	 SetWindowLong(hWindow,DWL_DLGPROC,(long)this->mainProc);
	}
};
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    Window wc();
	return 0;
}
Этот код не компилируется и я даже знаю почему - в функцию
SetWindowLong(hWindow,DWL_DLGPROC,( long)this->mainProc);
передается активный параметр, а так как ни одного экземпляра класса нет - передавать нечего. Теперь вопрос: Как это обойти? Очень хочется оставить функцию обработчик внутри класса(инкапсулировать).
PS: Так же будет интересно увидеть готовую реализацию подобного класса.
PSS: Почему то реализация с выносом функции обработчика(из класса) даже не отображает созданное окно. С чем это может быть связано?
"Тяжело в учении, легко в бою" - А.В. Суворов

Последний раз редактировалось Ivan_32; 27.03.2009 в 04:17.
Ivan_32 вне форума
Старый 27.03.2009, 08:33   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

На какой строчке ругается и что пишет? метод mainProc, вроде как, должен быть static из-за особенностей указателей на методы классов
pu4koff вне форума
Старый 27.03.2009, 10:38   #3
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
метод mainProc, вроде как, должен быть static из-за особенностей указателей на методы классов
Он еще и CALLBACK должен быть, если не ошибаюсь
wyvern@localhost:~$ sudo emerge --unmerge world
wyvern вне форума
Старый 27.03.2009, 10:42   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от wyvern Посмотреть сообщение
Он еще и CALLBACK должен быть, если не ошибаюсь
Да, но:
Код:
#define CALLBACK    __stdcall
#define WINAPI      __stdcall
получается, что WINAPI и CALLBACK вроде как эквивалентны
pu4koff вне форума
Старый 27.03.2009, 10:43   #5
wyvern
Форумчанин
 
Аватар для wyvern
 
Регистрация: 24.03.2009
Сообщений: 215
По умолчанию

вопрос снят
wyvern@localhost:~$ sudo emerge --unmerge world
wyvern вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание класса Dogmat Общие вопросы C/C++ 2 12.01.2009 14:32
Решение уравнения методом деления отрезка пополам. Методом секущей. Panda196 Паскаль, Turbo Pascal, PascalABC.NET 3 25.11.2008 09:06
Проблема с передачей данных методом POST Aiden Работа с сетью в Delphi 0 21.09.2008 21:11
Создание класса Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 31.05.2008 11:54
Создание класса Stanislav Общие вопросы Delphi 8 15.05.2008 23:34