проблема с WSAAsyncselect

Тема в разделе "WASM.WIN32", создана пользователем 6opoDuJIo, 22 май 2009.

  1. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    немогу ничего понять
    Код (Text):
    1. invoke WSAAsyncSelect,hSocket2,hWnd, DownLoadButton1ID, FD_ACCEPT+FD_READ
    написаль всё как в MSDN написано, сами хендлы вместо их указателей послал функции, и всёравно INVALID_SOCKET!
     
  2. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    WSAGetLastError();
     
  3. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    яж говорю, WSAAsyncSelect помещает в EAX значение INVALID_SOCKET
    при чом тут WSAGetLastError?
     
  4. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Погоди, а где у тебя сокет создается? Где socket() вызывается?
     
  5. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
     
  6. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    всё там есть.socket вызывается прямо перед вызовом функции WSAAsyncselect
     
  7. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Да, не заметил. Насчет ошибки - не знаю. У меня ошибки WSAAsyncSelect не возвращает:

    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. include \masm32\include\windows.inc
    6. include \masm32\include\user32.inc
    7. include \masm32\include\kernel32.inc
    8. include \masm32\include\ws2_32.inc
    9. includelib \masm32\lib\user32.lib
    10. includelib \masm32\lib\kernel32.lib
    11. includelib \masm32\lib\winmm.lib
    12. includelib \masm32\lib\ws2_32.lib
    13.  
    14. .DATA
    15.  wsa WSADATA <>
    16.  buffer db MAX_PATH dup(?)
    17.  hIP dd ?
    18.  NameIP db MAX_PATH dup(?)
    19.  buf_out1 db MAX_PATH dup(?)
    20.  hSocket2 dd ?
    21.  Port dd 80
    22.  sin sockaddr_in <>
    23.  
    24. .CODE
    25. start:
    26. invoke WSAStartup, 101h, addr wsa
    27.          invoke gethostname, addr buffer, sizeof buffer
    28.          invoke gethostbyname, addr buffer ; получаем стpуктуpу HOSTENT
    29. ; теперь eax содеpжит указатель на структ. HOSTENT, см. windows.inc
    30.     mov eax, [eax+12]   ; получаем указатель на элемент h_list в HOSTENT
    31.           mov eax, [eax]        ; получаем указатель на указатель на IP
    32.           mov eax, [eax]        ; получаем указатель на строку IP в сетевом порядке байт
    33. ; конвертировать IP адрес в строковый формат с точками
    34.           invoke inet_ntoa, eax ; при выходе в eax - указатель на строку вида 127.0.0.1
    35.             mov hIP, eax        ; запомнить указатель на строку с IP
    36.             invoke wsprintf, addr buf_out1, addr NameIP, hIP
    37.             invoke socket, AF_INET, \   ; Address family (в веp 1.1 доступно только семейство AF_INET)
    38.         SOCK_STREAM,\   ; задает тип сокета (STREAM или DATAGRAM)
    39.         0               ; тип протокола (не устанавливать никакого пpотокола: 0)
    40.                    
    41.                     mov [hSocket2], eax         ; запомнить хендл
    42.    
    43. invoke WSAAsyncSelect,hSocket2,000202C2h,1,FD_ACCEPT+FD_READ
    44. .if eax==INVALID_SOCKET
    45. invoke MessageBox,NULL,NULL,NULL,MB_OK
    46. .endif
    47.  
    48.            
    49. invoke htons, Port
    50.         mov sin.sin_port, ax
    51.         mov sin.sin_family, AF_INET
    52.         mov sin.sin_addr, INADDR_ANY
    53.        
    54. ; ассоциировать локальный адрес (представленный в структуре sin)  с сокетом
    55.     invoke bind, hSocket2, addr sin, sizeof sin
    56.  
    57.         invoke listen, hSocket2, 5
    58.  
    59. ; blabla bla blab la ..........................................
    60. end start
    вместо hWnd я просто воткнул хендл окна тоталкомандера
     
  8. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    хм.я кажется знаю де ошибка.
    у меня структуры wsa и sin описаны в секции описания неинициаоизированных переменных
     
  9. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    нет.оказалось дело не в этом...
     
  10. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Дай свой исходник полностью.
     
  11. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    progect.inc
    Код (Text):
    1. ; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    2.  
    3. ;     include files
    4. ;     ~~~~~~~~~~~~~
    5.       include \masm32\include\windows.inc
    6.       include \masm32\include\masm32.inc
    7.       include \masm32\include\gdi32.inc
    8.       include \masm32\include\user32.inc
    9.       include \masm32\include\kernel32.inc
    10.       include \masm32\include\Comctl32.inc
    11.       include \masm32\include\comdlg32.inc
    12.       include \masm32\include\shell32.inc
    13.       include \masm32\include\oleaut32.inc
    14.       include \masm32\include\msvcrt.inc
    15.       include \masm32\macros\macros.asm
    16.       include \masm32\include\wsock32.inc
    17.  
    18. ;     libraries
    19. ;     ~~~~~~~~~
    20.       includelib \masm32\lib\masm32.lib
    21.       includelib \masm32\lib\gdi32.lib
    22.       includelib \masm32\lib\user32.lib
    23.       includelib \masm32\lib\kernel32.lib
    24.       includelib \masm32\lib\Comctl32.lib
    25.       includelib \masm32\lib\comdlg32.lib
    26.       includelib \masm32\lib\shell32.lib
    27.       includelib \masm32\lib\oleaut32.lib
    28.       includelib \masm32\lib\msvcrt.lib
    29.       includelib \masm32\lib\wsock32.lib
    30.  
    31. ; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    32.  
    33.         ;=================
    34.         ; Local prototypes
    35.         ;=================
    36.        
    37.         WinMain          PROTO :DWORD,:DWORD,:DWORD,:DWORD
    38.         WndProc          PROTO :DWORD,:DWORD,:DWORD,:DWORD
    39.         TopXY            PROTO :DWORD,:DWORD
    40.         Paint_Proc       PROTO :DWORD
    41.         RegisterWinClass PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    42.         MsgLoop          PROTO
    43.         Main             PROTO
    44.  
    45.       AutoScale MACRO swidth, sheight
    46.         invoke GetPercent,sWid,swidth
    47.         mov Wwd, eax
    48.         invoke GetPercent,sHgt,sheight
    49.         mov Wht, eax
    50.  
    51.         invoke TopXY,Wwd,sWid
    52.         mov Wtx, eax
    53.  
    54.         invoke TopXY,Wht,sHgt
    55.         mov Wty, eax
    56.       ENDM
    57.  
    58.       DisplayMenu MACRO handl, IDnum
    59.         invoke LoadMenu,hInstance,IDnum
    60.         invoke SetMenu,handl,eax
    61.       ENDM
    62.  
    63.       DisplayWindow MACRO handl, ShowStyle
    64.         invoke ShowWindow,handl, ShowStyle
    65.         invoke UpdateWindow,handl
    66.       ENDM
    67.  
    68.     .data
    69.         MAXSIZE     equ 64
    70.         szDisplayName db "Project Template",0
    71.         ListViewClass db "SysListView32",0
    72.         PushButtonClass db "Button",0
    73.         DownLoadButton1 db "скачать InetAccess",0
    74.         DownLoadButton1ID dd WM_USER+1
    75.         DownLoadButton2 db "скачать CommFort",0
    76.         DownLoadButton2ID dd WM_USER+2
    77.         DownLoadButton3 db "скачать DC++",0
    78.         DownLoadButton3ID dd WM_USER+3
    79.         DownLoadButton4 db "скачать CS 1.6",0
    80.         DownLoadButton4ID dd WM_USER+4
    81.         DownLoadButton5 db "скачать WoW 2.4.3",0
    82.         DownLoadButton5ID dd WM_USER+5
    83.         DownLoadButton6 db "скачать L2 Terra",0
    84.         DownLoadButton6ID dd WM_USER+6
    85.         DownLoadButton7 db "скачать COD4 Terra",0
    86.         DownLoadButton7ID dd WM_USER+7
    87.         DownLoadButtonMAIN db "начать закачку",0
    88.         DownLoadButtonMAINID dd WM_USER+100
    89.         DownLoadButtonLIST db "смотреть список закачек",0
    90.         DownLoadButtonLISTID dd WM_USER+101
    91.         WM_SOCKET   equ WM_USER + 200
    92.         AdresIP db "127.0.0.1",0
    93.         sin         sockaddr_in <>
    94.         wsa         WSADATA <>; структура данных для сети...cм. windows.inc
    95.  
    96. Port            dd 3030
    97. buffer      db MAXSIZE dup (0)
    98. buf_out         db MAXSIZE dup (0)  ; буфер для имени компьютера
    99. buf_out1        db MAXSIZE dup (0)
    100.        
    101.     .data?
    102.         hInstance dd ?
    103.         CommandLine dd ?
    104.         hIcon dd ?
    105.         hCursor dd ?
    106.         sWid dd ?
    107.         sHgt dd ?
    108.         hWnd dd ?
    109.         Button1hwnd dd ?
    110.         Button2hwnd dd ?
    111.         Button3hwnd dd ?
    112.         Button4hwnd dd ?
    113.         Button5hwnd dd ?
    114.         Button6hwnd dd ?
    115.         Button7hwnd dd ?
    116.         ListBoxhwnd dd ?
    117.             ; -.-.-
    118.         hSocket     dd ?
    119.         hSocket2        dd ?
    120.         hClient     dd ?
    121.         hIP         dd ?            ; указатель на собственный адрес IP
    122.        
    123.         hostname    dd ?
    124.         hostnamestring dd ?
    125.         NameIP      dd  ?
    126.         ThrID       dd  ?
    127.  
    128.        
    129.  
    130. ; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Inserted modules ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    131.  
    132.  
    133. ; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    progect.asm
    Код (Text):
    1. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    2.  
    3.       .486                      ; create 32 bit code
    4.       .model flat, stdcall      ; 32 bit memory model
    5.       option casemap :none      ; case sensitive
    6.  
    7.       include Project.inc        ; local includes for this file
    8.  
    9. .code
    10.  
    11. start:
    12.  
    13. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    14.  
    15.     ; ------------------
    16.     ; set global values
    17.     ; ------------------
    18.       mov hInstance,   rv(GetModuleHandle, NULL)
    19.       mov CommandLine, rv(GetCommandLine)
    20.       mov hIcon,       rv(LoadIcon,hInstance,500)
    21.       mov hCursor,     rv(LoadCursor,NULL,IDC_ARROW)
    22.       mov sWid,        rv(GetSystemMetrics,SM_CXSCREEN)
    23.       mov sHgt,        rv(GetSystemMetrics,SM_CYSCREEN)
    24.  
    25.       call Main
    26.  
    27.       invoke ExitProcess,eax
    28.  
    29. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    30.  
    31. Main proc
    32.  
    33.     LOCAL Wwd:DWORD,Wht:DWORD,Wtx:DWORD,Wty:DWORD
    34.  
    35.     STRING szClassName,"ProStart_Class"
    36.  
    37.   ; --------------------------------------------
    38.   ; register class name for CreateWindowEx call
    39.   ; --------------------------------------------
    40.     invoke RegisterWinClass,ADDR WndProc,ADDR szClassName,
    41.                        hIcon,hCursor,COLOR_BTNFACE+1
    42.  
    43.   ; -------------------------------------------------
    44.   ; macro to autoscale window co-ordinates to screen
    45.   ; percentages and centre window at those sizes.
    46.   ; -------------------------------------------------
    47.     AutoScale 75, 70
    48.  
    49.     invoke CreateWindowEx,WS_EX_LEFT or WS_EX_ACCEPTFILES,
    50.                           ADDR szClassName,
    51.                           ADDR szDisplayName,
    52.                           WS_OVERLAPPEDWINDOW-WS_THICKFRAME-WS_MAXIMIZEBOX,
    53.                           Wtx,Wty,755,500,
    54.                           NULL,NULL,
    55.                           hInstance,NULL
    56.     mov hWnd,eax
    57.  
    58.   ; ---------------------------
    59.   ; macros for unchanging code
    60.   ; ---------------------------
    61.     DisplayMenu hWnd,600
    62.     DisplayWindow hWnd,SW_SHOWNORMAL
    63.  
    64.     call MsgLoop
    65.     ret
    66.  
    67. Main endp
    68.  
    69. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    70.  
    71. RegisterWinClass proc lpWndProc:DWORD, lpClassName:DWORD,
    72.                       Icon:DWORD, Cursor:DWORD, bColor:DWORD
    73.  
    74.     LOCAL wc:WNDCLASSEX
    75.  
    76.     mov wc.cbSize,         sizeof WNDCLASSEX
    77.     mov wc.style,          CS_BYTEALIGNCLIENT or \
    78.                            CS_BYTEALIGNWINDOW
    79.     m2m wc.lpfnWndProc,    lpWndProc
    80.     mov wc.cbClsExtra,     NULL
    81.     mov wc.cbWndExtra,     NULL
    82.     m2m wc.hInstance,      hInstance
    83.     m2m wc.hbrBackground,  bColor
    84.     mov wc.lpszMenuName,   NULL
    85.     m2m wc.lpszClassName,  lpClassName
    86.     m2m wc.hIcon,          Icon
    87.     m2m wc.hCursor,        Cursor
    88.     m2m wc.hIconSm,        Icon
    89.  
    90.     invoke RegisterClassEx, ADDR wc
    91.  
    92.     ret
    93.  
    94. RegisterWinClass endp
    95.  
    96. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    97.  
    98. MsgLoop proc
    99.  
    100.     LOCAL msg:MSG
    101.  
    102.     push esi
    103.     push edi
    104.     xor edi, edi                        ; clear EDI
    105.     lea esi, msg                        ; Structure address in ESI
    106.     jmp jumpin
    107.  
    108.     StartLoop:
    109.       invoke TranslateMessage, esi
    110.     ; --------------------------------------
    111.     ; perform any required key processing here
    112.     ; --------------------------------------
    113.       invoke DispatchMessage,  esi
    114.     jumpin:
    115.       invoke GetMessage,esi,edi,edi,edi
    116.       test eax, eax
    117.       jnz StartLoop
    118.  
    119.     mov eax, msg.wParam
    120.     pop edi
    121.     pop esi
    122.  
    123.     ret
    124.  
    125. MsgLoop endp
    126.  
    127. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    128.  
    129. WndProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
    130.  
    131.     LOCAL var    :DWORD
    132.     LOCAL caW    :DWORD
    133.     LOCAL caH    :DWORD
    134.     LOCAL fname  :DWORD
    135.     LOCAL Rct    :RECT
    136.     LOCAL buffer1[260]:BYTE  ; these are two spare buffers
    137.     LOCAL buffer2[260]:BYTE  ; for text manipulation etc..
    138.  
    139.     Switch uMsg
    140.      Case WM_COMMAND
    141.  
    142.         Switch wParam
    143.         ;======== menu commands ========
    144.  
    145.           Case 1010
    146.             invoke SendMessage,hWin,WM_SYSCOMMAND,SC_CLOSE,NULL
    147.  
    148.           Case 1900
    149.             ShellAboutBox hWin,hIcon,\
    150.               "About Prostart 4 Template#Windows Application",\
    151.               "Prostart 4 Template",13,10,"Copyright © MASM32 1998-2005"
    152.  
    153.           ;====== end menu commands ======
    154.           Case DownLoadButton1ID
    155.           invoke send, hSocket,addr ListViewClass, 64, 0
    156.          
    157.           Case DownLoadButton2ID
    158.           invoke MessageBoxA ,NULL,addr DownLoadButton2,addr DownLoadButton2,MB_OK
    159.           Case DownLoadButton3ID
    160.           invoke MessageBoxA ,NULL,addr DownLoadButton3,addr DownLoadButton3,MB_OK
    161.           Case DownLoadButton4ID
    162.           invoke MessageBoxA ,NULL,addr DownLoadButton4,addr DownLoadButton4,MB_OK
    163.           Case DownLoadButton5ID
    164.           invoke MessageBoxA ,NULL,addr DownLoadButton5,addr DownLoadButton5,MB_OK
    165.           Case DownLoadButton6ID
    166.           invoke MessageBoxA ,NULL,addr DownLoadButton6,addr DownLoadButton6,MB_OK
    167.           Case DownLoadButton7ID
    168.           invoke MessageBoxA ,NULL,addr DownLoadButton7,addr DownLoadButton7,MB_OK
    169.       Endsw
    170.        
    171.        
    172.       Case WM_DROPFILES
    173.         mov fname, DropFileName(wParam)
    174.         fn MessageBox,hWin,fname,"WM_DROPFILES",MB_OK
    175.  
    176.       Case WM_CREATE
    177.  
    178.          
    179.          invoke WSAStartup, 101h, addr wsa
    180.          invoke gethostname, addr buffer, sizeof buffer
    181.          invoke gethostbyname, addr buffer ; получаем стpуктуpу HOSTENT
    182. ; теперь eax содеpжит указатель на структ. HOSTENT, см. windows.inc
    183.     mov eax, [eax+12]   ; получаем указатель на элемент h_list в HOSTENT
    184.           mov eax, [eax]        ; получаем указатель на указатель на IP
    185.           mov eax, [eax]        ; получаем указатель на строку IP в сетевом порядке байт
    186. ; конвертировать IP адрес в строковый формат с точками
    187.           invoke inet_ntoa, eax ; при выходе в eax - указатель на строку вида 127.0.0.1
    188.             mov hIP, eax        ; запомнить указатель на строку с IP
    189.             invoke wsprintf, addr buf_out1, addr NameIP, hIP
    190.             invoke socket, AF_INET, \   ; Address family (в веp 1.1 доступно только семейство AF_INET)
    191.         SOCK_STREAM,\   ; задает тип сокета (STREAM или DATAGRAM)
    192.         0               ; тип протокола (не устанавливать никакого пpотокола: 0)
    193.                    
    194.                     mov hSocket2, eax       ; запомнить хендл
    195.    
    196. invoke htons, Port
    197.         mov sin.sin_port, ax
    198.         mov sin.sin_family, AF_INET
    199.         mov sin.sin_addr, INADDR_ANY
    200.        
    201. ; ассоциировать локальный адрес (представленный в структуре sin)  с сокетом
    202.     invoke bind, hSocket2, addr sin, sizeof sin
    203.     .if eax!=0
    204. invoke MessageBox,NULL,addr DownLoadButton1ID,addr DownLoadButton1ID,MB_OK
    205. .endif
    206.  
    207.         invoke listen, hSocket2, 5
    208.                 invoke WSAAsyncSelect,hSocket2,000202C2h,1,FD_ACCEPT+FD_READ
    209. .if eax==INVALID_SOCKET
    210. invoke MessageBox,NULL,NULL,addr DownLoadButton1ID,MB_OK
    211. .endif
    212.             invoke WSAGetLastError
    213. .if eax!=0
    214. invoke MessageBox,NULL,addr DownLoadButton1ID,NULL,MB_OK
    215. .endif
    216.            
    217.            
    218.            
    219.                    
    220.       Case DownLoadButton1ID
    221.       invoke MessageBox,NULL,addr DownLoadButton1ID,addr DownLoadButton1ID,MB_OK
    222.        
    223.       Case WM_PAINT
    224.       invoke send, hSocket,addr ListViewClass, 64, 0
    225.     invoke CreateWindowEx, NULL,addr ListViewClass,NULL,LVS_REPORT+WS_CHILD+WS_VISIBLE+WS_BORDER,0,100,750,349,hWnd,NULL,hInstance,NULL
    226.     mov ListBoxhwnd,eax
    227.     invoke CreateWindowEx ,NULL,addr PushButtonClass,addr DownLoadButton1,WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON,0,0,150,50,hWnd,DownLoadButton1ID,hInstance,NULL
    228.     mov Button1hwnd,eax
    229.     invoke CreateWindowEx ,NULL,addr PushButtonClass,addr DownLoadButton2,WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON,150,0,150,50,hWnd,DownLoadButton2ID,hInstance,NULL
    230.     mov Button2hwnd,eax
    231.     invoke CreateWindowEx ,NULL,addr PushButtonClass,addr DownLoadButton3,WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON,300,0,150,50,hWnd,DownLoadButton3ID,hInstance,NULL
    232.     mov Button3hwnd,eax
    233.     invoke CreateWindowEx ,NULL,addr PushButtonClass,addr DownLoadButton4,WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON,450,0,150,50,hWnd,DownLoadButton4ID,hInstance,NULL
    234.     mov Button4hwnd,eax
    235.     invoke CreateWindowEx ,NULL,addr PushButtonClass,addr DownLoadButton5,WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON,600,0,150,50,hWnd,DownLoadButton5ID,hInstance,NULL
    236.     mov Button5hwnd,eax
    237.     invoke CreateWindowEx ,NULL,addr PushButtonClass,addr DownLoadButton6,WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON,0,50,150,50,hWnd,DownLoadButton6ID,hInstance,NULL
    238.     mov Button6hwnd,eax
    239.     invoke CreateWindowEx ,NULL,addr PushButtonClass,addr DownLoadButton7,WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON,150,50,150,50,hWnd,DownLoadButton7ID,hInstance,NULL
    240.     mov Button7hwnd,eax
    241.     invoke Paint_Proc,hWin
    242.         return 0
    243.  
    244.       Case WM_CLOSE
    245.      
    246.       Case WM_SIZE
    247.  
    248.      
    249.       Case WM_DESTROY
    250.         invoke closesocket, hSocket
    251.         mov hSocket, 0
    252.         invoke WSACleanup
    253.         invoke PostQuitMessage,NULL
    254.         return 0
    255.  
    256.     Endsw
    257.  
    258.     invoke DefWindowProc,hWin,uMsg,wParam,lParam
    259.  
    260.     ret
    261.  
    262. WndProc endp
    263.  
    264. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    265.  
    266. OPTION PROLOGUE:NONE
    267. OPTION EPILOGUE:NONE
    268.  
    269. TopXY proc wDim:DWORD, sDim:DWORD
    270.  
    271.     mov eax, [esp+8]
    272.     sub eax, [esp+4]
    273.     shr eax, 1
    274.  
    275.     ret 8
    276.  
    277. TopXY endp
    278.  
    279. OPTION PROLOGUE:PrologueDef
    280. OPTION EPILOGUE:EpilogueDef
    281.  
    282. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    283.  
    284. Paint_Proc proc hWin:DWORD
    285.  
    286.     LOCAL hDC      :DWORD
    287.     LOCAL btn_hi   :DWORD
    288.     LOCAL btn_lo   :DWORD
    289.     LOCAL Rct      :RECT
    290.     LOCAL Ps       :PAINTSTRUCT
    291.  
    292.     mov hDC, rv(BeginPaint,hWin,ADDR Ps)
    293.  
    294.   ; ----------------------------------------
    295.  
    296.     mov btn_hi, rv(GetSysColor,COLOR_BTNHIGHLIGHT)
    297.  
    298.     mov btn_lo, rv(GetSysColor,COLOR_BTNSHADOW)
    299.  
    300.   ; ----------------------------------------
    301.  
    302.     invoke EndPaint,hWin,ADDR Ps
    303.  
    304.     ret
    305.  
    306. Paint_Proc endp
    307.  
    308.  
    309. ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    310.  
    311. end start
     
  12. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Сконпелировал твой кодес, WSAAsyncSelect возвращает 0, т.е. все нормально.
    Только вот зачем ты туда хендл окна 000202C2h воткнул то? У меня оно до сих пор валидное висит - т.к. ноут не перезагружал ещё с момента, как тебе вчера месагу писал и тотал коммандер не выключал.
    Ты туда хендл своего окошка передавай. И msg не "1", а нужное сообщение, которое было сначала (DownLoadButton1ID)
    полчится должно так:
    Код (Text):
    1. invoke WSAAsyncSelect,hSocket2,hWin,DownLoadButton1ID,FD_ACCEPT+FD_READ.
     
  13. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    эт я скопировал тот кусок шо ты отписал и компильнул.а когда увидел твой пост, забыл что указал левые значения, и залил.
    кстати, ты проверяеш значение в регистре EAX или используеш WSAGetLastError?
     
  14. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    при неверном значении в EAX выскакивает мессенжбокс.он у тебя был?выскакивает при старте
     
  15. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Нет, потому что в eax получается 0, что соответствует успешному завершению WSAAsyncSelect.
    И никакого месадж бокса не появляется.
    Код твой не менял за исключением хендла окна и message id.
     
  16. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    странно.у меня напостой мессенжбокс вываливается.
     
  17. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    ааааааа)всё))))))я ступил - надо дескриптор окна вывалиать)ёмаё
     
  18. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    чудовищное спасибо за помощ и терпение!
     
  19. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    С тебя пирожок =)
     
  20. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    <script language="JavaScript">
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    alert('Пирожок=)')
    </script>