liujun

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
Smartphone SDK中给函数SHGetSpecialFolderPath增加了一个常量CSIDL_APPDATA。使用这个CSIDL值将返回application data文件夹的名字,这个文件夹是永久性的。一个应用程序可以在这个永久性的文件夹下创建一个子目录,它可以在此存储它的数据。因为这个永久性的文件夹被所有的应用程序使用,所以我们要注意给自己的应用程序起一个唯一的目录名。以下代码演示了查找应用程序的数据文件夹,然后创建一个子目录。

int CreateAppFolder (HWND hWnd, TCHAR *pszAppFolder, int nMax) {

    
const TCHAR szMyAppFolderName[] = TEXT ("ProgWinCESpSample");
    TCHAR szPath[MAX_PATH];

    
// It doesn't help to have a path longer than MAX_PATH
    if (nMax > MAX_PATH)
        nMax 
= MAX_PATH;

    BOOL f 
= SHGetSpecialFolderPath (hWnd, szPath, CSIDL_APPDATA, FALSE);

    
// See if everything will fit in output string
    int nLen = lstrlen (szPath);
    
if (nLen + 2 + (int)lstrlen (szMyAppFolderName) > nMax)
        
return -2;

    
// Copy app folder name to parameter
    lstrcpy (pszAppFolder, szPath);

    
// Append directory separator character as needed
    if (szPath[nLen] != TEXT ('\\'))
        lstrcat (pszAppFolder, TEXT(
"\\"));

    
// Append my folder name
    lstrcat (pszAppFolder, szMyAppFolderName);

    
// See if directory exists.
    if (GetFileAttributes (pszAppFolder) == 0xffffffff{
        
// See why call failed      
        if (GetLastError () == ERROR_PATH_NOT_FOUND) {
            
// Wasn't there, create the directory
            if (!CreateDirectory (pszAppFolder, NULL))
                
return -3;
        }
 else 
            
return -4;  // Dir created but unaccessible
    }
 else
        
return 1;       // Indicate directory already exists
    return 0;           // Indicate directory created
}
posted on 2005-03-09 10:23  liujun  阅读(5055)  评论(1编辑  收藏  举报