Vamos a ver:excl:
El codigo que propones es correcto porque como tu bien dices la variable estática dura durante tuda la vida del programa, de modo que el cuadro de dialogo puede serguir accediendo a la estructura una vez finalizada la funcion, porque tu le has pasado el puntero a la estructura.
Es decir, el cuadro de dialogo accede a una zona de memoria (que permanece) no accede a traves de la variable cuyo ambito a terminado
De todas formas esto no te serviría si tu quieres acceder a la estructura a no ser que pongas la variable como global.
Espero a verte aclarado el tema.