File-boxes in MFC

Wouldn’t it be nice to have drive, dir and file-boxes, as in VisualBasic, in MFC.
This project give you just that possibility. To use these list-boxes in your project
include FileList.h and FileList.cpp in your project and add the following code:

class CLBFileDlg : public CDialog

// Dialog Data


virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);


//the three boxes in this example
CFileList m_cflDrive;
CFileList m_cflDir;
CFileList m_cflFile;
//user-defined message for communication between the boxes
//and dialog (msg is trapped in WindowProc)
UINT m_nBoxMsg;


BOOL CLBFileDlg::OnInitDialog()

// TODO: Add extra initialization here
//register a personal, user-defined msg so that our boxes can post msg’s for
m_nBoxMsg=RegisterWindowMessage(“Tom’s little box”);

//init the boxes

//the definition of:
//BOOL InitBox(UINT res_from_template,
// CWnd *parent,
// LPSTR lpszPath,
// LPSTR lpszFileMask,
// UINT flags,
// UINT msg);

m_cflDrive.InitBox(IDC_LIST_DRIVE, this, “c:\\”, “*.*”, DRIVES, m_nBoxMsg);
m_cflDir.InitBox(IDC_LIST_DIR, this, “c:\\”, “*.*”, DIRECTORIES, m_nBoxMsg);
m_cflFile.InitBox(IDC_LIST_FILE, this, “c:\\”, “*.*”, FILES, m_nBoxMsg);

//in this example we’ll just display the selected file in a CStatic
m_clsSelection.InitSelect(IDC_SELECT, this);


LRESULT CLBFileDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
// TODO: Add your specialized code here and/or call the base class

//process the user-defined msg
CString temp_string;

//update the dir-box and file-box if we change drive

//update the file-box if we change directory
else if(wParam==DIRECTORIES)

//for simplicity we’ll just show the selected file
//in the CStatic
else if(wParam==FILES)
m_cflFile.GetText(m_cflFile.GetCurSel(), temp_string);

return CDialog::WindowProc(message, wParam, lParam);

Minor update:

Changes since v. 1.0

  • improving update in FillBox(): no update untill the box is filled
  • much faster draw
  • declaring CheckEntry as inline and changing the argument
  • moving FillBox over to private-sector
  • improving OnDblclk():
    if you use the dir-box a lot then the path may look like this
    this a right and proper path but of course this one can
    be much slimmer, like this:

As far as I can see, all the updates are internal to FileList and
does not invalidate usage of this class. However since the header has
had an update, a recompile of the project is required.

Download demo project – 20 KB

More by Author

Must Read