读书人

quot;浏览文件夹quot;对话框的显示有关问题

发布时间: 2012-03-06 20:47:55 作者: rapoo

"浏览文件夹"对话框的显示问题
procedure TForm1.Button1Click(Sender: TObject);
var
bi: TBrowseInfo;
pidl: pItemIdList;
strpath, displayname: string;
begin
SetLength (displayname, 100);
bi.hwndOwner := Handle;
bi.pidlRoot := nil;
bi.pszDisplayName := pChar (displayname);
bi.lpszTitle := '请选择文件夹 '#13#10#10 '一般是在**下 ';
bi.ulFlags := $0008;
bi.lpfn := nil;
bi.lParam := 0;
bi.iImage := 0;
pidl := SHBrowseForFolder(bi);
SetLength (strPath, 100);
ShGetPathFromIdList (pidl, PChar(strPath));
end;

上面代码运行后bi.lpszTitle的显示有问题, 换行后的 "一般是在**下 "已经被List挡住了. 请问,怎样才能正常显示 ?? 可不可以把那List移下一点 ,这样就可以了?


[解决办法]
10分啊
关键代码
bi.lpfn := nil;
改为
bi.lpfn := @BrowseCallbackProc;

BrowseCallbackProc过程
function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData: LPARAM): Integer; stdcall;
begin
if uMsg=BFFM_INITIALIZED then
SetWindowPos(GetDlgItem(hwnd,2),0,230,90,0,0,SWP_NOZORDER or SWP_NOSIZE);
//你要查下文字框的ID,修改这里GetDlgItem(hwnd,2)
end if
Result := 0
end;

读书人网 >.NET

热点推荐