Typical activities are keyboard and mouse events. These can be detected for single applications by implementing handlers for common messages. See
Keyboard Input (Windows)[
^],
Mouse Input (Windows)[
^], and
Raw Input (Windows)[
^].
For system wide monitoring you need to install hooks. See
Using Hooks (Windows)[
^].
What a user has viewed can't be really detected. But you can monitor events like opening files. An example can be found at
Windows File Monitoring System Using Windows API Hooking[
^].
Because your question is rather vague you should now have some keywords for further online research ("windows c++ hook" together with the kind of activity to be monitored).
An existing tool that may cover some of your requirements is the
Process Monitor[
^].