Проблема с GetOpenFileName

Discussion in 'WASM.BEGINNERS' started by vg, May 19, 2007.

  1. vg

    vg New Member

    Blog Posts:
    0
    Joined:
    Apr 16, 2007
    Messages:
    475
    Нужно получить путь и имя файла через GetFileName.
    Есть код

    EditClassName db "edit",0
    SelectFile db "Select File",0
    fPattern db "*.*",0,0
    hwndEditFile DWORD ?
    ofn OPENFILENAME <>
    szFileName DWORD ?


    invoke CreateWindowEx,
    WS_EX_CLIENTEDGE,
    ADDR EditClassName,
    NULL,
    WS_CHILD or WS_VISIBLE or ES_AUTOHSCROLL,
    70,95,
    250,20,
    hwnd,
    0,
    hInstance,
    NULL
    mov hwndEditFile,eax


    invoke GetFileName,hWnd,ADDR SelectFile,ADDR fPattern
    cmp szFileName[0],0
    je @F
    invoke SetWindowText,hwndEditFile,ADDR szFileName
    @@:


    GetFileName proc hParent:lol: WORD,lpTitle:lol: WORD,lpFilter:lol: WORD

    mov ofn.lStructSize, sizeof OPENFILENAME
    m2m ofn.hWndOwner, hParent
    m2m ofn.hInstance, hInstance
    m2m ofn.lpstrFilter, lpFilter
    m2m ofn.lpstrFile, offset szFileName
    mov ofn.nMaxFile, sizeof szFileName
    m2m ofn.lpstrTitle, lpTitle
    mov ofn.Flags, OFN_EXPLORER or OFN_FILEMUSTEXIST or OFN_LONGNAMES

    invoke GetOpenFileName,ADDR ofn

    ret

    GetFileName endp

    При вызове GetFileName и выборе файла edit показывает какие-то "левые" символы.
    В чём может быть ошибка?
     
  2. MSoft

    MSoft New Member

    Blog Posts:
    0
    Joined:
    Dec 16, 2006
    Messages:
    2,854
    szFileName db 256 dup(?). Ты ж под имя тока 4 байта выделил.
     
  3. AndreyATC

    AndreyATC New Member

    Blog Posts:
    0
    Joined:
    May 16, 2007
    Messages:
    60
    vg
    удивительно что прога не слетает!
    куда ты имя файла записываеш? в 4 байта?
     
  4. Twister

    Twister New Member

    Blog Posts:
    0
    Joined:
    Oct 12, 2005
    Messages:
    720
    Location:
    Алматы
    Ну а вообще, чтоб в коде не болталось просто так 256 нулевых байт, лучше место под эту переменную резервировать на лету (на стеке, к примеру)...