Click here to Skip to main content
15,886,578 members
Articles / Desktop Programming / MFC
Article

Drive Information

Rate me:
Please Sign up or sign in to vote.
4.76/5 (25 votes)
8 Feb 20032 min read 126.7K   3.4K   43   20
A CStatic derived class to show drive information.

Sample Image - DriveInfo.jpg

Introduction

All of us know that a very simple chart or an image can transfer more valuable information than a table or text to memory. Because of this, we use charts and images when we have complex set of data and informations.

I used this rule, to create a static derived class to show drive information in a visual manner. This class shows capacity of disk, used and free space of it with a simple pie chart.

Note: Part of code to draw pie chart was taken from article "Chart and Pie for data with hole" written by Tingshao Zhu

How to use

First add DriveInfo.h and DriveInfo.cpp files to your project. Then in your dialog resource editor, add new Static control (figure 2 shows it). Rename this static control ID to your desired ID, for example IDC_DRIVE_INFO (like figure 3). Run class wizard (Ctrl+W) and add new member variable with variable type CStatic (you must choose Control in category combo box). Named it as m_Drive. Figure 4 shows you how declare a new CStatic control.

Static control
Figure 2- Add new static control to dialog resource

Properties
Figure 3- Change ID of static control from IDC_STATIC to IDC_DRIVE_INFO

Add member variable
Figure 4- Add member variable with variable type CStatic

OK. Now in your dialog header file, change this line:

CStatic m_Drive;
to
CDriveInfo m_Drive;
Don't forget to include DriveInfo.h header file on top of your dialog class definition. Now your dialog definition looks like this:
// DriveInfoDlg.h : header file
//

#if !defined(AFX_DRIVEINFODLG_H__505181DF_1106_4370_8526_77AED93D4F5E__INCLUDED_)
#define AFX_DRIVEINFODLG_H__505181DF_1106_4370_8526_77AED93D4F5E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "DriveInfo.h"
/////////////////////////////////////////////////////////////////////////////
// CDriveInfoDlg dialog

class CDriveInfoDlg : public CDialog
{
// Construction
public:
    CDriveInfoDlg(CWnd* pParent = NULL);    // standard constructor

// Dialog Data
    //{{AFX_DATA(CDriveInfoDlg)
    enum { IDD = IDD_DRIVEINFO_DIALOG };
    CDriveInfo    m_Drive;    //Changed from CStatic
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CDriveInfoDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL

// Implementation
protected:
    HICON m_hIcon;

    // Generated message map functions
    //{{AFX_MSG(CDriveInfoDlg)
    virtual BOOL OnInitDialog();
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DRIVEINFODLG_H__505181DF_1106_4370_8526_77AED93D4F5E__INCLUDED_)

CDriveInfo class

CDriveInfo class has only two member function. Each of these member functions used to displayed information of desired drive.

void SetDriveLetter(LPCSTR szDriveLetter);
SetDriveLetter takes only one parameter, drive letter. For showing information of your desired drive, only pass drive letter of it. For example:

m_Drive.SetDriveLetter("c:\\");

will show statistics of drive C.

void SetDriveNumber(UINT iDriveNum);
If you don't know drive letter of specified disk, use this function. Just pass drive number and CDriveInfo will show drive information. For example:

m_Drive.SetDriveNumber(0);

will show informatoin of drive A.

Enjoy!

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
CEO Solaris Electronics LLC
United Arab Emirates United Arab Emirates
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 Acquisition 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 competition, my articles are:


You can see list of my articles, by clicking here


Comments and Discussions

 
GeneralMy vote of 5 Pin
Manoj Kumar Choubey26-Feb-12 19:48
professionalManoj Kumar Choubey26-Feb-12 19:48 
QuestionHard Drive Letter Assignment Pin
Member 38930658-Mar-07 2:10
Member 38930658-Mar-07 2:10 
GeneralDisplaying drive Type Pin
Jose Cezar S. Ynion25-Apr-04 19:12
Jose Cezar S. Ynion25-Apr-04 19:12 
GeneralRe: Displaying drive Type Pin
Anonymous26-Apr-04 3:45
Anonymous26-Apr-04 3:45 
GeneralRe: Displaying drive Type Pin
nackterkofferpacker16-Oct-07 3:51
nackterkofferpacker16-Oct-07 3:51 
GeneralI'm Iranian too! Pin
15-Jul-03 10:35
suss15-Jul-03 10:35 
GeneralRe: I'm Iranian too! Pin
Koundinya22-Apr-04 3:10
Koundinya22-Apr-04 3:10 
GeneralRe: I'm Iranian too! Pin
Wamuti6-Jul-07 6:57
Wamuti6-Jul-07 6:57 
Generalmb Pin
mb0676-Jul-03 18:00
sussmb0676-Jul-03 18:00 
GeneralI improoved the ctrl a bit: Pin
Da_Hero19-May-03 3:18
professionalDa_Hero19-May-03 3:18 
GeneralRe: I improoved the ctrl a bit: Pin
Abbas_Riazi19-May-03 19:04
professionalAbbas_Riazi19-May-03 19:04 
GeneralNice Pin
Jeff J9-Feb-03 8:55
Jeff J9-Feb-03 8:55 
GeneralRe: Nice Pin
Abbas_Riazi10-Feb-03 6:11
professionalAbbas_Riazi10-Feb-03 6:11 
GeneralErrors on compailing Pin
Piccinano9-Feb-03 6:24
Piccinano9-Feb-03 6:24 
GeneralRe: Errors on compailing Pin
Abbas_Riazi10-Feb-03 6:14
professionalAbbas_Riazi10-Feb-03 6:14 
GeneralRe: Errors on compailing Pin
Piccinano10-Feb-03 7:41
Piccinano10-Feb-03 7:41 
GeneralRe: Errors on compailing Pin
Abbas_Riazi10-Feb-03 20:02
professionalAbbas_Riazi10-Feb-03 20:02 
GeneralRe: Errors on compailing Pin
Piccinano11-Feb-03 2:52
Piccinano11-Feb-03 2:52 
GeneralWell done Pin
Todd C. Wilson9-Feb-03 5:39
Todd C. Wilson9-Feb-03 5:39 
GeneralRe: Well done Pin
Abbas_Riazi10-Feb-03 6:05
professionalAbbas_Riazi10-Feb-03 6:05 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.