1、如何定义函数参数用来传递颜色数值。我只想使用一个参数!(20分)
2、比较弱弱的问题!
   如何画扇形?以及添充颜色?(10分)
3、问题2, 可以在自定义控件上画吗?
   如果可以的话。那么坐标原点在哪儿?(20分)
4、如何获得CF 卡(类似于优盘)的信息。(比如是总空间,可用空间等等)(50分)

解决方案 »

  1.   

    1.long 就可以
    2。有API
    Private Declare Function Arc Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long3.可以4。
    如何获悉USB磁盘的确切盘符 
    使用的API:
    ===========GetDriveType();CreateFile();DeviceIoControl();GetLogicalDrives();方法:
    ======
    源码:--------------------------------------------------------------------------------
    GetLogicalDrives() ----〉获取系统现有的所有磁盘的盘符列表;GetDriveType()     ----〉得到制定磁盘的介质属性(Fix, Removeable...);--------------------------------------------------------------------
    通常情况下,上述的方法已经足够了,但是,对于现今的 USB 大容量磁盘,系
    统将报告为 Fix Disk,故而不得不使用以下两个函数得到 Fix Disk 的热插拔
    特性。:) CreateFile()       ----〉打开制定的盘符;DeviceIoControl()  ----〉确定设备的热插拔特性。
    --------------------------------------------------------------------------------
    演示代码如下:
    ==============源码:--------------------------------------------------------------------------------
    #include <winioctl.h>
     . . .
    TCHAR        szMoveDiskName[33];    //用以保存最终得到的USB磁盘盘符
    DWORD        drive, drivetype;
    HANDLE hDevice;
    STORAGE_HOTPLUG_INFO stu_HOTPLUG;
    DWORD MaxDriveSet, CurDriveSet; #define IOCTL_STORAGE_GET_HOTPLUG_INFO                CTL_CODE(IOCTL_STORAGE_BASE, 0x0305, METHOD_BUFFERED, FILE_ANY_ACCESS)
    typedef struct _STORAGE_HOTPLUG_INFO {
    UINT Size;
    UCHAR MediaRemovable;
    UCHAR MediaHotplug;
    UCHAR DeviceHotplug;
    UCHAR WriteCacheEnableOverride;
    } STORAGE_HOTPLUG_INFO, *PSTORAGE_HOTPLUG_INFO;for(int j=1; j<26; j++)
      szMoveDiskName[j] = '\0';
    k = 1;

      MaxDriveSet = GetLogicalDrives();
      CurDriveSet = MaxDriveSet;
      for ( drive = 0; drive < 32; ++drive )  
      {
        if ( MaxDriveSet & (1 << drive) ){  
        DWORD temp = 1<<drive;    _stprintf( name, _T("%c:\\"), 'A'+drive );
        switch ( GetDriveType( name ) )  
        {
        case 0:        // The drive type cannot be determined.
        case 1:        // The root directory does not exist.
          drivetype = DRVUNKNOWN;
          break;
        case DRIVE_REMOVABLE:     // The drive can be removed from the drive.
          drivetype = DRVREMOVE;
          szMoveDiskName[k] = chFirstDriveFromMask(temp);
          szMoveDiskName[0]=k;
          k++;
          break;
        case DRIVE_CDROM: // The drive is a CD-ROM drive.
          break;
        case DRIVE_FIXED: // The disk cannot be removed from the drive.
          drivetype = DRVFIXED;
          sprintf(szBuf, "\\\\?\\%c:", 'A'+drive);
          hDevice = CreateFile(szBuf, GENERIC_READ,
            FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);      if (hDevice != INVALID_HANDLE_VALUE){
            if(DeviceIoControl(hDevice, IOCTL_STORAGE_GET_HOTPLUG_INFO,
              NULL, 0,
              &stu_HOTPLUG, sizeof(STORAGE_HOTPLUG_INFO ), &lngRet, NULL) !=0 ){
              if(stu_HOTPLUG.DeviceHotplug == 1){
                szMoveDiskName[k] = chFirstDriveFromMask(temp);
                szMoveDiskName[0]=k;
                k++;
              }
            }        CloseHandle(hDevice);
          }      break;
        case DRIVE_REMOTE: // The drive is a remote (network) drive.
          drivetype = DRVREMOTE;
          szMoveDiskName[k] = chFirstDriveFromMask(temp);
          szMoveDiskName[0]=k;
          k++;
          break;
        case DRIVE_RAMDISK: // The drive is a RAM disk.
          drivetype = DRVRAM;
          break;
        }  }
    }
      

  2.   

    1、如果只用long那么如何传递。就是实参如何写也就是怎样用long 表示颜色?
    2、
    3、在自定义控件上我怎么画不了?
    4、我想知道的是在使用GetDiskFreeSpace等的时候是否与硬盘一样?多谢  nik_Amis(Azrael) ^_^
      

  3.   

    1.vb中自己带有颜色的数据类型Dim i As OLE_COLOR2.你是想自己制作控件吗!!
      去网上下载一个源代码吧,很多例子的
      随手抓的几个
    http://codechina.com
    http://member.netease.com/~kenj/(vb加油站)
    http://www.itebook.net
    http://ok1.yi.org
    http://pdc.csmud.com/bbs/dispbbs.asp?boardID=51&ID=639
    http://www.pbsky.com/
    vchome
    http://www.ourfly.com/
      

  4.   

    1.RGB函数实际上就是返回一个long
    同样一个long 也可以转化成rgb三个值
    3.如何画不了?你把autoredraw=true看一下
    好的方法是在_Paint()事件里重画,而不用AUtoRedraw
    因为autoredraw可能导致内存泄漏4。你是一下吧,我也没有试过:)
    多试试对你自己有好处