![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| _hunter |
|
|||
|
Unregistered |
Подскажите как передать член класса как аргумент
|
|||
|
||||
| vickr |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 13.5.2003 Где: Санкт-Петербург Репутация: нет Всего: нет |
Или я чего-то не понял --------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:) |
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
упссс
член класса - функция -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
_hunter, дык передай указатель на ней... какая разница-то?
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
какая разница не знаю, но Builder говорит вот что:
"Member function must be called or its address taken" -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Покажи свой код.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
Примерно вот так:
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| vickr |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 13.5.2003 Где: Санкт-Петербург Репутация: нет Всего: нет |
Объяви WndProcedure как static.
У меня VC++ 6.0 ругается матом: cannot convert from 'long (__stdcall CWindow::*)(struct HWND__ *,unsigned int,unsigned int,long)' to 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' и правильно делает. Твоя WndProcedure имеет тип, отличный от _class.lpfnWndProc, поскольку ей неявно передается указатель на this твоего класса. Это сообщение отредактировал(а) vickr - 24.6.2003, 16:38 --------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:) |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
С радостью увидел этот топик, с радостью потому что сам когда-то решал эту проблему, тоже писал свой класс окна. Короче, функция должна быть static (об этом уже говорили). Раз функция будет статик, то она не будет знать ничего об объекте класса, то есть доступ будет только к статическим переменным. Поэтому надо записать адрес, созданного на базе класса окна, в окно ( я имею ввиду функцию SetWindowLongPtr). То есть в конструкторе делаешь hwnd = CreateWindow(...); SetWindowLongPtr(hwnd, 0, this); а потом в оконной функции делаешь CWindow* wincls = (CWindow*)GetWindowLongPtr(hwnd, 0);
Надо только учитывать, что при создании окна, оно ещё не имеет в 0 ячейке адреса объекта. И поэтому в WM_CREATE его ещё использовать нельзя. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |