Click here to Skip to main content
13,047,131 members (58,428 online)
Click here to Skip to main content
Add your own
alternative version


19 bookmarked
Posted 2 Apr 2005

How to create an enum and callback function

, 2 Apr 2005
Rate this:
Please Sign up or sign in to vote.
This article describes how to declare an enum function



Have you ever seen functions by name EnumFunctions? Like EnumWindows etc. Have you ever wondered how they are created? In this article, we will create a simple one! Just be relaxed and read this article to EOF!

What is an enum function?

These types of functions are ...!?! Let me explain like this: assume that you have some fruits. OK? Some apples, oranges, and bananas. You are searching for apples. And, for each apple you can find, you will shout: "Hey I found another apple!" This is the role of this type of functions: for each element, return something.

Let's start

Declaring an EnumFunction is simple. First, you should have a variable type to tell the function what kind of function is the input. See this code snippet (declarations in the header file):

typedef BOOL (CALLBACK*YOURPROCTYPE)(FirstType,SecondType,...);

Now see mine:


And for declaring the EnumFunction:

ReturnType WINAPI EnumFunction(YOURPROCTYPE lpProcname,arg-list,…);

And mine:


EnumFunc passes the parameters to a callback function:

ReturnType CALLBACK yourProcName(FirstType,SecondType,...);

Note that the argument list of this callback function must be what you give in YOURPROCTYPE:


Here are my sample code declarations:

void WINAPI EnumFiles(FILESPROC lpEnumFiles,LPCTSTR lpszFileName);
int CALLBACK EnumFilesProc (LPCTSTR lpszFileName);

And here goes the EnumFiles function. Its task is to find the files in the given path, and for each file, calls the callback function:

void WINAPI EnumFiles(FILESPROC lpEnumFiles,LPCTSTR lpszFileName)
        CString nfle;
        CFileFind file;
        BOOL bFind=file.FindFile(lpszFileName,NULL);//Find first file in the given
        while (bFind)//While bFind==True continue finding...
               bFind=file.FindNextFile(); //Find next file
               numoffiles=lpEnumFiles(file.GetFileName());//Call given callback function
               //by user with appropriate inputs 
        nfle.Format("%d  Files found",numoffiles);
        AfxMessageBox(nfle);//Give the user number of files found in
        //the given path

BOOL CALLBACK EnumFilesProc(LPCTSTR lpszFileName)
        return numoffiles;

Now for calling the EunmFunction, you only need to write some code:


In this source code, we will get a path and enumerate all the files in the path! I use this enumeration technique to get all the sections in an INI file, and you can do anything you want! Any opinions and comments are welcome. Or questions maybe..


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Web Developer
United States United States
I started Visual C++ on 2003 and I am a beginner now,I am working on a Network program and I am searching for some partners.I am intrested in DLLs and GUI in programing.

You may also be interested in...


Comments and Discussions

GeneralThank You! Pin
Andy San23-May-06 2:20
memberAndy San23-May-06 2:20 
QuestionWhat? Pin
Sreekanth Muralidharan6-Dec-05 19:24
memberSreekanth Muralidharan6-Dec-05 19:24 
AnswerRe: What? Pin
ThatsAlok6-Dec-05 21:46
memberThatsAlok6-Dec-05 21:46 
GeneralRe: What? Pin
Sreekanth Muralidharan8-Dec-05 16:51
memberSreekanth Muralidharan8-Dec-05 16:51 
GeneralRe: What? Pin
ThatsAlok8-Dec-05 17:34
memberThatsAlok8-Dec-05 17:34 
GeneralRe: What? Pin
Sreekanth Muralidharan8-Dec-05 22:00
memberSreekanth Muralidharan8-Dec-05 22:00 
GeneralRe: What? Pin
Sreekanth Muralidharan22-Nov-06 5:51
memberSreekanth Muralidharan22-Nov-06 5:51 
GeneralRe: What? Pin
ThatsAlok23-Nov-06 0:09
memberThatsAlok23-Nov-06 0:09 
GeneralRe: What? Pin
Sreekanth Muralidharan24-Nov-06 5:22
memberSreekanth Muralidharan24-Nov-06 5:22 
GeneralRe: What? Pin
oldkingcoleman21-Nov-06 7:51
memberoldkingcoleman21-Nov-06 7:51 

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.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170713.1 | Last Updated 2 Apr 2005
Article Copyright 2005 by dSolariuM
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid