
Richard
Richard
Harbour 3.2.0dev (r2503251254) => Borland C++ v7.7 32bit
MySQL v8.0
Harbour 3.2.0dev (r2503251254) => Borland C++ v7.7 64bit

Hello Richard,
I would like to thank you for your work on the RIBBONBAR.
Is it possible to get the source code for the new features from you.
I still have one application in use which I made with VB.NET and CodeJock which I
want to convert to FWH.
Do you have experience how speed behaviour of a realword application is if you use RIBBONBAR insteat of FWs REBAR,TAB, BUTTONBAR, etc.
I also used BUBBLEBAR.
Do you know if it is also possible to use the BUBBLEBBAR ocx with FWH.
Thanks in advance
Otto
Hi,
Do anybody know about the limitations in the Trial version of CodeJock control.
Regards
Anser
anserkk wrote:Hi,
Do anybody know about the limitations in the Trial version of CodeJock control.
Regards
Anser
Otto wrote:Hello Richard,
I would like to thank you for your work on the RIBBONBAR.
Is it possible to get the source code for the new features from you.
I still have one application in use which I made with VB.NET and CodeJock which I
want to convert to FWH.
Do you have experience how speed behaviour of a realword application is if you use RIBBONBAR insteat of FWs REBAR,TAB, BUTTONBAR, etc.
I also used BUBBLEBAR.
Do you know if it is also possible to use the BUBBLEBBAR ocx with FWH.
Thanks in advance
Otto

