为什么弹不出OpenFile对话框?
jyg 2000-08-09 11:05:00 因为不想使用OpenDialog控件,拿GetOpenFileName()来代替,结果在Win2K下没问题,但是在Win98下就是不能正常执行这个API.
下面是个简单的测试程序,各位帮忙看看问题出在哪里。
在form上放一个button,按下后执行这段代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OPENFILENAME ofnDlg;
char szName[MAX_PATH];
char szFileTitle[MAX_PATH] = {""};
char OpenFilter[] = "Programs\0*.bat;*.exe;*.pif;*.com\0All Files (*.*)\0*.*\0";
ZeroMemory(szName, sizeof(szName));
// Setup open dialog box
ofnDlg.lStructSize = sizeof(ofnDlg);
ofnDlg.hwndOwner = Handle;
ofnDlg.hInstance = HInstance;
ofnDlg.lpstrFilter = (LPSTR) OpenFilter;
ofnDlg.lpstrCustomFilter = NULL;
ofnDlg.nMaxCustFilter = 0;
ofnDlg.nFilterIndex = 1;
ofnDlg.lpstrFile = (LPSTR) szName;
ofnDlg.nMaxFile = sizeof(szName);
ofnDlg.lpstrFileTitle = szFileTitle;
ofnDlg.nMaxFileTitle = sizeof(szFileTitle);
ofnDlg.lpstrInitialDir = "C:\\";
ofnDlg.lpstrTitle = "OpenFile";
ofnDlg.Flags = OFN_FILEMUSTEXIST and OFN_PATHMUSTEXIST and OFN_HIDEREADONLY and OFN_EXPLORER;
ofnDlg.nFileOffset = 0;
ofnDlg.nFileExtension = 0;
ofnDlg.lpstrDefExt = "*";
ofnDlg.lCustData = 0;
GetOpenFileName(&ofnDlg);
}
噢,对了,以前同样代码在CB4下好好的,现在升级到CB5反而不行了。
我还用VC试了试,没有问题呀,98和2K都很正常。
另外,就是在2K下,builder和vc调出的对话框也不一样。他们只是handle和instance调用不同,这有关系吗?