char Filestring[256];
Filter = "OBJ files\0*.obj\0\0";
char* returnstring = NULL;
OPENFILENAME opf;
opf.hwndOwner = mainHWND;
opf.lpstrFilter = Filter;
opf.lpstrCustomFilter = 0;
opf.nMaxCustFilter = 0L;
opf.nFilterIndex = 1L;
opf.lpstrFile = Filestring;
opf.lpstrFile[0] = '\0';
opf.nMaxFile = 256;
opf.lpstrFileTitle = 0;
opf.nMaxFileTitle=50;
opf.lpstrInitialDir = Path;
opf.lpstrTitle = "Open Obj File";
opf.nFileOffset = 0;
opf.nFileExtension = 0;
opf.lpstrDefExt = "*.*";
opf.lpfnHook = NULL;
opf.lCustData = 0;
opf.Flags = (OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT) & ~OFN_ALLOWMULTISELECT;
opf.lStructSize = sizeof(OPENFILENAME);
if(GetOpenFileName(&opf))
{
returnstring = opf.lpstrFile;
if (returnstring) {
result = returnstring;
}
}
编辑:失败意味着打开文件对话框没有出现。代码仍然返回 0 没有任何错误。
编辑 2:我已经调用了 CommDlgExtendedError(),它返回了 1。从 MSDN 参考中可以看出,这是否意味着对话框具有无效的 lStructSize?我已经检查了 sizeof(OPENFILENAME)
,它返回了 140 字节。
更新:在我的项目设置中,在代码生成下,"结构成员对齐" 设置为 4 字节(/Zp4)。我将其改回默认值,就神奇地解决了问题。请查看答案及其下面的评论以获取更多信息。
Wow64DisableWow64FsRedirection
函数(http://msdn.microsoft.com/en-us/library/aa365743.aspx)? - Cody Gray