Not sure what to suggest... but I understand where you are coming from and I do think people can be inconsiderate in these situations.
I just had a similar thing happen this week too. Met my friend on Thursday during the day and we went for lunch, I paid as it was her birthday on the Friday and she had made no plans apart from spending the evening with her dp, then I get a call from our other friend on Friday am, saying we are going to have early evening birthday drinks and a quick bite to eat for friend. Fine so I rock up, with a gift for birthday friend, I have a couple of drinks, there is a tab running, the bar is getting busy, we decide to move on for food, our friend who arranged the evening is chatting to someone else, so I end up splitting bill with birthday friends dp £25 each (it's fine, i think, will sort out when we get food). Change of plan friend who arranged night out decides not to join for food. We go for pizza, bill comes for food, dp declares birthday friend can't put her hand in her pocket! So I split bill again with dp... FFS!!!!
Not sure the best way to resolve these types of situation other than being a bit more ballsy and saying. 'Sorry but I didn't realise we were expected to pay for the birthday girl, I brought a gift instead!"
In these situations I just suck it up and think / hope that next time it work itself out, it will be my birthday or someone else will say, I'll get this as I forgot to pay last time or whatever!
I do try however when I am arranging nights out etc to be mindful of those who aren't drinking or consider affordable options that suit everyone etc. it may be worth just mentioning in the passing to one of your friends how you feel and hopefully that might prompt them to be more considerate next time but not in a patronizing poor friend way.