.const
MAX_PATH equ 260 ;размерность пути
.data?
PATH db MAX_PATH dup(?) ;путь выбранной директории
.data
tstring, "Browse For Folder",0 ;загловок будующего диалога
.....................
.....................
WndProc proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD
LOCAL brinfo:BROWSEINFO ;струткра
;заполнение структуры
push hWnd
pop brinfo.hwndOwner
mov brinfo.lpszTitle, offset tstring
mov brinfo.pszDisplayName, offset PATH
mov brinfo.ulFlags, BIF_RETURNONLYFSDIRS
mov brinfo.lpfn, NULL
.IF uMsg==WM_CREATE
invoke Button,ADDR BRWSMsg,hWnd,50,50,100,20,IDC_BROWSE ;создаю кнопку
.ELSEIF uMsg == WM_COMMAND
.IF wParam == ID_BROWSE ;кнопка нажата
mov PATH, 0
invoke SHBrowseForFolder, ADDR brinfo ;вызов диалога
.ELSEIF uMsg==WM_DESTROY
invoke PostQuitMessage, NULL
.ELSE
invoke DefWindowProc, hWnd, uMsg, wParam, lParam
.ENDIF
ret
WndProc endp
MASM32:: SHBrowseForFolder sulutions
Необходим диалог выбора директории - BrowseForFolder.
Если использовать invoke BrowseForFolder, hWnd, ADDR PATH, ADDR title, ADDR subtitle, то все работает нормально.
Но необходимо использовать SHBrowseForFolder, которая в качестве параметра принимает указатель на структуру BROWSEINFO. Это выгоднее, т.к. можно указать ulFlags и др. нужные вещи в структуре.
Только вот SHBrowseForFolder почему-то ведет себя странно, не работает. Код компилится, но при вызове диалога происходит ошибка в странице памяти. Объясните почему и как исправить?.. Вот код:
Код:
И еще вопрос по онному диалогу.. в винампе в диалоге добавления директории помимо стандартных элементов есть еще checkbox - как его можно добавить в диалог?