#include "FiveWin.ch"
#define xtpControlError 0
#define xtpControlButton 1
#define xtpControlPopup 2
#define xtpControlButtonPopup 3
#define xtpControlSplitButtonPopup 4
#define xtpControlComboBox 5
#define xtpControlEdit 6
#define xtpControlCustom 7
#define xtpControlLabel 8
#define xtpControlCheckBox 9
#define xtpControlGallery 10
#define xtpControlRadioButton 11
#define xtpImageNormal 0
#define xtpImageDisabled 1
#define xtpImageHot 2
#define xtpImageChecked 3
#define xtpImagePressed 4
function Main()
local oWnd, oAct, oRb, oTabFiles, oTabEdit, oTabBuild, oIcons
local oGroup1, oGroup2, oButton1, oButton2, aButtons := {}
local oButton3, oButton4, oBmp1, oBmp2, oBmp3
local oMini
local oStatusBar, oToolTipContext
DEFINE WINDOW oWnd
obmp1 := TBitmap():Define( , "c:\fivewin\ver903\fwh\bitmaps\16x16\new2.bmp", oWnd )
obmp2 := TBitmap():Define( , "c:\fivewin\ver903\fwh\bitmaps\16x16\open2.bmp", oWnd )
obmp3 := TBitmap():Define( , "c:\fivewin\ver903\fwh\bitmaps\alphabmp\explorer.bmp", oWnd )
oAct := TActiveX():New( oWnd, "Codejock.CommandBarsFrame.12.1.1", 0, 0, 0, 0 )
//@ 0, 0 ACTIVEX oAct PROGID "Codejock.CommandBarsFrame.12.1.1" OF oWnd
oAct:bOnEvent = { | cEvent, aParams, pParams | RibbonBarEvent( cEvent, aParams, pParams, aButtons ) }
oAct:Do( "AttachToWindow", oWnd:hWnd )
oAct:Do( "EnableOffice2007Frame", .T. )
oAct:Do( "VisualTheme", .T. )
// ToolTipContext - Richard
oToolTipContext := TOleAuto():New( ActXPdisp( oAct:hActiveX ) )
oToolTipContext := oToolTipContext:ToolTipContext()
oToolTipContext:Style = 5 && xtpToolTipOffice2007
oToolTipContext:ShowTitleAndDescription( .T., 0 )
oToolTipContext:ShowImage( .T., 10000 )
oToolTipContext:SetMargin( 2, 2, 2, 2 )
oToolTipContext:MaxTipWidth = 180
// StatusBar-Richard
oStatusBar := TOleAuto():New( ActXPdisp( oAct:hActiveX ) )
oStatusBar:StatusBar:Visible = .T.
oStatusBar:StatusBar:AddPane( 0 )
oStatusBar:StatusBar:AddPane( 59137 )
oStatusBar:StatusBar:AddPane( 59138 )
oStatusBar:StatusBar:AddPane( 59139 )
oStatusBar:StatusBar:IdleText = "FWH support Codejock RibbonBar"
oIcons := oAct:Do( "icons" )
oIcons:AddBitmap( oBmp1:hBitmap,1,xtpImageNormal,.f. )
oIcons:AddBitmap( oBmp2:hBitmap,2,xtpImageNormal,.f. )
oIcons:AddBitmap( oBmp3:hBitmap,3,xtpImageNormal,.t. ) // 4th param, Bool to Alpha Channel Support
oIcons:LoadBitmap( "c:\fivewin\ver903\fwh\bitmaps\32x32\edit.bmp",4, xtpImageNormal)
//oAct:Hide()
oRb = oAct:Do( "AddRibbonBar", "fwh" )
// QuickAccess
oQBtn1 := oRb:QuickAccessControls:Add( xtpControlButton,1,"" )
oQBtn2 := oRb:QuickAccessControls:Add( xtpControlButton,2,"" )
oQBtn3 := oRb:QuickAccessControls:Add( xtpControlButton,3,"" )
// Sysbutton - Lailton
Sbutton:=oRb:AddSystemButton()
Sbutton:IconId( 2 )
nCmb := Sbutton:Commandbar
Controls := nCmb:Controls
Controls:Add(1,1,"Menu item 1",1)
Controls:Add(1,1,"Menu item 2",1)
oTabFiles = oRb:InsertTab( 0, "&Files" )
oTabEdit = oRb:InsertTab( 1, "&Edit" )
oTabBuild = oRb:InsertTab( 2, "&Build" )
oGroup1 = oTabFiles:Groups:AddGroup( "Test 1", 0 )
oGroup1:ShowOptionButton = .T.
oGroup2 = oTabFiles:Groups:AddGroup( "Test 2", 1 )
oButton1 = oGroup1:Add( xtpControlButton, 2, "First" )
oButton2 = oGroup1:Add( xtpControlButton, 1, "Second" )
oButton3 = oGroup2:Add( xtpControlButton, 4, NIL )
oButton4 = oGroup2:Add( xtpControlButton, 3, NIL )
oButton4:SetIconSize( 64,64 )
oButton4:Width = 70
oButton4:Height = 70
AAdd( aButtons, oButton1 )
AAdd( aButtons, oButton2 )
AADD( aButtons, oQBtn1 )
AADD( aButtons, oQBtn2 )
AADD( aButtons, oQBtn3 )
oButton1:Caption = "FiveWin power!"
oButton1:TooltipText = "Ribbonbar for FWH"
ACTIVATE WINDOW oWnd
return nil
function RibbonBarEvent( cEvent, aParams, pParams, aButtons )
do case
case cEvent == "Execute" .and. Len( aButtons ) > 0
do case
case aButtons[ 1 ]:hObj == aParams[ 1 ]
MsgInfo( "Button 1" )
case aButtons[ 2 ]:hObj == aParams[ 1 ]
MsgInfo( "Button 2" )
case aButtons[ 3 ]:hObj == aParams[ 1 ]
MsgInfo( "From Quick Access Button 1" )
case aButtons[ 4 ]:hObj == aParams[ 1 ]
MsgInfo( "From Quick Access Button 2" + CRLF + "FIVEWIN SHARING POWER" )
case aButtons[ 5 ]:hObj == aParams[ 1 ]
MsgInfo( "From Quick Access Button 3" )
endcase
endcase
return nil oRibbonBar := oAct:Do( "AddRibbonBar", "fwh" )
//
// Enables\disables the Ribbon Office 2007 style themed window frame.
//
oRibbonBar:EnableFrameTheme()
//
// Gets\sets whether the Quick Access bar is displayed above or below the Ribbon.
//
oRibbonBar:ShowQuickAccessBelowRibbon( .T. )



MsgInfo("Before Calling the Avtivex")
oAct := TActiveX():New( oWnd, "Codejock.CommandBarsFrame.12.1.1", 0, 0, 0, 0 )Antonio, and ALL,
Why we must use an activex to use a RIbbonBar control ?
Why We not create together a Ribbon control only on fwh sources ?
I think using an activex it is too heavy and slow.
Perhaps maybe we can together create this control
beginning to create only the bar control
and the insert on down a small folder
Why we not try to create it?
Silvio,
We may create it, but in the meantime we can use CodeJock's one ![]()
Daniel,
Excellent! ![]()
Thanks
#pragma BEGINDUMP
#include <hbapi.h>
#include <windows.h>
typedef LONG ( * PDLLREGISTERSERVER ) ( void );
HB_FUNC( REGISTERSERVER )
{
HMODULE hDll = LoadLibrary( hb_parc( 1 ) );
LONG lReturn = 0;
if( hDll )
{
FARPROC pRegisterServer = GetProcAddress( hDll, "DllRegisterServer" );
if( pRegisterServer )
lReturn = ( ( PDLLREGISTERSERVER ) pRegisterServer )();
FreeLibrary( hDll );
}
hb_retnl( lReturn );
}
#pragma ENDDUMPMsgInfo("Before Calling the Avtivex")
RegisterServer( "Codejock.CommandBars.v12.1.1.ocx" )
MsgInfo("After Calling RegisterServer") // Error occurs after displaying this message
oAct := TActiveX():New( oWnd, "Codejock.CommandBarsFrame.12.1.1", 0, 0, 0, 0 )


