用GetVolumeInformation 获取卷标 的疑惑
大脸猫脸大 2009-01-19 07:11:07 //对话框程序
void CMyColorDlg::OnButton1()
{
char szLabel[64];
char szFSName[64];
DWORD dwSerialNumber;
DWORD dwMaxLength;
DWORD dwFlags;
memset(szLabel,0,64);
if ( !GetVolumeInformation("C:",szLabel,64,&dwSerialNumber,&dwMaxLength,
&dwFlags,szFSName,64) )
Beep(1000,100); //调用失败则响铃提醒
SetDlgItemText(IDC_STATUS,szLabel); //将卷标显示在文本标签
}
//Win32API程序
.........
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
........
char szLabel[64];
char szFSName[64];
char szTemp[32];
DWORD dwSerialNumber;
DWORD dwMaxLength;
DWORD dwFlags;
memset(szLabel,0,64);
memset(szFSName,0,64);
memset(szTemp,0,32);
switch (message)
{
case WM_COMMAND:
break;
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
GetVolumeInformation("C:\\",szLabel,64,&dwSerialNumber,
&dwMaxLength,&dwFlags,szFSName,64);
TextOut(hdc,0,10,"卷标名称",strlen("卷标名称"));
TextOut(hdc,130,10,szLabel,strlen(szLabel));
EndPaint(hWnd,&ps);
break;
........
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
-------------------------------------------------------------------------
我的windowsXP 装在C盘 卷标是 本地磁盘,(装好系统未修改过C盘卷标)
问题1:
调用上面对话框程序("C:\\") , ,
若 装好系统未修改过C盘卷标,文本标签没动静,换成其他盘符,显示正常,
然后我手动对C盘重命名一个卷标,调用上面对话框程序,显示正常了。这很奇怪!
问题2:
Win32API程序 中 将第一个参数改为"D:" [not "D:\\"] ,显示正常
但在 对话框 就会 失败,不知为什么?