Over the past 3 years, I've gained ~45 pounds from lifting and realizing that I needed to increase my calories. I'm definitely a hard gainer as well. I swear by milk, I refuse to drink whole milk though, always has grossed me out. I tend to stay away from protein shakes, I really think they are a waste of money. I prefer chocolate milk after a work out, pretty much has everything you need to refuel. But, what everyone else said, whole wheats are great, chicken, fish, eggs, peanut butter, beans, tuna. Oh, and a really sneaky good one that I've been using lately is Quinoa. If you haven't heard of it, it's a grain that is super high in protein, and has a lot of calories as well.
If I ever have a hard time getting in calories for a day, I go to Chipolte. I have a calorie tracker on my phone, and I added it up one day after a Chipolte meal, I had no idea how many calories you can rack up there so quickly. I usually order a burrito and chips/guac, which comes out to be just shy of 2,000 calories. Although the white rice/tortillas aren't particularly good for you, everything else is not terrible (at least in my eyes, it's not fried, it's not sugar filled).