Property Structures & Constants
Note that in the WM_CREATE
message of the main processing function _SB_WndProc
, I use two structures for defining the variables that I will use in the control internally and externally (named _SIMPLEBUTTON_PROPERTIES
and SIMPLEBUTTON_PROPERTIES
), although they aren't used directly by most controls, instead I opt to use constant values that are offsets into the allocated memory.
For example, the internal variables structure I use is defined as such:
_SIMPLEBUTTON_PROPERTIES STRUCT
dwEnabledState DD ?
dwMouseOver DD ?
dwSelectedState DD ?
dwMouseDown DD ?
_SIMPLEBUTTON_PROPERTIES ENDS
with the internal variables (or properties) used, defined as constants:
@SimpleButtonEnabledState EQU 0
@SimpleButtonMouseOver EQU 4
@SimpleButtonSelectedState EQU 8
@SimpleButtonMouseDown EQU 12
So the memory block that the four internal variables are stored in, starts at offset 0 for the first one, offset 4 for the next and so on (assuming all variables are dword values of course). We will see later on getting and setting these internal and external variables using the helper functions: __GetIntProperty
, __SetIntProperty
, __GetExtProperty
and __SetExtProperty
.
The external properties and structure (SIMPLEBUTTON_PROPERTIES)
) is defined similarly in the SimpleButton.inc
file for the end-user. Typically the end-user wont make use of the structure directly, its just added as a convienance - mainly for the use by the developer. It is easier to use SIZEOF
structurename to pass to the __AllocMemProperties
function to determine the size of memory to allocate for our control's properties.
Here is the list of external properties constants that we define for the end-user:
@SimpleButtonTextFont EQU 0 ; hFont
@SimpleButtonTextColor EQU 4 ; Colorref
@SimpleButtonTextColorAlt EQU 8 ; Colorref
@SimpleButtonTextColorSel EQU 12 ; Colorref
@SimpleButtonTextColorSelAlt EQU 16 ; Colorref
@SimpleButtonTextColorDisabled EQU 20 ; Colorref
@SimpleButtonBackColor EQU 24 ; Colorref
@SimpleButtonBackColorAlt EQU 28 ; Colorref
@SimpleButtonBackColorSel EQU 32 ; Colorref
@SimpleButtonBackColorSelAlt EQU 36 ; Colorref
@SimpleButtonBackColorDisabled EQU 40 ; Colorref
@SimpleButtonBorderColor EQU 44 ; Colorref
@SimpleButtonBorderColorAlt EQU 48 ; Colorref
@SimpleButtonBorderColorSel EQU 52 ; Colorref
@SimpleButtonBorderColorSelAlt EQU 56 ; Colorref
@SimpleButtonBorderColorDisabled EQU 60 ; Colorref
@SimpleButtonBorderStyle EQU 64 ; Border Style Flags
Last updated
Was this helpful?