можно ли как-то связать с сокетом свои данные? цель следующая: я создаю неблокируемые сокеты и юзаю для них WSAAsyncSelect. сетевые сообщения обрабатывает класс. я хочу чтобы получив оконное сообщение можно было сразу отправить его соответствующему методу класса. для этого нужно в окнной процедуре иметь указатель на этот класс. можно, конечно, создать структуру, типа, h_socket - class_pointer, и хранить указатель на неё в глобальных переменных, но мне не оч нравится такой способ.
должно быть, типа так: Код (Text): CNetworkHandler::CNetworkHandler() { SetSocketData(h_socket, this); WSAAsyncSelect(h_socket, hwnd, WM_SOCKET_MSG, ...); } LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) { swicth (msg) { case WM_SOCKET_MSG: { CNetworkHandler *p = (CNetworkHandler*)GetSocketData(h_socket); p->OnMsg(lp); ... } ... } } соответственно нужны функции SetSocketData() и GetSocketData(). Есть ли такое в природе или нужно извращаться - заводить массив связей сокетов с указателями, сохранять где-нибудь указатель на массив (например SetWindowLongPtr(...GWLP_USERDATA, ...)), производить выборку и т.п.?