I found a solution for myself. I still would like to know how cross threaded access could work for non-static variables in an MFC application though!
For those of you with a similar problem to mine:
My solution was to make the Windows hook CALLBACK functions be static (note: only put "static " before the function declarations in the header file - don't place them in the actual code) and to make the CRichEditCtrl static as well. Also, I had to move the CRichEditCtrl declaration outside of the header file (outside of the class), and I didn't place "[ProgramNameHere]::" before the variable names. So basically, I made CRichEditCtrl a global static variable, in normal-people talking terms.
This website helped me a little bit:
If anyone knows the answer to my question above (at the top of this post), please let me know!