unit1.cpp

来自「本书《C++Builder与WindowsAPI经典范例》附含配套光盘包括132」· C++ 代码 · 共 102 行

CPP
102
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
//设置出现错误时,不会出现错误对话框
int PrevMode = ::SetErrorMode(SEM_FAILCRITICALERRORS);
//第一种简易检测A:盘是否放入软盘
/*
if (::GetFileAttributes("A:\\")==0xFFFFFFFF)
   StaticText1->Caption = "软驱(A:)没有放软盘!";
else
   StaticText1->Caption = "软驱(A:)没有放软盘!";
*/

//第二种完整检测A:盘是否放入软盘
AnsiString str;
//取得A:\盘指定文件or目录的性质状态
//您可更改GetFileAttributes参数,加以测试
DWORD filedate = ::GetFileAttributes("A:\\");
switch(filedate)
   {
   case FILE_ATTRIBUTE_ARCHIVE:
          str = "此文件/目录处于保存状态";
          break;
   case FILE_ATTRIBUTE_COMPRESSED:
          str = "此文件/目录处于压缩状态";
          break;
   case FILE_ATTRIBUTE_DIRECTORY:
          str = "此文件/目录处于不存在状态";
          break;
   case FILE_ATTRIBUTE_HIDDEN:
          str = "此文件/目录处于隐藏状态";
          break;
   case FILE_ATTRIBUTE_NORMAL:
          str = "此文件/目录处于设置状态";
          break;
   case FILE_ATTRIBUTE_OFFLINE:
          str = "此文件/目录处于离线状态";
          break;
   case FILE_ATTRIBUTE_READONLY:
          str = "此文件/目录处于只读状态";
          break;
   case FILE_ATTRIBUTE_SYSTEM:
          str = "此文件/目录处于系统状态";
          break;
   case FILE_ATTRIBUTE_TEMPORARY:
          str = "此文件/目录处于缓冲状态";
          break;
   case 0xFFFFFFFF:
          str = "软驱(A:)没有放软盘!";
          break;
   }
//显示检测结果
StaticText1->Caption = str;
//再次设置出现错误时,不会出现错误对话框
::SetErrorMode(PrevMode);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
//即时生成一个 DriveComboBox组件,再放至视觉之外!or 缩小化
//此组件即自动取得光驱的磁盘代号
TDriveComboBox *DriveComboBox1 = new TDriveComboBox(Form1->Panel1);
DriveComboBox1->Parent = Panel1;
DriveComboBox1->Width = 1;
DriveComboBox1->Height = 10;

//DriveComboBox1->Top = 100;
//DriveComboBox1->Left = 100;

//设置出现错误时,不会出现错误对话框
int PrevMode = ::SetErrorMode(SEM_FAILCRITICALERRORS);
//认定最后的磁盘驱动器代号,即是光驱代号
AnsiString cd = DriveComboBox1->Items->Strings[DriveComboBox1->Items->Count-1];
//若光驱代号是 E:,则 cd = "E: [backup1]"
cd = cd.SetLength(2) + "\\";
//判断是否有光盘放入
if (::GetFileAttributes(cd.c_str())==0xFFFFFFFF)
   StaticText1->Caption = "光驱中没有光盘!";
else
   StaticText1->Caption = "光驱中有光盘!";
//再次设置出现错误时,不会出现错误对话框
::SetErrorMode(PrevMode);
delete DriveComboBox1;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?