First off, this is a Windows-specific question. But I'll be nice and answer it anyway .
When you write your .RC file, you're basically telling Windows to include files in your executable and give them an ID number. (This may not sound very basic but that's as basic as it gets.)
When you type
Code:
MY_ICON ICON "c:/users/bijan/pictures/program icons/notepad.ico"
you're saying, "Windows! You listening? When I say the magic word, MY_ICON, I want you to load an ICON file with the data at "c:/users/bijan/pictures/program icons/notepad.ico"." (If it sounds like I'm talking down to you I honestly apologize. It's just that I find metaphors very useful.) So, MY_ICON is nothing more than a magic word, or in this case, a number.
You could technically write it like this:
Code:
101 ICON "c:/users/bijan/pictures/program icons/notepad.ico"
and the code would work, as long as you use 101 instead of MY_ICON in your code. But people find it easier to work with words, so they cleverly use #defines in a common file "resource.h".
resource.h:
Code:
#define MY_ICON 101
That's all it is. Now you can include "resource.h" in your .rc file as well as your .cpp file, and instead of referring to the data as '101', you refer to it as MY_ICON.
Hope this helps.