If I understand correctly, the forum doesn't keep track of each individual message that you've read... The "new posts" icons on the forum main page will show you all forums with new posts since you last visited. So, the icons will not change during your current visit. When you click on "mark all posts as read", you are simply changing the "last visit" time to the current time, as if your "last visit" were a few seconds ago.
I don't know of a way to do what you are asking, which is to track, post by post, which posts you have viewed and display the appropriate icon. To do so would require a database field to track whether or not you have read a particular post; the forum currently does not do that (as far as I know).