ronstan, your question really is about paying for stuff in another country.
IMO the best way to go is a credit card. The credit card gives you the best bank rate of exchange on the day of the transaction.
I've heard from some that some credit card packages charge you more for being in another country. I have not run into that.
ATMs that are not run by your bank charge you for getting money from them, but that's better than a local merchant.
In most parts of Canada and the U.S. local merchants, charge you more than any bank to change your money. Let's face it, they can't lose on the transaction, so they almost have to charge you a bit more.
Your 2nd best way to get Canadian $ is to go to a Canadian bank. In my experience, U.S. banks charge you an extra fee every time you ask for $ in a non-U.S. currency.
Glad to help with any questions you have. There are lots of Ontario people here. Some, who went south for awhile are coming home now too.