Why is the "_" character in front of most variable names?

Example:

_SomeVar;
_Str;

I also notice:

m_SomeVar;


Is there some rule to this?
Should I do this?

And why is "lp" placed at the beginning of every DWORD type in MSVC++?

How come this type of "pre-fixing" isn't explained anywhere?