Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    166

    [assembly] - Aiuto aiuto aiuto aiuto. Sto per impazzire. Trovate l'errore

    Ecco qui il codice. Uso Masm 8 32bit con relative librerie.
    tutto va ok finchè non leggo un file. Allora la funzione ReadFile non funge. PErchè???
    Aiuto, please.



    Ecco il codice::ometto quello relativo al menù...basti sapere che ci sono due possibilità: esci e open. con open si apre la finestra di scelta del file eccetera. [IDM_OPEN])

    .386
    .model flat,stdCall
    option casemap:none

    WinMain PROTO WORD,WORD,WORD,WORD

    include c:\masm32\include\windows.inc
    include c:\masm32\include\kernel32.inc
    include c:\masm32\include\user32.inc
    include c:\masm32\include\comdlg32.inc
    includelib c:\masm32\lib\kernel32.lib
    includelib c:\masm32\lib\user32.lib
    includelib c:\masm32\lib\comdlg32.lib

    .data
    ErrPos db "Errore nel posizionamento",0
    ErrRead db "Errore nella Lettura",0

    MainMenu db "MainMenu",0
    MainClass db "MainWnd",0
    MainName db "PRINCIPALE",0
    Filtro db "Tutti",0,"*.*",0
    db "*.Txt",0,"*.txt",0,0
    EditClass db "edit",0
    Abilitato db "Il tasto Funziona...",0
    Deb db "ROutine di Debug",0
    .data?
    ofn OPENFILENAME <>
    hFile HANDLE ?
    Edithwnd HWND ?
    hInstance HINSTANCE ?
    CommandLine LPSTR ?
    Buffer db 201 dup(?)
    FileName db 301 dup (?)
    File db 501 dup (?)
    hMemory HANDLE ?
    pMemory DWORD ?
    Counter DWORD ?

    .const
    IDM_EXIT equ 32001
    IDM_OPEN equ 32002
    IDEdit equ 3001



    .code
    main:
    invoke GetModuleHandle,NULL
    mov hInstance,eax
    invoke GetCommandLine
    mov CommandLine,eax
    invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
    invoke ExitProcess,eax

    WinMain proc hInst:HINSTANCE,PrevhInst:HINSTANCE,Cmd:LPSTR,CmdS howWORD
    LOCAL wc : WNDCLASSEX
    LOCAL hWnd : HWND
    LOCAL msg : MSG

    mov wc.cbSize,SIZEOF WNDCLASSEX
    mov wc.style,CS_HREDRAW or CS_VREDRAW
    mov wc.lpfnWndProc,offset MainWndProc
    mov wc.cbClsExtra,NULL
    mov wc.cbWndExtra,NULL
    push hInst
    pop wc.hInstance
    invoke LoadIcon,NULL,IDI_APPLICATION
    mov wc.hIcon,eax
    mov wc.hIconSm,eax
    invoke LoadCursor,NULL,IDC_ARROW
    mov wc.hCursor,eax
    mov wc.hbrBackground,COLOR_BTNFACE
    mov wc.lpszMenuName,offset MainMenu
    mov wc.lpszClassName,offset MainClass
    invoke RegisterClassEx,addr wc
    invoke CreateWindowEx,NULL,offset MainClass,offset MainName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USED EFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInst ance,NULL
    mov hWnd,eax
    invoke ShowWindow,hWnd,SW_SHOWNORMAL
    invoke UpdateWindow,hWnd
    .WHILE TRUE
    invoke GetMessage,addr msg,hWnd,NULL,NULL
    .BREAK .IF (!eax)
    invoke TranslateMessage,addr msg
    invoke DispatchMessage,addr msg
    .ENDW
    mov eax,msg.wParam
    ret
    WinMain endp

    MainWndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM


    .IF uMsg==WM_DESTROY
    invoke PostQuitMessage,NULL
    .ELSEIF uMsg==WM_CREATE
    invoke CreateWindowEx,NULL,offset EditClass,NULL,WS_CHILD or WS_VISIBLE or ES_MULTILINE or ES_AUTOVSCROLL or ES_LEFT or ES_WANTRETURN,NULL,NULL,NULL,NULL,hWnd,IDEdit,hIns tance,NULL
    mov Edithwnd,eax
    mov ofn.lStructSize,SIZEOF ofn
    push hWnd
    pop ofn.hwndOwner
    push hInstance
    pop ofn.hInstance
    mov ofn.lpstrFilter,offset Filtro
    mov ofn.lpstrFile,offset File
    mov ofn.nMaxFile,400
    mov ofn.lpstrFileTitle,offset FileName
    mov ofn.nMaxFileTitle,300
    mov ofn.lpstrInitialDir,NULL
    mov ofn.lpstrTitle,NULL
    mov ofn.lCustData,NULL
    mov ofn.lpfnHook,NULL
    mov ofn.lpTemplateName,NULL
    .ELSEIF uMsg==WM_SIZE
    mov eax,lParam
    mov edx,eax
    and eax,0ffffh
    shr edx,16
    invoke MoveWindow,Edithwnd,0,0,eax,edx,TRUE
    invoke SetFocus,Edithwnd
    .ELSEIF uMsg==WM_COMMAND
    mov eax,wParam
    .IF lParam==NULL
    .IF ax==IDM_EXIT
    invoke SendMessage,hWnd,WM_DESTROY,NULL,NULL
    .ELSEIF ax==IDM_OPEN
    mov ofn.Flags,OFN_PATHMUSTEXIST or OFN_FILEMUSTEXIST or OFN_EXPLORER or OFN_LONGNAMES
    invoke GetOpenFileName,addr ofn
    .IF eax==TRUE
    invoke CreateFile,offset File,GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE _ARCHIVE,NULL
    mov hFile,eax
    invoke GlobalAlloc,GMEM_MOVEABLE or GMEM_ZEROINIT,500
    mov hMemory,eax
    invoke GlobalLock,hMemory
    mov pMemory,eax
    invoke SetFilePointer,hFile,NULL,NULL,FILE_BEGIN
    invoke ReadFile,hFile,pMemory,200,offset Counter,NULL
    invoke SendMessage,Edithwnd,WM_SETTEXT,NULL,pMemory
    invoke GlobalUnlock,pMemory
    invoke GlobalFree,hMemory
    invoke CloseHandle,hFile
    mov Counter,NULL
    mov hFile,NULL
    mov pMemory,NULL
    mov hMemory,NULL
    .ENDIF
    invoke SetFocus,Edithwnd
    .ENDIF
    .ENDIF
    .ELSE
    invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    ret
    .ENDIF
    xor eax,eax
    ret
    MainWndProc endp
    end main
    Ennio

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    166
    Chiedo scusa per il doppio 3D.
    Ho clicato 2 volte sul pulsante per creare il 3D ed ecco 2 3D.
    Aiuto. Ditemi qual è l'errore.
    Ennio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.