Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DDE название топика эксель 
:(
    Опции темы
Andrej78
Дата 28.3.2011, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 9.10.2006

Репутация: нет
Всего: нет



Доброго времени суток.

пытаюсь сделать dde сервер (сторонняя прога выдает данные в формате эксель [XlTable] по дде и мне их нужно принять).

vc++2005  + winapi + стандартная библиотека ddeml

Cначала создаю переменные с названием сервера, топика и итема.
Код

   g_hszAppName = DdeCreateStringHandle(g_idInst, L"DdemlSvr", NULL);
   g_hszTopicName = DdeCreateStringHandle(g_idInst, L"[TRD]TRD",NULL);//MyTopic
   g_hszItemName = DdeCreateStringHandle(g_idInst, L"R1C1", NULL);//MyItem


потом, когда получаю сообщение от источника через ddeml  XTYP_CONNECT, смотрю, этому ли серверу сообщение и тот ли топик (тема)

Код

// Our DDE Callback function...
HDDEDATA EXPENTRY DdeCallback(UINT wType, UINT fmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, DWORD dwData1, DWORD dwData2) {
int topicn,appnam;
   switch (wType) {
      
   // ----------------------------------------------------------------
   case XTYP_CONNECT:
      // Client is trying to connect. Respond TRUE if we have what they want...
       topicn=DdeCmpStringHandles(hsz1, g_hszTopicName);    //здесь несовпадение
       appnam= DdeCmpStringHandles(hsz2, g_hszAppName);
       
       //MessageBox(NULL, (LPCWSTR)hsz1*, L"Error", MB_SETFOREGROUND);
       if ((!DdeCmpStringHandles(hsz1, g_hszTopicName)) &&
         (!DdeCmpStringHandles(hsz2, g_hszAppName))) return (HDDEDATA)TRUE;   // SERVER supports Topic|Service
      else return FALSE;  // SERVER does not support Topic|Service
...


Суть проблемы в том, что в исходной программе - клиенте ввожу имя сервера, рабочую книгу и лист, которые потом становятся строкой и ddeml ставит на эту строку идентификатор.
Чтобы получить со своей стороны такой же идентификатор (и сказать, что посылаемая тема==запрашиваемой), я должен предоставить такую же строку.

Вот как бы подсмотреть, что именно содержится в топике с идентификатором hsz1, присылаемом источником (клиентом)?

Он не совпадает с введенным:
Код

       topicn=DdeCmpStringHandles(hsz1, g_hszTopicName);    //здесь несовпадение, выдает 1. 1 в справке по ф-ии - if the value of Hsz2(здесь g_hszTopicName) is either 0 or less than the value of Hsz1. 


(топиков желательно получать несколько, поэтому просто проигнорировать несовпадение топика не получится).

Предположительно, правильное название топика в этом случае [TRD]TRD                    [Рабочая книга]Лист

Подскажите плз, можно как-то глянуть, что скрывается за hsz1?
PM MAIL   Вверх
Andrej78
Дата 29.3.2011, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 9.10.2006

Репутация: нет
Всего: нет



Вопрос снимаю.

Ответили:

Название топика в коллбэке можно узнать:
Код

int iCount = DdeQueryString(idInstr, hsz1, null, 0, CP_WINANSI);
byte[] bf = new byte[iCount+1];
DdeQueryString(idInstr, hsz1, bf, iCount, CP_WINANSI);
string s = System.Text.Encoding.ASCII.GetString(bf);


if (uType == XTYP_CONNECT_CONFIRM) 


Это сообщение отредактировал(а) Andrej78 - 29.3.2011, 10:09
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0801 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.