打开文件对话框GetOpenFileName Win32, PPC, Smartphone上的异同

前些日子看到有人问这个如何在Mobile上打开打开文件对话框,在c#里面我们知道有个OpenFileDialog, 那是相当的方便,如果要在WinCE的native API下面做也是可以的,这里就用到了GetOpenFileName的接口(GetSaveFileName一样的参数就不说了)。具体的用法看看这里的实现:

 

OPENFILENAME ofn; // common dialog box structure TCHAR szFile[260]; // buffer for file name ZeroMemory(szFile, sizeof(szFile)); // Initialize OPENFILENAME ZeroMemory(&ofn, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hWnd; ofn.hInstance = g_hInst; ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = TEXT("BMP/0*.bmp/0") ; 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) { }

这里的代码打开的文件夹在很多应用里面都看到过,效果图是这样的:

打开文件对话框GetOpenFileName Win32, PPC, Smartphone上的异同_第1张图片

 

想在Smartphone上也试验一下这个接口却发面不工作,不管如何设置参数, 那个GetOpenFileName总是返回false。后来才找到了另一个可用的接口GetOpenFileNameEx才运作起来:

 

TCHAR szFile[MAX_PATH]; OPENFILENAMEEX ofnex = {0}; ofnex.lStructSize = sizeof(ofnex); ofnex.hwndOwner = hWnd; ofnex.lpstrFile = szFile; ofnex.nMaxFile = sizeof(szFile)/sizeof(szFile[0]); ofnex.lpstrFilter = TEXT("All Files (*.*)/0*.*/0"); ofnex.lpstrInitialDir = _T("//Program Files"); ofnex.ExFlags = OFN_EXFLAG_THUMBNAILVIEW | OFN_EXFLAG_HIDEDRMPROTECTED; return GetOpenFileNameEx(&ofnex);

效果也是差不多的 呵呵。

打开文件对话框GetOpenFileName Win32, PPC, Smartphone上的异同_第2张图片 打开文件对话框GetOpenFileName Win32, PPC, Smartphone上的异同_第3张图片

权且放在这里,谨防以后忘记, 呵呵

你可能感兴趣的:(null,mobile,buffer,dialog,WinCE,structure)