Вызов диалога открытия файла - Assembler

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Нужно по нажатию ПКМ - открывать диалог открытия файла, и получать имя выбранного файла. С ПКМ - в обработчик можно засунуть. А как диалог вызывать и получить с него информацию. Помогите, пожалуйста. Смотрел как делать здесь, но не получилось перенести...

Решение задачи: «Вызов диалога открытия файла»

textual
Листинг программы
.data
szFilter db "All Files",0,"*.*",0,0
szFileName db 256 dup (0)
OPENFILENAME struct
lStructSize      dd 76
hwndOwner       dd ?
hInstance      dd   ?
lpstrFilter     dd ?
lpstrCustomFilter  dd   ?
nMaxCustFilter      dd ?
nFilterIndex        dd ?
lpstrFile       dd ?
nMaxFile        dd ?
lpstrFileTitle     dd   ?
nMaxFileTitle       dd ?
lpstrInitialDir     dd ?
lpstrTitle      dd ?
Flags       dd ?
nFileOffset    dd  ?
nFileExtension   dd ?
lpstrDefExt     dd ?
lCustData       dd ?
lpfnHook        dd ?
lpTemplateName      dd  ?
 
OPENFILENAME ends
ofn OPENFILENAME <>
 
.code
mov  ofn.lpstrFilter, OFFSET szFilter
mov  ofn.lpstrFile, OFFSET buffer
mov  ofn.nMaxFile,256
call GetOpenFileNameA, offset ofn
call MessageBox, [hwnd], offset ofn.lpstrFile,offset szTitleName,MB_OK 
mov  eax, ofn.lpstrFile ;путь получаем с именем
push ebx
xor ebx,ebx
mov  ebx,ofn.nFileOffset ;смещение до имени файла?
add eax,ebx
pop ebx
call lstrcat, offset OutputString, eax

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы