Как переподключиться к серверу DDE

Как переподключиться к серверу DDE?

Следующий код дает мне ошибку 0x4006 постоянно, которая, в соответствии с документация, средства DMLERR_INVALIDPARAMETER,

HCONV g_conv;

void dde_server_reconnect(HCONV hconv)
{
while (true)
{
if (g_conv = DdeReconnect(hconv))
{
std::cout << "Reconnect success!" << std::endl;
return;
}
else
{
std::cerr << "Unable to reconnect. Error: " << DdeGetLastError(g_id_inst) << std::endl;
}

boost::this_thread::sleep_for(boost::chrono::seconds(1));
}
}

HDDEDATA CALLBACK dde_callback(
UINT uType,
UINT uFmt,
HCONV hconv,
HSZ hsz1,
HSZ hsz2,
HDDEDATA hdata,
DWORD dwData1,
DWORD dwData2)
{
switch (uType)
{
case XTYP_ADVDATA:
{
process_data(hdata);
return (HDDEDATA)DDE_FACK;
}

case XTYP_DISCONNECT:
{
auto reconnect_th = boost::thread(dde_server_reconnect, hconv);
reconnect_th.detach();
}
}

return NULL;
}

Что я делаю неправильно? Как я могу это исправить?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]