您的位置:首页 > 运维架构

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

2009-09-07 21:48 507 查看
前些日子看到有人问这个如何在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)
{
}


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



想在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);


效果也是差不多的 呵呵。





权且放在这里,谨防以后忘记, 呵呵
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: