comp.lang.ada
 help / color / mirror / Atom feed
* Win32 Tool-tip controls in Ada
@ 1999-11-17  0:00 jboulais
  0 siblings, 0 replies; only message in thread
From: jboulais @ 1999-11-17  0:00 UTC (permalink / raw)


Does anyone have experience using the Win32 Tool-tip control in Ada?
I'm trying to create tool-tips for 2 panes of status windows, one at the
top of my main window, and one at the bottom.  The status window is a
child of the main window, and I created the tool-tip off the status
window.

TopStatusWnd_Tooltip_Handle
   := Win32.Winuser.CreateWindowEx (
         dwExStyle    => 0                                        ,
         lpClassName  => To_Ptr ( Win32.Sikorsky.TOOLTIPS_CLASS ) ,
         lpWindowName => To_Ptr ( "" & Win32.Nul )                ,
         dwStyle      => Win32.Sikorsky.TTS_ALWAYSTIP             ,
         X            => Win32.Winuser.CW_USEDEFAULT              ,
         Y            => Win32.Winuser.CW_USEDEFAULT              ,
         nWidth       => Win32.Winuser.CW_USEDEFAULT              ,
         nHeight      => Win32.Winuser.CW_USEDEFAULT              ,
         hWndParent   => Handle_To_TopStatusWnd                   ,
         hMenu        => System.Null_Address                      ,
         hInstance    => hInstance                                ,
         lpParam      => System.Null_Address                      ) ;

I setup the "regions" (it's a 4 pane status window) for the tool-tips in
a procedure that is called after the above code, which re-sizes my
window to one of 3 distict size.  After that I call another procedure
that fills out both the status windows (which works) and the
corresponding tool-tip for a given, menu selectable status window
configuration. I also set up a windows procedure for the status window
that catches all of the mouse messages and relays them to the tool-tip's
handle.  Bear in mind I had to implement a lot of the bindings for
this, in that they are not in the level 3 win API ( hence the
Win32.Sikorsky package), but we do a lot of that, and I'm fairly
confident that all is well there.  Any suggestions or examples would be
greatly appreciated.

This code is effective called after the above, in a separate procedure
that sizes all of many child windows. It devides up the status window
into the 4 rectangles for it's 4 even sized panes.
------------------------------------------------------------------------
Ignore_BOOL := Win32.Winuser.GetClientRect (
                  hWnd   => Handle_To_TopStatusWnd     ,
                  lpRect => TopStatus_Rectangle'Access ) ;

TopSingleStatus_Length
   := ( TopStatus_Rectangle.right - TopStatus_Rectangle.left )
      / Win32.Long ( Number_Status_Wnd_Panes ) ;

for Top_Index in 0 .. Number_Status_Wnd_Panes - 1 loop

   TopStatusWnd_Tooltip_Info.cbSize
      := Win32.Sikorsky.ToolInfo'size ;

   TopStatusWnd_Tooltip_Info.uflags := 0 ;

   TopStatusWnd_Tooltip_Info.hWnd
      := Handle_To_TopStatusWnd ;

   TopStatusWnd_Tooltip_Info.hInst := hInstance ;

   TopStatusWnd_Tooltip_Info.uId := 0 ;

   TopStatusWnd_Tooltip_Info.lpszText
      := To_Ptr (
            TopStatusWnd_Tooltip_Array ( Win32.INT ( Top_Index ) ) ) ;

   TopStatusWnd_Tooltip_Info.rect.left
      := TopStatus_Rectangle.left +
         Win32.Long ( Top_Index )
            * TopSingleStatus_Length ;

   TopStatusWnd_Tooltip_Info.rect.top := TopStatus_Rectangle.top ;

   TopStatusWnd_Tooltip_Info.rect.right
      := TopStatusWnd_Tooltip_Info.rect.left + TopSingleStatus_Length ;

   TopStatusWnd_Tooltip_Info.rect.bottom := TopStatus_Rectangle.bottom ;

end loop ;

Ignore_LRESULT
   := Win32.Winuser.SendMessage (
         hWnd   => TopStatusWnd_Tooltip_Handle                     ,
         Msg    => Win32.Sikorsky.TTM_ADDTOOL                      ,
         wParam => 0                                               ,
         lParam => To_LPARAM ( TopStatusWnd_Tooltip_Info'address ) ) ;
------------------------------------------------------------------------

-----------------
Jeffrey Boulais
-----------------


Sent via Deja.com http://www.deja.com/
Before you buy.




^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~1999-11-17  0:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-11-17  0:00 Win32 Tool-tip controls in Ada jboulais

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox