I wouldn't allow his upset to stop you giving milk in a cup, he may well be grumpy about it for a while. You will need to be consistent and firm about it, and he will eventually accept it.
I would also decide on an amount of milk you're happy with (eg the 300ml that is often recommended as a suggested amount), and give only that much milk. If he asks for more after that, then tell him he can have water instead and then stick to that.
With my DS, if he says things like "I don't want water!", I will reply with something like "that's ok, you don't have to drink it if you don't want it", and then repeat that every time he says he doesn't want water. If he asks again for milk, I will simply repeat "you've had x amount of milk, you can have water instead now". And repeat it every time I'm asked.
With regard to food, again I would just stick with giving the food you've decided to cook and no alternatives. You could include one element you know he's likely to eat, but also include a normal range of food. If he says he doesn't want it, again reply with a phrase like "that's ok, you don't have to eat it if you're not hungry". Repeat as necessary, and don't offer any alternatives or replacements if he doesn't eat it. Offer the following snack/meal as normal, whether he's eaten the meal before or not. Try not to comment on whether he's eating or not, and try not to ask him to eat, encourage, cajole etc - just leave him to it and eat yours. Clear away after a reasonable amount of time, and give a 5 minute warning before you do so he knows that's what's going to happen.
It may well take a long time for him to calm down around meal times, so you will need to be persistent. Try as much as you can to take any emotion and stress out of meal times. If he doesn't want to eat, then that's his choice and that's ok. But there are no alternatives or extra snacks. He will get there eventually!