window_cl/WM_HANDLEINPUT

[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]
 NAME
 WM_HANDLEINPUT -- IDCMP input handling method
 SYNOPSIS
 result = DoMethod( winobj, WM_HANDLEINPUT, &code );
 FUNCTION
 This method is used to handle the IDCMP input of a window. Call
 this method when the signal bit of the window's UserPort is
 set. This method will return when it encounters a message that
 requires notifying your application or when the message port no
 longer contains messages for the window.
 The return value is two-part. The upper word describes the
 class of the event the value represents, and the lower word is
 a modifier that describes the event.
 Defined class return codes are:
 WMHI_IGNORE Ignore this event
 WMHI_LASTMSG No more messages
 WMHI_CLOSEWINDOW Close gadget hit
 WMHI_GADGETUP Gadget hit.
 WMHI_INACTIVE Window went inactive.
 WMHI_ACTIVE Window was activated.
 WMHI_NEWSIZE Window was resized.
 WMHI_MENUPICK A menu item was selected.
 WMHI_MENUHELP Help was pressed in a menu.
 WMHI_GADGETHELP A gadget sends a help message.
 WMHI_ICONIFY Window should be iconified.
 WMHI_UNICONIFY Window was deiconified.
 WMHI_RAWKEY Raw key code
 WMHI_VANILLAKEY Vanilla key code
 WMHI_CHANGEWINDOW Window moved (or depth arranged)
 The value of the lower word is defined for WMHI_GADGETUP and
 WMHI_GADGETHELP as the ID of the gadget, and for WMHI_MENUPICK
 and WMHI_MENUHELP as the menu code. WMHI_GAGDETHELP uses the
 special values 0 and WMHI_GADGETMASK as messages "pointer not
 over your window" and "pointer over your window but not over a
 gadget".
 WMHI_RAWKEY returns the raw key ID of the key being
 pressed (to get the qualifiers also, you have to use the IDCMP
 hook), and WMHI_VANILLAKEY returns the ASCII value of the key.
 WMHI_VANILLAKEY is only returned when you set IDCMP_VANILLAKEY.
 Windowclass itself does not need vanilla key IDCMP.
 WMHI_NEWSIZE returns some extra information in the low word:
 if WMF_ZOOMED is set, the window is now in zoomed state. If
 WMF_ZIPWINDOW is set, this resize was caused by either a
 click of the zoom gadget or a call to ZipWindow().
 WMHI_CHANGEWINDOW is returned when the window is moved. For
 resizing of the window, listen to WMHI_NEWSIZE. By setting
 WA_NotifyDepth, this event will also be returned for depth
 arranging. The lower word contains CWCODE_DEPTH in this case.
 WMHI_CLASSMASK masks the lower word of the result code out,
 while WMHI_GADGETMASK and WMHI_MENUMASK mask out the high word,
 leaving only the ID part of the result value.
 A generic application side of WM_HANDLEINPUT looks like this:
 GetAttr( WINDOW_SigMask, winobj, &wsig );
 mask = Wait(wsig); /* maybe other signals */
 if (mask & wsig)
 while ((result = DoMethod( winobj, WM_HANDLEINPUT, &code ))
 != WMHI_LASTMSG)
 switch (result & WMHI_CLASSMASK)
 {
 case WMHI_CLOSEWINDOW:
 close = TRUE;
 break;
 case WMHI_GADGETUP:
 switch (result & WMHI_GADGETMASK)
 {
 /* handle the gadgets here */
 }
 /* handle whatever other events you want here */
 }
 if (close)
 DisposeObject( winobj ); /* destroy the window */
 If you have set up the window to use a shared message port, you
 can simply call this method on each of the windows:
 if (mask & wsig)
 {
 WmHandleInputWin1();
 WmHandleInputWin2();
 WmHandleInputWin3();
 }
 INPUTS
 code -- A pointer to a WORD that should be set to contain the
 Code value from the IntuiMessage.
 RESULTS
 Windowclass will automatically respond with an appropriate
 action to many input events. When it does not know what to do
 with an event, it will return with a value as descibed above.

[Back to Amiga Developer Docs]

AltStyle によって変換されたページ (->オリジナル) /