Yep... Croatian railways timetable isn't that convenient as more standardized German, Austrian etc., but still it is possible to find out exact schedule. During winter there are only 3 direct trains per day: two daily ICN (fast tilting trains) 7:50-13:49 and 15:19-20:52 + slower overnight train: 22:50-6:56. Supplement for all the InterCity trains in Croatia is 16 kuna (comparing to regular passenger train tariff).
Zagreb to Budapest is rather easy and definitely no need to go via Austria. As of now, there are 3 direct trains per day:
a) 4:56-10:59 (it is Venice-Budapest train EN240)
b) 10:00-16:54 (Zagreb-Budapest train #205)
c) 15:45-22:29 (Zagreb-Budapest carriages which run with Zagreb-Vienna train #284, but get reattached to domestic Hungarian IC train to Budapest in Gyékényes)
Actually purchasing return tickets Zagreb-Budapest gets you 60% discount from the regular tariff, so it is cheaper to purchase return ticket instead of one way - as of now it costs 30 euro. In case if it is too expensive for you, then there are ways to travel cheaper, but it will require "tricky" tickets (will take more time to purchase).
p.s. just in case - here you can find all the departures from Zagreb main train station -
http://www.hznet.hr/iSite3/Default.aspx?sec=169 (click on train number to see schedule), but be careful - some trains run only during summer season.