Как перенести IVectorView в C /CX

#c #uwp #casting #c -cx

#c #uwp #Кастинг #c -cx

Вопрос:

сценарий: Я хотел бы обменять чернильный штрих между устройствами, работающими в одной локальной сети.

Шаг 1: соберите все штрихи, нарисованные на экране от клиента:

 // Send strokes to a remote server.strokesToReplay = inkCanvas-gt;InkPresenter-gt;StrokeContainer-gt;GetStrokes();const int sz = sizeof(strokesToReplay);char msgToSend[sz];memcpy(msgToSend, amp;strokesToReplay, sz);send(tcpClient.sockfd, msgToSend, sz, 0); 

Шаг 2: получение данных от серверной части:

 // tcpServer is an instance of TCPServer, which contains// a function that calls listen -gt; accept// to establish a connection with the clientbytesRecv = tcpServer.recvFromClient();// Received data was storaged in TCPServer::buffer (char buffer[16384]) 

Что я хотел бы сделать, так это перенести данные из буфера в IVectorView.Так что из него можно повторить чернильный штрих, как:

 for (InkStroke^ inkStroke : buffer) { ... to do} 

Но вот вопрос: как я могу привести символ * в IVectorView?

Я пробовал memcpy() и static_cast. Но так как в IVectorView нет надлежащей памяти, memcpy() уничтожит всю программу.

Функция static_cast() не будет работать с IVectorView.

Теперь я подумываю о копировании данных в буфер обмена, а затем вызове API, предоставляемого Microsoft, который получает данные из буфера обмена и автоматически преобразует их в штрихи. Но Я Не Знаю, Работает Это Или Нет… Есть ли какие-нибудь советы, которые вы, ребята, можете мне дать? Спасибо.

Комментарии:

1. Я очень уверен, что const int sz = sizeof(strokesToReplay); это уже неправильно. GetStrokes возвращает динамический список с использованием sizeof on, который даст совершенно другой результат. И memcpy также не может быть правильным, вы хотите скопировать и отправить фактические штрихи

2. Вы также не можете просто сбросить память штрихов в массив байтов, вам нужен правильный код сериализации и десериализации

3. Конечно, я тоже об этом думал… Есть ли у вас какой-нибудь совет, который вы могли бы мне дать?

4. Я также подумал о том, чтобы сохранить штрихи в файл .gif и отправить его. Это хорошая идея?

5. Сохранение его в формате изображения, а затем анализ, который кажется крайне неэффективным (вы будете передавать много пустых данных каждый раз, когда отправляете их по сети). Просто сериализация отдельных штрихов должна быть проще