驱动器组合框

 

 

相信用过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盘。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: UEGamePlay架是基于Unreal Engine引擎的一个游戏开发架,它提供了一些常用的游戏功能和工具,包括任务系统、物品系统、属性系统、AI行为树、技能系统等等,可以帮助开发者快速构建游戏玩法。 UEGamePlay架的核心思想是通过数据驱动来实现游戏逻辑,并提供了一些可扩展的接口,方便开发者根据自己的需求进行定制。同时,UEGamePlay架还充分利用了Unreal Engine的强大功能,如Blueprint可视化编程、物理引擎等等,使得游戏开发更加高效和便捷。 总之,UEGamePlay架是一个非常实用的游戏开发架,可以帮助开发者快速构建游戏玩法,提高开发效率,并且可以根据自己的需求进行定制。 ### 回答2: UEGamePlay架是一款由Epic Games开发的用于制作游戏的工具集。它是Unreal Engine引擎的一部分,旨在提供开发者一个完整且高度可定制的游戏逻辑系统。 UEGamePlay架为开发者提供了一套强大且简单易用的工具和组件,以便于构建复杂的游戏逻辑。它具有以下特点: 首先,UEGamePlay架提供了有力的条件和动作系统。通过条件系统,开发者可以根据游戏中的各种条件来制定逻辑判断,例如检查是否满足某个条件后执行某个操作。而动作系统允许开发者定义各种特定的行为,例如角色的移动、攻击或者触发事件等。 其次,UEGamePlay架支持高度可定制的游戏逻辑。开发者可以轻松地创建新的条件和动作,并将它们与已有的逻辑组合在一起,以满足不同的游戏需求。这种灵活性使得开发者能够创造出独特且复杂的游戏玩法。 此外,UEGamePlay架提供了友好的编辑器工具,以便开发者进行逻辑的设计和调试。开发者可以轻松地创建和修改条件和动作,实时预览和测试游戏逻辑的运行情况,以便调试和优化游戏的运行效果。 总的来说,UEGamePlay架是一款强大而灵活的游戏逻辑系统,为开发者提供了一系列有力的工具和组件,以便于制作高质量的游戏。无论是制作简单的小游戏还是复杂的大型游戏,UEGamePlay架都能满足开发者的需求,并提供了良好的可定制性和易用性。 ### 回答3: UGameplay架是一种专门为开发游戏而设计的工具和系统集合。它提供了一套强大的功能,方便开发人员创建、管理和互动游戏世界中的各种元素。 首先,UEGameplay架提供了一个强大的蓝图系统,开发人员可以使用蓝图快速创建游戏逻辑。蓝图是一种可视化的编程方式,通过将代码逻辑以图形化的方式连接在一起,使得编写游戏逻辑变得简单、直观。这使得非编程人员也能参与到游戏开发中,提高了开发效率。 其次,UEGameplay架提供了一系列游戏物理引擎,用于模拟和处理游戏中的各种物理效果,如碰撞、力、重力等。这使得游戏中的角色、物体之间的互动更加真实和逼真,增强了游戏的可玩性和视觉效果。 此外,UEGameplay架还提供了多人游戏功能,使得开发人员能够轻松地创建多人在线游戏。开发人员可以使用UEGameplay架中的网络功能,实现玩家之间的实时通信和协作,从而打造出丰富、多样和具有竞争性的游戏体验。 最后,UEGameplay架还提供了一套强大的编辑器工具,方便开发人员进行游戏内容的编辑和调试。开发人员可以使用这些工具创建和编辑地图、关卡、角色、物体等游戏元素,以及进行游戏逻辑的调试和测试,提高了游戏开发的效率和质量。 总的来说,UEGameplay架是一种功能强大、灵活易用的游戏开发架,提供了丰富的工具和系统,帮助开发人员创建出高质量、富有创意和多人互动的游戏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值