在delphi中自带的OpenDialog是英文版的,找了好一阵子,没找到说中文版的打开窗口的实现,后来经过朋友一问,才知道GetOpenFileName这个API函数,而且这个函数在CommDlg单元中已经有定义了,这个函数直接调用Windows的打开窗口,因此不必再怕中文得不够彻底了,现写一个OpenDialog函数把它封装好,在此公开。
function OpenDialog(var AFileName : string; AInitDir, AFilter, ADefaultExt, ACaption : string) : Boolean;
var
fnRec : tagOFNA;
StrFile: Array [0..1023] of Char;
begin
ZeroMemory(Addr(fnRec), SizeOf(tagOFNA));
SetLength(AFileName,MAX_PATH+1);
ZeroMemory(Addr(AFileName[1]), Length(AFileName));
fnRec.lStructSize:= SizeOf(tagOFNA);
fnRec.hWndOwner:= Application.Handle;
fnRec.hInstance:= 0;
fnRec.lpstrFilter:=PChar(AFilter);
fnRec.lpstrFile:= Addr(AFileName[1]);
fnRec.lpstrInitialDir := PChar(AInitDir);
fnRec.lpstrDefExt := PChar(ADefaultExt);
fnRec.nMaxFile:= 1024;
fnRec.lpstrTitle:= PChar(ACaption);
Result := GetOpenFileName(fnRec);
end;