用Windows API实现XP风格的文件对话框
大家好.
我接手一个程序,里面使用 GetOpenFileName 这个 Windows API 来弹出一个打开文件的对话框. 但是出现的对话眶不是MFC在XP系统下的XP风格的. 换句话说,也就是对话眶外观不一样,左边缺少一栏里面有我的电脑,我的文档什么的.
请问要如何对这个API的参数赋值才可以使出现的对话框与XP中的一样呢 ?我的设定如下:
OPENFILENAME data;
memset( &data, 0, sizeof(data) );
data.lStructSize = sizeof(data);
data.hwndOwner = hParent;
data.hInstance = NULL;
data.lpstrFilter = fibuf; // filter pairs buffer
data.lpstrCustomFilter = NULL;
data.nMaxCustFilter = 0;
data.nFilterIndex = 0;
data.lpstrFile = szFileName;
data.nMaxFile = 256;
data.lpstrFileTitle = NULL;
data.nMaxFileTitle = 0;
data.lpstrInitialDir = (szDir)? szDir : gszLastDir;
data.lpstrTitle = NULL;
data.Flags = OFN_PATHMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY;
data.Flags |= (OFN_ENABLEHOOK | OFN_EXPLORER);
data.lpfnHook = SaveFileHook;
MSDN上说
For compatibility reasons, the Places Bar is hidden if Flags is set to OFN_ENABLEHOOK and lStructSize is OPENFILENAME_SIZE_VERSION_400
但是我的系统是XPSP3+VC2005的,debug下得到的lStructSize却是76而不是88,奇怪. 如果我强行改88, 只对SAVEAS有效. 对于打开文件对话框还是不行.窗口有些部分发白.我想可能是因为打开文件框右边有预览的缘故. 可是不知道怎么解决它.
请大家指教.
谢谢大家.