在smartphone中使用GetOpenFileName方法出错。
OPENFILENAME ofn; // common dialog box structurewchar_t *szFile = NULL; // buffer for file name
wchar_t *szFilter;
szFilter = L"All Files(*.*)\0*.*\0Text File(*.TXT)\0*.txt\0\0";
HANDLE hf; // file handle
// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = this->m_hWnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// Display the Open dialog box.
if (GetOpenFileName(&ofn)==TRUE)
hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
0, (LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);
else
{
DWORD err = ::GetLastError();
if (err == CDERR_INITIALIZATION)
MessageBox(CString("CDERR_INITIALIZATION"));
else if (err == ERROR_OUTOFMEMORY )
MessageBox(CString("ERROR_OUTOFMEMORY "));
else if (err ==CDERR_FINDRESFAILURE)
MessageBox(CString("CDERR_FINDRESFAILURE"));
else if (err ==CDERR_NOHINSTANCE)
MessageBox(CString("CDERR_NOHINSTANCE"));
else if (err ==CDERR_LOCKRESFAILURE)
MessageBox(CString("CDERR_LOCKRESFAILURE"));
}
最后错误显示是CDERR_LOCKRESFAILURE,不明白什么意思。
在MFC的Dialog中使用正常。
请高手指点一下。 --------------------编程问答-------------------- 急啊,搞了好久了。有哪位大侠帮帮忙啊 --------------------编程问答-------------------- 顶!!
真的很急啊 。希望好心人帮帮忙。分数我可以再加。
我们的项目就快到时间了。 --------------------编程问答-------------------- 虽然GetOpenFileName可以编译过,但是无法在smartphone运行,不知道算不算VS的bug。可以用GetOpenFileNameEx代替,没有问题。 --------------------编程问答-------------------- 但是GetOpenFileNameEx只可以打开图片和视频啊,如何打开其他的文件。
补充:移动开发 , Windows Phone