Peut-être que g n'est pas bon.
Il faut que cela vienne du paint event handler, ce qui ne semble pas être le cas ici.
Voir l'exemple http://msdn.microsoft.com/en-us/library/xckcwxsa.aspx
En plus, il ne faut pas raffraichir, car sinon, selon l'endroit ou le dessin est fait, le dessin est écrasé, ou bien il est dessiné deux fois, ou encore il est redessiné une infinité de fois.
D'une manière générale, sous Windows, il existe un bon et un mauvais moment pour dessiner.
Le bon moment, c'est quand Windows gère le message WM_PAINT qui est au coeur de la gestion des fenêtre Windows, et qui, au niveau supérieur, s'appelle le paint event handler.
Le mauvais moment, c'est en dehors du cas précédent.
Il existe un paint event handler par fenêtre (le mot fenêtre peut désigner une fenêtre ordinaire, ou un bouton, ou autre chose). Chaque fenêtre est identifiée par son handle (handle != handler). En C++, les handle sont implicites. Ils dépendent de l'objet concerné par le contexte.
De plus, il faut aussi se méfier du système de coordonnées, car parfois l'unité est le pixel, et parfois l'unité est autre chose, donc quand on écrit x=100 on peut se retrouver parfois hors des limites.