驱动器组合框

原创 2001年04月28日 01:12:00

 

 

相信用过VB的人都对那些驱动器,目录,文件列表控件有兴趣,VC中没有,只好自己做了。以下是我自己写的驱动器组合框控件代码。

/////////// DriveBox.h

class CDriveBox : public CComboBoxEx
{
public:
 CDriveBox();
 virtual ~CDriveBox();

 // Generated message map functions
protected:
 //  {{AFX_MSG(CDriveBox)
 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
 //  }}AFX_MSG

DECLARE_MESSAGE_MAP()
public:
 int GetSelDrive();
 bool SetSelDrive(char drive);
 void Initialize();
private:
 void AddItem(char *path,int index);
 CImageList m_img;
 char m_drivers[50];
};

 

////////////////////

// DriveBox.cpp : implementation file
//

#include "stdafx.h"
#include "DriveBox.h"


CDriveBox::CDriveBox()
{
 
}

CDriveBox::~CDriveBox()
{
}


BEGIN_MESSAGE_MAP(CDriveBox, CComboBoxEx)
  // {{ AFX_MSG_MAP(CDriveBox)
 ON_WM_CREATE()
 // }}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDriveBox message handlers

int CDriveBox::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CComboBoxEx::OnCreate(lpCreateStruct) == -1)
  return -1;
 
 // TODO: Add your specialized creation code here
 Initialize();
 return 0;
}

void CDriveBox::Initialize()
{
 m_img.Create( GetSystemMetrics(SM_CXSMICON),
            GetSystemMetrics(SM_CYSMICON),
           ILC_MASK|ILC_COLORDDB, 50, 50);
 m_img.SetBkColor( GetSysColor(COLOR_WINDOW) );
 SetImageList(&m_img);
 char *ptr,drivename[500];
 GetLogicalDriveStrings(500,drivename);
 ptr=drivename;int index=0;
 while (*ptr)
 {
 m_drivers[index]=*ptr;
 AddItem(ptr,index++);
 ptr+=strlen(ptr)+1;
 }
 SetSelDrive('c');
}

void CDriveBox::AddItem(char *path,int index)
{
 SHFILEINFO pathInfo,path_SelInfo;
 SHGetFileInfo( path, NULL, &pathInfo,
  sizeof(pathInfo),
  SHGFI_DISPLAYNAME | SHGFI_ICON | SHGFI_SMALLICON);
 SHGetFileInfo( path, NULL, &path_SelInfo,
  sizeof(path_SelInfo),
  SHGFI_DISPLAYNAME |  SHGFI_ICON | SHGFI_OPENICON | SHGFI_SMALLICON);
 int icon=m_img.Add(pathInfo.hIcon);
 int icon_sel=m_img.Add(path_SelInfo.hIcon);
 COMBOBOXEXITEM item;
 item.mask=CBEIF_TEXT|CBEIF_IMAGE|CBEIF_SELECTEDIMAGE;
 item.pszText=pathInfo.szDisplayName;
 item.iSelectedImage=icon;
 item.iImage=icon;//正常图标
 item.iItem=index;
 InsertItem(&item);
}

int CDriveBox::GetSelDrive()//返回所选磁盘
{
 int sel=GetCurSel();
 char driver=m_drivers[sel];
 driver=toupper(driver);
 return (driver-65);//返回数字索引,如0为A盘,2为C盘
 //  return   driver;//返回盘符
}

bool CDriveBox::SetSelDrive(char drive)//设置磁盘
{
 if(!isalpha(drive))return FALSE;
 drive=toupper(drive);int index=0;
 while(drive!=toupper(m_drivers[index]))index++;
 SetCurSel(index);return TRUE;

}


//////

如何使用?

建立一个对话框工程CTestDlg,用ResourceEditor加入一个ComboBoxEx控件,用ClassWizard加入一个Control成员m_box, 然后在CTestDlg.h中将CComboBoxEx改为CDriveBox,在CTestDlg.h开始处加一句#include  "CDriveBox.h",在CTestDlg::OnInitDialog()中加上m_box.Initialize()就OK了。用m_box.GetSelDrive()返回当前选择驱动器.如0为A盘,2为C盘。

excel数据驱动接口测试框架

接口测试自动化框架搭建                                                                                         ...
  • http_tester
  • http_tester
  • 2016年12月28日 09:44
  • 1495

I2C子系统驱动架构 - 驱动框架

文章系列I2C子系统驱动架构 - 简介I2C子系统驱动架构 - 驱动框架I2C子系统驱动架构 - 具体实现 基于linux内核4.6.3版本介绍 I2C驱动框架I2C驱动框架图如下所示,用户空间上...
  • l289123557
  • l289123557
  • 2016年07月03日 18:15
  • 5006

事件驱动框架(二)——状态机

事件驱动框架(二) 说明 本篇接上一篇事件驱动框架之后
  • DFSAE
  • DFSAE
  • 2016年11月01日 13:27
  • 2833

S7-300 T-CPU和变频器、伺服驱动器的组合应用

  • 2011年07月02日 22:25
  • 313KB
  • 下载

驱动器列表框

  • 2011年11月27日 11:58
  • 16KB
  • 下载

精彩编程与编程技巧-改进VB的驱动器列表框...

  • 2009年10月10日 17:46
  • 8KB
  • 下载

精彩编程与编程技巧-改进VB的驱动器列表框...

  • 2009年10月10日 23:34
  • 2KB
  • 下载

VC++ multicol_combo组合框实例

  • 2014年11月25日 14:34
  • 27KB
  • 下载

【组合框CComboBox】控件应用第八课

  • 2013年10月02日 23:06
  • 513KB
  • 下载

【组合框CComboBox】控件应用第九课

  • 2013年10月04日 01:07
  • 690KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:驱动器组合框
举报原因:
原因补充:

(最多只允许输入30个字)