There is no, "if hannibal had won". Hannibal DID win. The Romans were defeated again and again during the second punic war, only the Romans were a people that would not accept defeat. Destroy a legion, they would raise another. Even earlier examples in their history, when Rome itself had fallen to her enemies, the Romans fought on, and eventually expelled the occupiers. It was in the Romans' 'national psyche' that they would lose battles, but never lose a war. the war would go on until eventually Rome won. Even if Hannibal had marched on Rome after Cannae, I doubt he would have been able to consolidate power there for any significant period of time.