#include "FiveWin.ch"
#define xtpControlError 0
#define xtpControlButton 1
#define xtpControlPopup 2
#define xtpControlButtonPopup 3
#define xtpControlSplitButtonPopup 4
#define xtpControlComboBox 5
#define xtpControlEdit 6
#define xtpControlCustom 7
#define xtpControlLabel 8
#define xtpControlCheckBox 9
#define xtpControlGallery 10
#define xtpControlRadioButton 11
#define xtpImageNormal 0
#define xtpImageDisabled 1
#define xtpImageHot 2
#define xtpImageChecked 3
#define xtpImagePressed 4
function Main()
local oWnd, oAct, oRb, oTabFiles, oTabEdit, oTabBuild, oIcons
local oGroup1, oGroup2, oButton1, oButton2, aButtons := {}
local oButton3, oButton4, oBmp1, oBmp2, oBmp3
local oMini
local oStatusBar, oToolTipContext
DEFINE WINDOW oWnd
aControlHandles := InitActivex( oWnd:hWnd , "Codejock.CommandBarsFrame.12.1.1" , 0 ,0 ,0 ,0 )
nControlHandle := aControlHandles [1]
nInterfacePointer := aControlHandles [2]
nAtlDllHandle := aControlHandles [3]
oOle := CreateObject( nInterfacePointer )
oOle:AttachToWindow(oWnd:hWnd )
oOle:EnableOffice2007Frame := .t.
oOle:VisualTheme := .t.
oRb := oOle:AddRibbonBar("The Ribbon")
oRb:EnableFrameTheme()
oRb:InsertTab( 0, "&Files" )
oRb:InsertTab( 1, "&Edit" )
oRb:InsertTab( 2, "&Build" )
Sbutton:=oRb:AddSystemButton()
Sbutton:IconId( 2 )
nCmb := Sbutton:Commandbar
Controls := nCmb:Controls
Controls:Add(1,1,"Menu item 1",1)
Controls:Add(1,1,"Menu item 2",1)
oQBtn1 := oRb:QuickAccessControls:Add( xtpControlButton,1,"" )
oQBtn2 := oRb:QuickAccessControls:Add( xtpControlButton,2,"" )
oQBtn3 := oRb:QuickAccessControls:Add( xtpControlButton,3,"" )
oBar := oOle:StatusBar()
oBar:Visible := .t.
ACTIVATE WINDOW oWnd MAXIMIZED
return nil
*------------------------------------------------------------------------------*
* Low Level C Routines
*------------------------------------------------------------------------------*
#pragma BEGINDUMP
#include <windows.h>
#include <commctrl.h>
#include <hbapi.h>
#include <hbvm.h>
#include <hbstack.h>
typedef HRESULT(WINAPI *LPAtlAxGetControl)(HWND hwnd,IUnknown** unk);
typedef HRESULT(WINAPI *LPAtlAxWinInit)(void);
HB_FUNC( INITACTIVEX )
{
HMODULE hlibrary;
HWND hchild;
IUnknown *pUnk;
IDispatch *pDisp;
LPAtlAxWinInit AtlAxWinInit;
LPAtlAxGetControl AtlAxGetControl;
hlibrary = LoadLibrary( "Atl.Dll" );
AtlAxWinInit = ( LPAtlAxWinInit ) GetProcAddress( hlibrary, "AtlAxWinInit" );
AtlAxGetControl = ( LPAtlAxGetControl ) GetProcAddress( hlibrary, "AtlAxGetControl" );
AtlAxWinInit();
hchild = CreateWindowEx( 0, "AtlAxWin",hb_parc(2), WS_CHILD | WS_VISIBLE , hb_parni(3), hb_parni(4), hb_parni(5), hb_parni(6), (HWND)hb_parnl( 1 ) , 0 , 0 , 0 );
AtlAxGetControl( (HWND) hchild , &pUnk );
pUnk->lpVtbl->QueryInterface(pUnk,&IID_IDispatch,(void**)&pDisp);
hb_reta( 3 );
hb_stornl( (LONG) hchild , -1, 1 );
hb_stornl( (LONG) pDisp , -1, 2 );
hb_stornl( (LONG) hlibrary , -1, 3 );
}
HB_FUNC( EXITACTIVEX )
{
DestroyWindow ( (HWND)hb_parnl( 1 ) );
FreeLibrary ( (HMODULE)hb_parnl( 2 ) );
}
#pragma ENDDUMP