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
}
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)