前些日子看到有人問這個如何在Mobile上開啟開啟檔案對話方塊,在c#裡面我們知道有個OpenFileDialog, 那是相當的方便,如果要在WinCE的native API下面做也是可以的,這裡就用到了GetOpenFileName的介面(GetSaveFileName一樣的參數就不說了)。具體的用法看看這裡的實現:
OPENFILENAME ofn; // common dialog box structure<br />TCHAR szFile[260]; // buffer for file name<br />ZeroMemory(szFile, sizeof(szFile));<br />// Initialize OPENFILENAME<br />ZeroMemory(&ofn, sizeof(OPENFILENAME));<br />ofn.lStructSize = sizeof(OPENFILENAME);<br />ofn.hwndOwner = hWnd;<br />ofn.hInstance = g_hInst;<br />ofn.lpstrFile = szFile;<br />ofn.nMaxFile = sizeof(szFile);<br />ofn.lpstrFilter = TEXT("BMP/0*.bmp/0") ;<br />ofn.nFilterIndex = 1;<br />ofn.lpstrFileTitle = NULL;<br />ofn.nMaxFileTitle = 0;<br />ofn.lpstrInitialDir = NULL;<br />ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;<br />// Display the Open dialog box.<br />if (GetOpenFileName(&ofn)==TRUE)<br />{<br />}
這裡的代碼開啟的檔案夾在很多應用裡面都看到過,是這樣的:
想在Smartphone上也實驗一下這個介面卻發麵不工作,不管如何設定參數, 那個GetOpenFileName總是返回false。後來才找到了另一個可用的介面GetOpenFileNameEx才運作起來:
TCHAR szFile[MAX_PATH];<br />OPENFILENAMEEX ofnex = {0};<br />ofnex.lStructSize = sizeof(ofnex);<br />ofnex.hwndOwner = hWnd;<br />ofnex.lpstrFile = szFile;<br />ofnex.nMaxFile = sizeof(szFile)/sizeof(szFile[0]);<br />ofnex.lpstrFilter = TEXT("All Files (*.*)/0*.*/0");<br />ofnex.lpstrInitialDir = _T("//Program Files");<br />ofnex.ExFlags = OFN_EXFLAG_THUMBNAILVIEW | OFN_EXFLAG_HIDEDRMPROTECTED;<br />return GetOpenFileNameEx(&ofnex);<br />
效果也是差不多的 呵呵。
權且放在這裡,謹防以後忘記, 呵呵