crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> CallBack & Com
kwisp
  опции профиля:
сообщение 12.10.2009, 19:04
Сообщение #11


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(blondinka @ 12.10.2009, 19:59) *
как это сделать-как принять этот адрес и как по нему обратиться:)

передать в функцию сервера аргументом указатель на объект(клиент).

по-моему без кода советчик может навредить равновероятно как и помочь.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
blondinka
  опции профиля:
сообщение 12.10.2009, 21:16
Сообщение #12


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 8.4.2008
Из: Питер
Пользователь №: 144

Спасибо сказали: 0 раз(а)




Репутация:   3  


Ну передать я смогу,а как принять и запомнить? т.е. получить доступ к этому объекту из другого метода этого класса(сервера)
Ну какой код могу привести,если его нет. Едиственное могу привести код того класса, который нужно "обернуть" в com. НО толку от этого не будет никакого. Тем более, что я пишу сервер, соответсвенно клиента нет и в помине.

Сообщение отредактировал blondinka - 12.10.2009, 21:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 13.10.2009, 7:58
Сообщение #13


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


слушай а если всё это это прочитать.
столько интересного. я осилил только оглавление :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
blondinka
  опции профиля:
сообщение 13.10.2009, 9:30
Сообщение #14


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 8.4.2008
Из: Питер
Пользователь №: 144

Спасибо сказали: 0 раз(а)




Репутация:   3  


Т.е как обернуть сигнал никто не знает..Просто не понятно одно, если есть средства в Qt для создания самого Com, то и должны быть средства для представления этих их сигналов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 13.10.2009, 10:35
Сообщение #15


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(blondinka @ 13.10.2009, 10:30) *
Просто не понятно одно, если есть средства в Qt для создания самого Com, то и должны быть средства для представления этих их сигналов.

не понятно о чём ты. :(

есть догадка что ты хочешь вызвать сигнал объекта Qt обернутого в COM.
если так то как и обычно т.к. сигналы в защищенной секции то для вызова сигнала из вне нужно в классе содержащем сигнал написать доступную функцию которая вызовет сигнал
public:
void callMe()
{
emit sgCall();
}

можно попробовать получить адресс самого сигнала(не пробовал не уверен) &sgCall; если сигналы имеют одинаковую сигнатуру пердают одни и теже аргументы, то можно их адреса засунуть в массив. Из вне можно вызывать функцию вида callMe()
signals:
void sg_0(const char*);
void sg_1(const char*);
void sg_2(const char*);
void sg_3(const char*);

private:
typedef void (ComObject::*SGPointer)(const char*);
static const SGPointer CallSG(const uint index) {
        static const SGPointer CallSGHandlers[] = {
            (SGPointer)&ComObject::sg_0,
            (SGPointer)&ComObject::sg_1,
            (SGPointer)&ComObject::sg_2,
            (SGPointer)&ComObject::sg_3
        };
        return index>ARSIZE(CallSGHandlers)?NULL:CallSGHandlers[index];
    }

public:
void callMe(const uint indexSg, const char* data)
{
     SGPointer pointer = CallSG(indexSg);
     if(pointer) { emit (this->*pointer)(data); }//??? это полёт фантазии в этом не уверен.
}

вызываешь callMe(...) COM внутри него вызываются сигналы.
если не получится получить и корректно использовать указатель на сигналы в конце концов можно использовать стандартный switch().
сам так делать не пробовал.

можно посмотреть QAxObject и прочие классы.
документацию конкретного COM объекта можно получить с помощью generateDocumentation ()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
blondinka
  опции профиля:
сообщение 13.10.2009, 10:45
Сообщение #16


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 8.4.2008
Из: Питер
Пользователь №: 144

Спасибо сказали: 0 раз(а)




Репутация:   3  


Именно про эти классы я и говорила..Но документации на русском нет, поэтому сложно понять, что к чему там относится,а примеры даны элементарные и не подходят.
Я не знаю можно ли поймать qt-шные сигналы,напрмер, в делфи. А сигналы мне вызывать не нужно, нужно поймать его из класса-клиента, в тот момент, когда событие в com-объекте произойдет(придут данные из сокета).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 13.10.2009, 11:20
Сообщение #17


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(blondinka @ 13.10.2009, 11:45) *
Я не знаю можно ли поймать qt-шные сигналы,напрмер, в делфи.

а сразу нельзя было это написать:)


посылать события, можно поробовать.



а может qt за тебя будет это делать
вот
тебе надо искать что такое ActiveX event и как им пользоваться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
blondinka
  опции профиля:
сообщение 13.10.2009, 12:14
Сообщение #18


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 8.4.2008
Из: Питер
Пользователь №: 144

Спасибо сказали: 0 раз(а)




Репутация:   3  


Спасибо, попробую высылать события
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 13.10.2009, 12:37
Сообщение #19


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(blondinka @ 13.10.2009, 13:14) *
попробую высылать события

вполне возможно тебе их надо не высылать а просто ловить.
думаю они автоматом генерируются из сигналов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
blondinka
  опции профиля:
сообщение 13.10.2009, 12:43
Сообщение #20


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 8.4.2008
Из: Питер
Пользователь №: 144

Спасибо сказали: 0 раз(а)




Репутация:   3  


т.к. я пишу сервер, вместо сигналов думала выслать события, но не получится, т.к все равно нужно указать получателя.
А как их будут ловить на клиенте тож не понятно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 8:21