Io aggiungerei una cosa .... chiamare una malloc (e in generale funzioni che allocano risorse) in modo così "indiscriminato" all'inizio di una window/dialog procedure indipendentemente dal messaggio, è una pessima idea.