exradialmenu - faq
Exontrol.COM Software - Frequently Asked Questions - ExRadialMenu Component
The control's release notes can be found on our web site, looking for the Release Notes column in the control's main page. Click here for direct link.
"I would like to put the control on a form, then make the form transparent so the control appears on the desktop."

The control support transparent form, or in other words, displaying the control's itself without its form behind. 

 The following screen shot shows the control on a transparent form:

 The following screen shot shows the control on an opaque form:


In order to make your eXRadialMenu control to display a popup/widget, ( no form behind or form transparent ), you need to use the following properties:

  • Float property of the control, specifies whether the control is shown as float. You can use the Float property on exRadialMenuFloat or exRadialMenuFloatTopmost, to display the control as float ( places the control above all non-topmost windows )
The setup installs the C:\Program Files\Exontrol\ExRadialMenu\Sample\VB\Float or C:\Program Files\Exontrol\ExRadialMenu\Sample\VC\Float that shows all these working.
The following screen shot shows the transparent-control on a form:

In order to make your eXRadialMenu library to display a transparent-control inside your form/dialog/window/child, you need to use the following properties:

  • LayerUpdate property of the control, indicates where the control's content is updated. By default, the LayerUpdate property property is exLayerUpdateControl, which indicates that the control's content is shown on the control itself ( no effect ). If the LayerUpdate property is exLayerUpdateParent, the control does not show its background on the form that hosts it.
  • You need to add <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>, to your manifest file as follows. The transparent-eXRadialMenu as a child of your form, it is supported on Windows 8, and later.
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    	<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    			<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
The setup installs the  C:\Program Files\Exontrol\ExRadialMenu\Sample\VC\Widget-Child sample that shows all these working.
The control provides the AllowMoveOnFloat property allows moving the control to a new position, when the user clicks and drags it over the screen, while it is floating ( Float property is set to a non-zero value ).

The trick is sending the WM_NCLBUTTONDOWN message to the form/dialog/window that hosts the control, when the MouseDown event of the control occurs.

In VB, you need to use a snippet of code as follows:

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub RadialMenu1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    SendMessage Me.hwnd, &HA1, 2, 0
End Sub

In C++, you can call:

, when control's MouseDown event occurs, where the m_hWnd, is the handle of the dialog that hosts the eXRadialMenu control, WM_NCLBUTTONDOWN is defined as 0x00A1, and the HTCAPTION as 2.
You can use directly the SetLayeredWindowAttributes API function, or you can use the eXTransparent component:

In VB, you can use a code like follows:

Private Declare Function SetLayeredWindowAttributes Lib "user32.dll" (ByVal hwnd As Long, ByVal
crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Boolean  
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long,
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long  
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long,
ByVal nIndex As Long) As Long  
Const LWA_ALPHA = 2  
Const GWL_EXSTYLE = (-20)  
Const WS_EX_LAYERED = &H80000  

Private Sub Form_Load()  
    SetWindowLong hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED  
    SetLayeredWindowAttributes hwnd, 0, 128, LWA_ALPHA  
End Sub  
The eXRadialMenu component supports hosting the eXGauge control into any item. The eXGauge / eXLayers library provides graphics capabilities to visually display and edit the amount, level, or contents of something. The view can show one or more layers, where each layer can display one or more transparent pictures, HTML captions which can be clipped, moved, rotated or combination of them, by dragging the mouse, rolling the mouse wheel, or using the keyboard. Using the eXGauge / eXLayers library you can can easily simulate any gauges, thermometers, meters, clocks, buttons, sliders, scales, knobs, dials, switches, progress, status, indicators, LEDs, and so on. By default, the setup of eXRadialMenu component installs the ExGauge sample, which shows how you can integrate the eXGauge component into the eXRadialMenu component. 

There are four requirements so you can integrate the eXGauge to eXRadialMenu component like listed bellow:

  1. The Version of the eXGauge component must be 13.0 or greater.
  2. The BrowseType property of the eXRadialMenu is exBrowseItemCustom
  3. The BrowseCustomType property is exRadialCustomGauge
  4. The BrowseCustom(exRadialCustomGaugeHandle) property is set to the hWnd property of the eXGauge component

If all these meet, you can integrate the eXGauge to any item of the eXRadialMenu component and your component should look as:

How-To Questions
General Questions
Copyright 1999-2018 Exontrol. All rights reserved.