#define GRID    5

U0 DrawMyMs(CDC *dc,I64 x,I64 y)
{
  dc->thick=1;
  dc->flags&=~(DCF_TRANSFORMATION|DCF_SYMMETRY);
  GrRect(dc,x,y,GRID,GRID);
}

U0 GridDemo()
{
  CGridGlbls old_grid;
  U0 (*old_draw_ms)(CDC *dc,I64 x,I64 y); //Can't init this type of var.
  MemCpy(&old_grid,&ms_grid,sizeof(CGridGlbls));
  GridInit;
  ms_grid.snap=TRUE; //You can set other stuff.
  ms_grid.x=GRID;
  ms_grid.y=GRID;
  old_draw_ms=gr.fp_draw_ms;
  gr.fp_draw_ms=&DrawMyMs;
  while (!ms.lb)  {//Left bttn to exit.
    GrPlot(,ms.pos.x,ms.pos.y);
    Yield;
  }
  DCFill;
  gr.fp_draw_ms=old_draw_ms;
  MemCpy(&ms_grid,&old_grid,sizeof(CGridGlbls));
}

GridDemo;