Here we want to show installed devices of our PC like what a Device Manager shows. In Device Manager, installed devices are shown in specific categories like: DVD/CD-ROM Drives or Floppy disk controllers. In my previous article Enumerate Installed Devices Using Setup API, I show you how we can list all devices. In this article, installed devices are shown in a tree in their categories, like Device Manager.
For this purpose, I created a new class called
CDeviceTree that is inherited from
CTreeCtrl. Using of the new class is very simple.
How to use
First of all add DeviceTree.h and DeviceTree.cpp files to your project. Then in your dialog resource editor, add new Tree control (figure 2 shows it). Rename the control ID to your desired ID, for example
IDC_DEVICE_TREE. Run class wizard (Ctrl+W) and add new member variable with variable type
CDeviceTree does not appear in combo box, choose
CTreeCtrl, then in your dialog header file, rename
CDeviceTree). Name it as
Figure 2 - Add new tree control to dialog resource
Figure 3- Add member variable with variable type
CDeviceTree does not appear in Variable type combo box, simply choose
CTreeCtrl, then rename it to
CDeviceTree in your dialog header file. For example:
Don't forget to include DeviceTree.h to your dialog header file. OK, now everything is ready to compile!
CDeviceTree class contains only one public member function:
EnumDevices(). The function is responsible for enumerating all of the installed devices in their categories. The user must only use this function to see the tree of devices. The best way for this is
OnInitDialog() member function of main dialog. In other hand:
SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE);
return TRUE; }
The class definition is as below:
class CDeviceTree : public CTreeCtrl
int EnumDevices(int index, TCHAR* DeviceClassName, TCHAR* DeviceName);
int EnumDeviceClasses(int index, TCHAR* DeviceClassName,
TCHAR* DeviceClassDesc, BOOL* DevicePresent, int* ClassImage);
As you see, the application shows devices like Device Manager does (Figure 4):
I was born in Shiraz
, a very beautiful famous city in Iran. I started programming when I was 12 years old with GWBASIC. Since now, I worked with various programming languages from Basic, Foxpro, C/C++, Visual Basic, Pascal to MATLAB and now Visual C++.
I graduated from Iran University of Science & Technology
in Communication Eng., and now work as a system programmer for a telecommunication industry.
I wrote several programs and drivers for Synthesizers, Power Amplifiers, GPIB, GPS devices, Radio cards, Data Acqusition cards and so many related devices.
I'm author of several books like Learning C (primary and advanced), Learning Visual Basic, API application for VB, Teach Yourself Object Oriented Programming (OOP) and etc.
I'm winner of January, May, August 2003 and April 2005 best article of month competetion, my articles are:
You can see list of my articles, by clicking here