$PBExportHeader$u_comctl_statusbar.sru $PBExportComments$Common Control Status Bar forward global type u_comctl_statusbar from userobject end type end forward global type u_comctl_statusbar from userobject integer width = 896 integer height = 112 userobjects objecttype = externalvisual! long backcolor = 67108864 string classname = "msctls_statusbar32" string libraryname = "comctl32.dll" long style = 1342177280 end type global u_comctl_statusbar u_comctl_statusbar type prototypes Protected : function long SendMessageString( long hWindow, uint Msg, ulong wParam, Ref string szText ) Library 'user32' alias for 'SendMessageA;Ansi' function long SendMessageLong( long hWindow, uint Msg, ulong wParam, Ref long Parts[] ) Library 'user32' alias for 'SendMessageA;Ansi' function long SendMessageRect( long hWindow, uint Msg, ulong wParam, Ref RECT lpRect ) Library 'user32' alias for 'SendMessageA;Ansi' end prototypes type variables // Status Bar Messages Constant Private Long WM_USER = 1024 Constant Private Long SB_SETTEXT = (WM_USER+1) Constant Private Long SB_GETTEXT = (WM_USER+2) Constant Private Long SB_GETTEXTLENGTH = (WM_USER+3) Constant Private Long SB_SETPARTS = (WM_USER+4) Constant Private Long SB_GETPARTS = (WM_USER+6) Constant Private Long SB_GETBORDERS = (WM_USER+7) Constant Private Long SB_SETMINHEIGHT = (WM_USER+8) Constant Private Long SB_SIMPLE = (WM_USER+9) Constant Private Long SB_GETRECT = (WM_USER+10) Constant Private Long SB_SETICON = (WM_USER+15) Constant Private Long SB_SETTIPTEXTA =(WM_USER+16) Constant Private Long SB_SETTIPTEXTW = (WM_USER+17) Constant Private Long SB_GETTIPTEXTA =(WM_USER+18) Constant Private Long SB_GETTIPTEXTW = (WM_USER+19) Constant Private Long SB_GETICON =(WM_USER+20) Constant Private Long SBARS_SIZEGRIP = //(WM_USER+20) // Status Bar Types Constant Public Long SBT_NOBORDERS = 256 Constant Public Long SBT_POPOUT = 512 Constant Public Long SBT_RTLREADING = 1024 Constant Public Long SBT_OWNERDRAW = 4096 end variables forward prototypes public subroutine of_gettext (readonly integer aipart, ref string astext) public function long of_getparts (ref long alparts[]) public function boolean of_setsimple (readonly boolean absimple) public subroutine of_setminheight (readonly long alMinHeight) public function integer of_gettextlength (readonly long alpart) public function boolean of_getrect (readonly long alPart, ref long alTop, ref long alLeft, ref long alRight, ref long alBottom) public function boolean of_getborders (ref long alhorizontalwidth, ref long alverticalwidth, integer alseperatorwidth) public function long of_geticon (readonly integer a_part) public subroutine of_seticon (readonly integer a_part, readonly long hicon) public function boolean of_setparts (long alparts[]) public function boolean of_settext (readonly integer aipart, readonly integer aistyle, string astext) end prototypes public subroutine of_gettext (readonly integer aipart, ref string astext);//=================================================================== // Function: uo_StatusBar::of_GetText() //------------------------------------------------------------------- // Description:The SB_GETTEXT message retrieves the text from the // specified part of a status window. //------------------------------------------------------------------- // Parameters: wParam = (WPARAM) iPart // lParam = (LPARAM) (LPSTR) szText // // iPart // Zero-based index of the part from which to retrieve text. // szText // Pointer to the buffer that receives the text. // This parameter is a null-terminated string. //------------------------------------------------------------------- // Returns: Returns a 32-bit value that consists of two 16-bit values. // The low word specifies the length, in characters, of the text. // The high word specifies the type of operation used to // draw the text. The type can be one of the following values: // // VALUE MEANING // -------------- ------------------------------------------------ // 0 The text is drawn with a border to appear lower // than the plane of the window. // SBT_NOBORDERS The text is drawn without borders. // SBT_POPOUT The text is drawn with a border to appear higher // than the plane of window. // SBT_RTLREADING Displays text using right-to-left reading order // on Hebrew or Arabic systems. // // If the text has the SBT_OWNERDRAW drawing type, this message // returns the 32-bit value associated with the text instead of // the length and operation type. //------------------------------------------------------------------- // © 1997 Microsoft Corporation. All rights reserved. //=================================================================== // Allocate space for buffer asText = Space(255) SendMessageString( Handle(This), SB_GETTEXT, aiPart, asText ) RETURN end subroutine public function long of_getparts (ref long alparts[]);//=================================================================== // Function: uo_StatusBar::of_GetParts() //------------------------------------------------------------------- // Description:The SB_GETPARTS message retrieves a count of the // parts in a status window. The message also retrieves // the coordinate of the right edge of the specified // number of parts. //------------------------------------------------------------------- // Parameters: wParam = (WPARAM) nParts // lParam = (LPARAM) (LPINT) aRightCoord // // nParts // Number of parts for which to retrieve coordinates. // If this parameter is greater than the number of parts in the // window, the message retrieves coordinates for existing parts only. // aRightCoord // Pointer to an integer array that has the same number of elements // as parts specified by nParts. Each element in the array receives // the client coordinate of the right edge of the corresponding part. // If an element is set to - 1, the position of the right edge for // that part extends to the right edge of the window. To retrieve // the current number of parts, set this parameter to zero. //------------------------------------------------------------------- // Returns: Returns the number of parts in the window if successful, // or zero otherwise. //------------------------------------------------------------------- // © 1997 Microsoft Corporation. All rights reserved. //=================================================================== long llCountParts, llIndex long llParts128[128], llParts[] // Allocate memory for unbouded array before calling API function. llParts[] = llParts128[] // Get all of the parts. llCountParts = SendMessageLong( Handle(This), SB_GETPARTS, UpperBound(llParts), llParts[] ) IF (llCountParts > 0) THEN // An array assignment will copy all 128 elements, which is undesirable. FOR llIndex = 1 TO llCountParts alParts[llIndex] = llParts[llIndex] NEXT END IF RETURN llCountParts end function public function boolean of_setsimple (readonly boolean absimple);//=================================================================== // Function: uo_StatusBar::of_SetSimple() //------------------------------------------------------------------- // Description:The SB_SIMPLE message specifies whether a status // window displays simple text or displays all window // parts set by a previous SB_SETPARTS message. // // NOTE: If the status window is being changed from nonsimple to // simple, or vice versa, the window is immediately redrawn. //------------------------------------------------------------------- // Parameters: wParam = (WPARAM) (BOOL) fSimple // lParam = 0 // //fSimple // Display type flag. If this parameter is TRUE, the window // displays simple text. If it is FALSE, it displays // multiple parts. //------------------------------------------------------------------- // Returns: Returns TRUE if set was successful. // Returns FALSE if an error occurs. //------------------------------------------------------------------- // © 1997 Microsoft Corporation. All rights reserved. //=================================================================== long llSimple // Convert boolean to 'C' style boolean (NON-ZERO = TRUE) IF abSimple THEN llSimple = 1 ELSE llSimple = 0 END IF RETURN (Send( Handle(This), SB_SIMPLE, llSimple, 0 ) > 0) end function public subroutine of_setminheight (readonly long alMinHeight);//=================================================================== // Function: uo_StatusBar::of_SetMinHeight() //------------------------------------------------------------------- // Description:The SB_SETMINHEIGHT message sets the minimum height // of a status window´s drawing area. // // NOTE: The minimum height is the sum of wParam and twice the width, // in pixels, of the vertical border of the status window. // An application must send the WM_SIZE message to the status // window to redraw the window. The wParam and lParam parameters // of the WM_SIZE message should be set to zero. //------------------------------------------------------------------- // Parameters: wParam = (WPARAM) minHeight // lParam = 0 // //minHeight // Minimum height, in pixels, of the window. //------------------------------------------------------------------- // Returns: <none> //------------------------------------------------------------------- // © 1997 Microsoft Corporation. All rights reserved. //=================================================================== Send( Handle(This), SB_SETMINHEIGHT, alMinHeight, 0 ) RETURN end subroutine public function integer of_gettextlength (readonly long alpart);//=================================================================== // Function: uo_StatusBar::of_GetTextLength() //------------------------------------------------------------------- // Description:The SB_GETTEXTLENGTH message retrieves the length, // in characters, of the text from the specified part // of a status window. //------------------------------------------------------------------- // Parameters: wParam = (WPARAM) iPart // lParam = 0 // // iPart // Zero-based index of the part from which to retrieve text. //------------------------------------------------------------------- // Returns: Returns a 32-bit value that consists of two 16-bit values. // The low word specifies the length, in characters, of the text. // The high word specifies the type of operation used to draw // the text. The type can be one of the following values: // // VALUE MEANING // -------------- -------------------------------------------------- // 0 The text is drawn with a border to appear lower // than the plane of the window. // SBT_NOBORDERS The text is drawn without borders. // SBT_OWNERDRAW The text is drawn by the parent window. // SBT_POPOUT The text is drawn with a border to appear higher // than the plane of the window. // SBT_RTLREADING Displays text using right-to-left reading order // on Hebrew or Arabic systems. //------------------------------------------------------------------- // © 1997 Microsoft Corporation. All rights reserved. //=================================================================== long llLength llLength = Send( Handle(This), SB_GETTEXTLENGTH, alPart, 0 ) RETURN IntLow( llLength ) end function public function boolean of_getrect (readonly long alPart, ref long alTop, ref long alLeft, ref long alRight, ref long alBottom);//=================================================================== // Function: uo_StatusBar::of_GetRect() //------------------------------------------------------------------- // Description:The SB_GETRECT message retrieves the bounding // rectangle of a part in a status window. //------------------------------------------------------------------- // Parameters: wParam = (WPARAM) iPart // lParam = (LPARAM) (LPRECT) lprc // // iPart // Zero-based index of the part whose bounding rectangle is to be // retrieved. // lprc // Pointer to a RECT structure that receives the bounding rectangle. //------------------------------------------------------------------- // Returns: If the operation succeeds, the return value is TRUE. // If the operation fails, the return value is FALSE. //------------------------------------------------------------------- // © 1997 Microsoft Corporation. All rights reserved. //=================================================================== boolean lbGetRect = FALSE RECT lRECT lbGetRect = ( SendMessageRect( Handle(This), SB_GETRECT, alPart, lRECT ) <> 0 ) IF lbGetRect THEN alTop = lRECT.Top alLeft = lRECT.Left alRight = lRECT.Right alBottom = lRECT.Bottom END IF RETURN lbGetRect end function public function boolean of_getborders (ref long alhorizontalwidth, ref long alverticalwidth, integer alseperatorwidth);//=================================================================== // Function: uo_StatusBar::of_GetParts() //------------------------------------------------------------------- // Description:The SB_GETBORDERS message retrieves the current // widths of the horizontal and vertical borders of a // status window. // // NOTE: The borders determine the spacing between the outside edge // of the window and the rectangles within the window that // contain text. // The borders also determine the spacing between rectangles. //------------------------------------------------------------------- // Parameters: wParam = 0 // lParam = (LPARAM) (LPINT) aBorders; // // aBorders // Pointer to an integer array that has three elements. // The first element receives the width of the horizontal border, // the second receives the width of the vertical border, // and the third receives the width of the border between rectangles. //------------------------------------------------------------------- // Returns: If the operation succeeds, the return value is TRUE. // If the operation fails, the return value is FALSE. //------------------------------------------------------------------- // © 1997 Microsoft Corporation. All rights reserved. //=================================================================== long llBorders[] boolean lbGetBorders = FALSE // Initialise Unbounded array to correct size. llBorders[3] = 0 llBorders[2] = 0 llBorders[1] = 0 lbGetBorders = ( SendMessageLong( Handle(This), SB_GETBORDERS, 0, llBorders[] ) <> 0) IF lbGetBorders THEN alHorizontalWidth = llBorders[1] alVerticalWidth = llBorders[2] alSeperatorWidth = llBorders[3] END IF RETURN lbGetBorders end function public function long of_geticon (readonly integer a_part);//==================================================================== // Function - of_geticon for uo_comctl_statusbar //-------------------------------------------------------------------- // Description: Get the current icon assigned to a panel (if any) //-------------------------------------------------------------------- // Arguments: // // integer a_part // Zero-based index of the part that will receive the icon. // If this parameter is -1, the status bar is assumed to be a simple status bar. //-------------------------------------------------------------------- // Returns: (long) the handle of the icon //-------------------------------------------------------------------- // Author: Gabriel B. Abulencia Date: November 12, 1999 // Company: NetStorm Computing //==================================================================== RETURN Send( Handle(This), SB_GETICON, a_part, 0) end function public subroutine of_seticon (readonly integer a_part, readonly long hicon);//==================================================================== // Function - of_seticon for uo_comctl_statusbar //-------------------------------------------------------------------- // Description: Set the icon to be displayed on the given part //-------------------------------------------------------------------- // Arguments: // // integer a_part // Zero-based index of the part that will receive the icon. // If this parameter is -1, the status bar is assumed to be a simple status bar. // long hicon // Handle to the icon to be set. If this value is NULL, the icon is removed from the part. //-------------------------------------------------------------------- // Returns: (None) //-------------------------------------------------------------------- // Author: Gabriel B. Abulencia Date: November 12, 1999 // Company: NetStorm Computing //==================================================================== Send( Handle(This), SB_SETICON, a_part, hicon) end subroutine public function boolean of_setparts (long alparts[]);//=================================================================== // Function: uo_StatusBar::of_SetParts() //------------------------------------------------------------------- // Description:The SB_SETPARTS message sets the number of parts // in a status window and the coordinate of the right // edge of each part. //------------------------------------------------------------------- // Parameters: wParam = (WPARAM) nParts // lParam = (LPARAM) (LPINT) aWidths // // nParts // Number of parts to set. The number of parts cannot be greater // than 255. // aWidths // Pointer to an integer array that has the same number of // elements as parts specified by nParts. Each element in the // array specifies the position, in client coordinates, of the // right edge of the corresponding part. If an element is - 1, // the position of the right edge for that part extends to the // right edge of the window. //------------------------------------------------------------------- // Returns: If the operation succeeds, the return value is TRUE. // If the operation fails, the return value is FALSE. //------------------------------------------------------------------- // © 1997 Microsoft Corporation. All rights reserved. //=================================================================== long llCountParts boolean lbSetParts = FALSE llCountParts = UpperBound( alParts[] ) IF llCountParts > 0 THEN lbSetParts = (SendMessageLong( Handle(This), SB_SETPARTS, llCountParts, alParts[] ) <> 0) END IF RETURN lbSetParts end function public function boolean of_settext (readonly integer aipart, readonly integer aistyle, string astext);//=================================================================== // Function: uo_StatusBar::of_SetText() //------------------------------------------------------------------- // Description:The SB_SETTEXT message sets the text in the specified // part of a status window. // The message invalidates the portion of the window that // has changed, causing it to display the new text when // the window next receives the WM_PAINT message. //------------------------------------------------------------------- // Parameters: wParam = (WPARAM) iPart | uType // lParam = (LPARAM) (LPSTR) szText // // iPart // Zero-based index of the part to set. If this value is 255, // the status window is assumed to be a simple window having only // one part. // uType // Type of drawing operation. // This parameter can be one of the following values: // // VALUE MEANING // -------------- -------------------------------------------------- // 0 The text is drawn with a border to appear lower // than the plane of the window. // SBT_NOBORDERS The text is drawn without borders. // SBT_OWNERDRAW The text is drawn by the parent window. // SBT_POPOUT The text is drawn with a border to appear higher // than the plane of the window. // SBT_RTLREADING Displays text using right-to-left reading order // on Hebrew or Arabic systems. // szText // Pointer to a null-terminated string that specifies the text to set. // If uType is SBT_OWNERDRAW, this parameter represents 32 bits of // data. The parent window must interpret the data and draw the text // when it receives the WM_DRAWITEM message. //------------------------------------------------------------------- // Returns: If the operation succeeds, the return value is TRUE. // If the operation fails, the return value is FALSE. //------------------------------------------------------------------- // © 1997 Microsoft Corporation. All rights reserved. //=================================================================== RETURN SendMessageString( Handle(This), SB_SETTEXT, aiPart + aiStyle, asText ) <> 0 end function on u_comctl_statusbar.create end on on u_comctl_statusbar.destroy end on
- Sources
- Kodigo
- OpenExplorer
- u_comctl_statusbar.sru
File: u_comctl_statusbar.sru
Size: 21184
Date: Mon, 07 Apr 2008 21:32:42 +0200
Size: 21184
Date: Mon, 07 Apr 2008 21:32:42 +0200
- userobject u_comctl_statusbar(sru)
- of_getborders (ref long alhorizontalwidth, ref long alverticalwidth, integer alseperatorwidth) returns boolean
- of_geticon (readonly integer a_part) returns long
- of_getparts (ref long alparts[]) returns long
- of_getrect (readonly long alpart, ref long altop, ref long alleft, ref long alright, ref long albottom) returns boolean
- of_gettext (readonly integer aipart, ref string astext)
- of_gettextlength (readonly long alpart) returns integer
- of_seticon (readonly integer a_part, readonly long hicon)
- of_setminheight (readonly long alminheight)
- of_setparts (long alparts[]) returns boolean
- of_setsimple (readonly boolean absimple) returns boolean
- of_settext (readonly integer aipart, readonly integer aistyle, string astext) returns boolean