Нужно получить путь и имя файла через 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 hParentWORD,lpTitleWORD,lpFilterWORD 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 показывает какие-то "левые" символы. В чём может быть ошибка?
Ну а вообще, чтоб в коде не болталось просто так 256 нулевых байт, лучше место под эту переменную резервировать на лету (на стеке, к примеру)...