LRESULT CALLBACK WSAAsyncProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_WSAASYNC: if (!WSAGETSELECTERROR(lParam)) puts("WSAAsyncGetHostByAddr success."); else puts("error"); return 1; } return 1; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question#include <windows.h> #include <stdio.h> #include "assert.h" #define WND_CLASS TEXT("CONSOLE_WND") LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_MOUSEMOVE: puts("Ahaha, ca chatouille !"); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hWnd, uMsg, wParam, lParam); } } int main(void) { WNDCLASSEX wc; HWND hWnd; MSG Msg; wc.cbSize = sizeof(wc); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = GetModuleHandle(NULL); wc.hIcon = NULL; wc.hCursor = NULL; wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1); wc.lpszMenuName = NULL; wc.lpszClassName = TEXT(WND_CLASS); wc.hIconSm = NULL; assert(RegisterClassEx(&wc) != 0); hWnd = CreateWindowEx(WS_EX_APPWINDOW, TEXT(WND_CLASS), TEXT("Une fenêtre en mode console"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 100, NULL, NULL, wc.hInstance, NULL); assert(hWnd != NULL); ShowWindow(hWnd, SW_SHOWNORMAL); assert(UpdateWindow(hWnd) != 0); while (GetMessage(&Msg, NULL, 0, 0) > 0) { if (IsDialogMessage(hWnd, &Msg) == 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return Msg.wParam; }
WSAAsyncGetHostByAddr(hwnd, WM_WSAASYNC, (char *)&addr, len, type, (char *)&listn->hp, sizeof(listn->hp));
#define WM_WSAASYNC (WM_USER +5) LRESULT CALLBACK WSAAsyncProc(HWND, UINT, WPARAM, LPARAM); Async_init() { #define WND_CLASS "AsyncSocket" WNDCLASSEX wc; wc.cbSize = sizeof(wc); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WSAAsyncProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = GetModuleHandle(NULL); wc.hIcon = 0; wc.hCursor = 0; wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszMenuName = 0; wc.lpszClassName = TEXT(WND_CLASS); wc.hIconSm = 0; if(!RegisterClassEx(&wc)) assert(!puts("RegisterClassEx error")); hwnd = CreateWindowEx(0, TEXT(WND_CLASS), 0, 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, wc.hInstance, NULL); assert((hwnd != NULL)); } Async_gethostbyaddr(listener *listn, struct sockaddr_in addr, int len, int type) { assert((hwnd != NULL)); printf("sizeof(listn->hp) = %lu\n", sizeof(listn->hp)); puts("aync"); WSAAsyncGetHostByAddr(hwnd, WM_WSAASYNC, (char *)&addr, len, type, (char *)&listn->hp, sizeof(listn->hp)); puts("aync2"); } LRESULT CALLBACK WSAAsyncProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { puts("good ?"); switch(msg) { case WM_WSAASYNC: if (!WSAGETSELECTERROR(lParam)) puts("WSAAsyncGetHostByAddr success."); else puts("error"); return 1; } return 1; }
while(1) { if(hwnd && (GetMessage(&hmsg, 0, 0, 0) > 0)) if(!IsDialogMessage(hwnd, &hmsg)) { puts("msg"); TranslateMessage(&hmsg); DispatchMessage(&hmsg); } FD_ZERO(&sfd); FD_SET((m = me->sock), &sfd);