Надо, чтобы при открытии диалога выбора папки открывался изначально заданный путь, есть вот такой код:
| Код | function BrowseCallbackProc(DialogHWND: THandle;NINT: Integer; PARAM1: lParam; PARAM2: lParam): integer; stdcall; var s: String; begin if NInt = BFFM_INITIALIZED then begin s:=root; SendMessage(DialogHWND,BFFM_SETSELECTION,1,integer(PChar(s))); end; result:=0; end;
Function SelFolderDilalog(Caption,root:string):String; var TitleName: string; lpItemID: PItemIDList; BrowseInfo: TBrowseInfo; DisplayName: array[0..MAX_PATH] of char; TempPath: array[0..MAX_PATH] of char; begin Result:='0'; FillChar(BrowseInfo, sizeof(TBrowseInfo), #0); BrowseInfo.hwndOwner:=MainPage.handle; BrowseInfo.lpfn:=@BrowseCallbackProc; BrowseInfo.pszDisplayName:=@DisplayName; TitleName:=Caption; BrowseInfo.lpszTitle:=PChar(TitleName); BrowseInfo.ulFlags:=BIF_RETURNONLYFSDIRS; lpItemID:=SHBrowseForFolder(BrowseInfo); if lpItemID<>nil then begin SHGetPathFromIDList(lpItemID, TempPath); result:=TempPath; //Записываем результат выбора GlobalFreePtr(lpItemID); end; end;
|
Сейчас root это глобальная переменная в которой и передается первоначальный путь, но глобальные переменный в диалоговом окне это уж слишком.
Вопрос, как передать root в функцию BrowseCallbackProc из функции SelFolderDilalog ????
|