С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Hacker_
11 / 11 / 5
Регистрация: 10.09.2009
Сообщений: 261
1

Не могу зарегистрировать событие.

01.12.2009, 14:43. Просмотров 558. Ответов 1
Метки нет (Все метки)

Здравствуйте.
Помогите пожалуйста.
Скачал библиотеку для работы с блютуз, подключил .h файлы и написал следующее:
C++
1
2
3
4
5
6
7
8
class Blth
{
 public:
        //Функция регистрирующая событие
        void RegAppIndCallback(void);
        //Функция обрабатывающая событие
        void AppInquiryInd(void);
};
Реализовал функцию RegAppIndCallback:
C++
1
2
3
4
5
6
7
8
void Blth::RegAppIndCallback(void)
{
    BtSdkCallbackStru cb = {0};
    cb.type = BTSDK_INQUIRY_RESULT_IND;
    cb.func = (void*)AppInquiryInd;
           //функция непостредственно регитрирующая события для блютуза, в системе
    Btsdk_RegisterCallback4ThirdParty(&cb);
}
BtSdkCallbackStru - Струкрура описаная в подключаемом .h файле, в ней два поля:
1. Тип регистрируемого события.
2. Функция обрабатывающая данное событие
BTSDK_INQUIRY_RESULT_IND - Тип события.(В данном случае конец запроса к блютуз устройству)
Btsdk_RegisterCallback4ThirdParty - Фнкция регистрирующая событие.
Соответственно теперь я могу обработать это событие в функции AppInquiryInd.
Я написал следующее:
C++
1
2
3
4
void Blth::AppInqCompInd(void)
{
//Здесь я хочу написать свой код по обработке запроса к блютуз устройству
}
Но прога не компилируется, ругается на строчку:
cb.func = (void*)AppInquiryInd;
Выдает ошибку:
[C++ Error] Unit1.cpp(66): E2235 Member function must be called or its address taken
Но если написать так, то все работает.
C++
1
2
3
4
void AppInqCompInd(void)
{
//Здесь я хочу написать свой код по обработке запроса к блютуз устройству
}
Но мне нужно что бы все было в обекте.
Как это зделать?
P.S.
Делать метод статинческим, не вариант, поскольку мне нежно испльзовать this.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2009, 14:43
Ответы с готовыми решениями:

Зарегистрировать левую клавишу мышки с пoмощью RegisterHotKey?
Надо зарегистрировать как горячую клавишу левую кнопку мышки.Что только не...

Как в MFC зарегистрировать базу данных Access и сжать ее?
И еще пара вопросов знатокам: 1). Как в MFC зарегистрировать базу данных...

Чтобы зарегистрировать модуль, нужно задать имя двоичного файла в VS 2008
Нашёл один проект, скачал VS, чтобы запустить его, в итоге же выдаёт то, что...

Не могу зарегистрировать класс окна. Не принимает имя класса. Почему?
создал клас окна. WNDCLASSEX wndclass; wndclass.cbSize = sizeof(wndclass);...

Ошибка "Не удалось зарегистрировать дочерний класс"
Не создается дочернее окно.Помогите.Ошибка "Не удалось зарегистрировать...

1
Rififi
2364 / 1057 / 104
Регистрация: 03.05.2009
Сообщений: 2,656
01.12.2009, 14:46 2
Hacker_,

вот об этом:

cb.func = (void*)AppInquiryInd;

если AppInquiryInd - не-статическая функция класса, можешь сразу забыть.

решение - точно такое же как и в случае с потоками. юзай поиск.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2009, 14:46

Не могу сделать событие на изменение данных в переменной , int или CString
как сделать что бы генерировалось событие ? если делать через while то в...

Как зарегистрировать VS
Здравствуйте я скачал microsoft visual c++ 2008 express edition и установил, но...

Как быстро зарегистрировать COM-объект?
Моя программа использует COM-объект, живущий в DLL. Создаёт через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru