工控编程吧
标题:
197上位机VC MFC格式化指定磁盘
[打印本页]
作者:
qq263946146
时间:
2016-1-29 21:43
标题:
197上位机VC MFC格式化指定磁盘
(, 下载次数: 1)
上传
点击文件名下载附件
197上位机VC MFC格式化指定磁盘
功能展示
我们在使用U盘时都有格式化操作经历,当我们鼠标点击格式化磁盘时会弹出格式化对话框进行选择格式化操作。我们当前例程也实现这一功能,选择要格式化的磁盘后,点击格式化,会弹出具体的格式化选项进行格式化,效果如图;
要点提示
例程中格式化操作使用了函数SHFormatDrive(),函数在动态库shell32.dll中未开放,所以我们例程动态调用了此函数;函数原型为:DWORD SHFormatDrive Lib (ByVal hWnd AsLong, ByVal Drive As Long, fmtID As Long, Options As Long)
函数参数:
hWnd:当前窗口句柄
Drive:要格式的分区序号(例:C盘就是2,D盘就是3)
fmtID:这个参数好像必须被设置为SHFMT_ID_DEFAULT
Options:选项,有如下几个可选值:
SHFMT_OPT_SYSONLY:快速格式化
SHFMT_OPT_FULL :正常(非快速)格式化
函数的返回值:
返回值将是如下的几个值之一
该函数的返回值要么为一个下列以SHFMT_开头的值,要么是一个成功格式化的磁盘标识。//上次格式化出错,磁盘可能被格式化
#define SHFMT_ERROR 0xFFFFFFFFL//格式化被取消
#define SHFMT_CANCEL 0xFFFFFFFEL// 不能进行磁盘格式化
#define SHFMT_NOFORMAT 0xFFFFFFFDL
-2:成功 -3:失败
实现功能
1.新建基于对话框的应用程序
2.拖拽一组合框ID为IDC_COMBO1,用于罗列出当前系统盘符供选择;并关联选择更改函数OnSelchangeCombo1()
添加自定义函数voidIniCombo();//初始化系统盘符到组合框中;
3.拖拽一按钮控件关联函数,用于实现格式化操作功能;
三个函数体为:
void CGkbc8Dlg::IniCombo()
{
m_nOffset = 0;
CComboBox* pCombobox = (CComboBox*)GetDlgItem(IDC_COMBO1);//获取组合框指针
//
size_t alldriver=::GetLogicalDriveStrings(0,NULL);
_TCHAR *driverstr;
driverstr=new _TCHAR[alldriver+sizeof(_T(""))];
if(GetLogicalDriveStrings(alldriver,driverstr)!=alldriver-1)
return ;
_TCHAR *pdriverstr=driverstr;
size_t driversize=strlen(pdriverstr);
while(driversize>0)
{
pCombobox->AddString(pdriverstr);
pdriverstr+=driversize+1;
driversize=strlen(pdriverstr);
}
pCombobox->SetCurSel(0);//初始显示第0盘符
}
复制代码
void CGkbc8Dlg::OnFormat()
{
typedef DWORD (WINAPI *FormatFunc)(HWND hwnd,UINT drive,UINT fmtID,UINT options);
HMODULE hModule=::LoadLibrary("shell32.dll");
if(hModule)
{
FormatFunc FormatDriver= (FormatFunc) GetProcAddress(hModule, "SHFormatDrive");
if(FormatDriver)
FormatDriver(this->GetSafeHwnd(),m_nOffset,0xFFFF,0);
}
}
void CGkbc8Dlg::OnSelchangeCombo1()
{
CComboBox* pCombobox = (CComboBox*)GetDlgItem(IDC_COMBO1);//获取组合框指针
CString strtemp;
pCombobox->GetLBText(pCombobox->GetCurSel(),strtemp);
char ch=strtemp.GetAt(0);
m_nOffset=ch-'A';
}
复制代码
其中int m_nOffset;为自定义变量,用于标识盘符偏移变量
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/417cb65c52745be8293bf9b1187073fc/0/0/w_19rsze006l.swf-albumId=5389671809-tvId=5389671809-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4