Tue, 02 Dec 2008
Ocaml : Null Cursor in lablgtk.
I need to be able to hide the cursor in an Ocaml/lablgtk/Cairo program I'm writing (a touchscreen calibration utility to go with the Zytouch driver). Usually this is done by creating a small 1x1 pixel cursor that is transparent, but I couldn't find any existing Ocaml/lablgtk code to do it. With a little help from Jacques Garrigue on the lablgtk mailing list I came up with the following function to create a cursor:
  let create_null_cursor win =
      let w, h = 1, 1 in
      let mask = Gdk.Bitmap.create ~window:win ~width:w ~height:h () in
      let pixmap = Gdk.Pixmap.create ~window:win ~width:w ~height:h ~depth:1 () in
      let color = Gdk.Color.alloc (Gdk.Color.get_system_colormap ()) (`RGB (0, 0, 0)) in
      Gdk.Cursor.create_from_pixmap pixmap mask color color w h
which I use as follows:
let win = GWindow.window ~resizable:true () in ignore (win#connect#destroy GMain.quit) ; (* More code here. *) win#show () ; (* Must set the cursor after win#show () or we get a Gpointer.NULL exception. *) let cursor = create_null_cursor win#misc#window in Gdk.Window.set_cursor win#misc#window cursor ; GMain.main ()
Problem solved.
Posted at: 21:36 | Category: CodeHacking/Ocaml | Permalink
 
				![[operator<< is not my friend]](http://yosefk.com/c++fqa/images/operator.png) 
				