INSIDE ACTIVEX WITH FREEBASIC

Windows specific questions.
Post Reply
aloberoger
Posts: 507
Joined: Jan 13, 2009 19:23

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by aloberoger »

msflxgrdclass.bi

Code: Select all

/' ********************************************************************************************
 Library name: MSFlexGridLib
 Version: 1.0
 Documentation string: Microsoft FlexGrid Control 6.0 (SP6)
 Path: C:\WINDOWS\system32\MSFLXGRD.OCX
 Library GUID: {5E9E78A0-531B-11CF-91F6-C2863C385E30}
 Help file: C:\WINDOWS\HELP\MSHFlx98.chm
 Code machine generated by COM BUILD
Date: 02-11-2014  Time: 12:33:09
 author of the work : Alober      contact: aloberr@yahoo.fr
******************************************************************************************** '/

#Include Once "MSFlxGrd.bi"

'********************************************************************************************
' Wrappers Class For Interface 
'********************************************************************************************
'********************************************************************************************
'derived from IVBDataObjectFiles interface
' Number of functions: 6
'********************************************************************************************

Type DataObjectFiles
	Private:
	   ptrIVBDataObjectFiles As IVBDataObjectFiles PTR
	Public:
	 Declare Constructor()
	 Declare Constructor(byref AS IVBDataObjectFiles PTR)
	 Declare Destructor()
	 Declare Operator Cast() AS IVBDataObjectFiles PTR
	 Declare Operator Let(byref AS IVBDataObjectFiles PTR)
	 Declare SUB Release()
	 Declare Property Item(Byval prmlIndex AS long) AS STRING
	 Declare Property Count() AS long
	 Declare Sub Add(Byval pbstrbstrFilename AS STRING, Byval varvIndex AS VARIANT)
	 Declare Sub Clear()
	 Declare Sub Remove(Byval varvIndex AS VARIANT)
	 Declare FUNCTION _NewEnum() AS LPUNKNOWN
End Type

'********************************************************************************************
'derived from IVBDataObject interface
' Number of functions: 5
'********************************************************************************************

Type DataObject
	Private:
	   ptrIVBDataObject As IVBDataObject PTR
	Public:
	 Declare Constructor()
	 Declare Constructor(byref AS IVBDataObject PTR)
	 Declare Destructor()
	 Declare Operator Cast() AS IVBDataObject PTR
	 Declare Operator Let(byref AS IVBDataObject PTR)
	 Declare SUB Release()
	 Declare Sub Clear()
	 Declare FUNCTION GetData(Byval prmsFormat AS short) AS VARIANT
	 Declare FUNCTION GetFormat(Byval prmsFormat AS short) AS VARIANT_BOOL
	 Declare Sub SetData(Byval varvValue AS VARIANT, Byval varvFormat AS VARIANT)
	 Declare Property Files() AS DataObjectFiles
End Type



'********************************************************************************************
'derived from IRowCursor interface
' Number of functions: 0
'********************************************************************************************

Type RowCursor
	Private:
	   ptrIRowCursor As IRowCursor PTR
	Public:
	 Declare Constructor()
	 Declare Constructor(byref AS IRowCursor PTR)
	 Declare Destructor()
	 Declare Operator Cast() AS IRowCursor PTR
	 Declare Operator Let(byref AS IRowCursor PTR)
	 Declare SUB Release()
End Type

'********************************************************************************************
'derived from IMSFlexGrid interface
' Number of functions: 180
'********************************************************************************************

Type MSFlexGrid
	Private:
	   ptrIMSFlexGrid As IMSFlexGrid PTR
	Public:
	 Declare Constructor()
	 Declare Constructor(byref AS IMSFlexGrid PTR)
	 Declare Destructor()
	 Declare Operator Cast() AS IMSFlexGrid PTR
	 Declare Operator Let(byref AS IMSFlexGrid PTR)
	 Declare SUB Release()
	 Declare Property Rows() AS long
	 Declare Property Rows(Byval prmRows AS long)
	 Declare Property Cols() AS long
	 Declare Property Cols(Byval prmCols AS long)
	 Declare Property FixedRows() AS long
	 Declare Property FixedRows(Byval prmFixedRows AS long)
	 Declare Property FixedCols() AS long
	 Declare Property FixedCols(Byval prmFixedCols AS long)
	 Declare Property Version() AS short
	 Declare Property FormatString() AS STRING
	 Declare Property FormatString(Byval pbstrFormatString AS STRING)
	 Declare Property TopRow() AS long
	 Declare Property TopRow(Byval prmTopRow AS long)
	 Declare Property LeftCol() AS long
	 Declare Property LeftCol(Byval prmLeftCol AS long)
	 Declare Property Row() AS long
	 Declare Property Row(Byval prmRow AS long)
	 Declare Property Col() AS long
	 Declare Property Col(Byval prmCol AS long)
	 Declare Property RowSel() AS long
	 Declare Property RowSel(Byval prmRowSel AS long)
	 Declare Property ColSel() AS long
	 Declare Property ColSel(Byval prmColSel AS long)
	 Declare Property Text() AS STRING
	 Declare Property Text(Byval pbstrText AS STRING)
	 Declare Property BackColor() AS OLE_COLOR
	 Declare Property BackColor(Byval prmBackColor AS OLE_COLOR)
	 Declare Property ForeColor() AS OLE_COLOR
	 Declare Property ForeColor(Byval prmForeColor AS OLE_COLOR)
	 Declare Property BackColorFixed() AS OLE_COLOR
	 Declare Property BackColorFixed(Byval prmBackColorFixed AS OLE_COLOR)
	 Declare Property ForeColorFixed() AS OLE_COLOR
	 Declare Property ForeColorFixed(Byval prmForeColorFixed AS OLE_COLOR)
	 Declare Property BackColorSel() AS OLE_COLOR
	 Declare Property BackColorSel(Byval prmBackColorSel AS OLE_COLOR)
	 Declare Property ForeColorSel() AS OLE_COLOR
	 Declare Property ForeColorSel(Byval prmForeColorSel AS OLE_COLOR)
	 Declare Property BackColorBkg() AS OLE_COLOR
	 Declare Property BackColorBkg(Byval prmBackColorBkg AS OLE_COLOR)
	 Declare Property WordWrap() AS VARIANT_BOOL
	 Declare Property WordWrap(Byval tWordWrap AS VARIANT_BOOL)
	 Declare Property Font() AS IFONTDISP Ptr
	 Declare Property Font(Byval prmFont AS IFONTDISP Ptr)
	 Declare Property FontWidth() AS float
	 Declare Property FontWidth(Byval prmFontWidth AS float)
	 Declare Property CellFontName() AS STRING
	 Declare Property CellFontName(Byval pbstrCellFontName AS STRING)
	 Declare Property CellFontSize() AS float
	 Declare Property CellFontSize(Byval prmCellFontSize AS float)
	 Declare Property CellFontBold() AS VARIANT_BOOL
	 Declare Property CellFontBold(Byval tCellFontBold AS VARIANT_BOOL)
	 Declare Property CellFontItalic() AS VARIANT_BOOL
	 Declare Property CellFontItalic(Byval tCellFontItalic AS VARIANT_BOOL)
	 Declare Property CellFontUnderline() AS VARIANT_BOOL
	 Declare Property CellFontUnderline(Byval tCellFontUnderline AS VARIANT_BOOL)
	 Declare Property CellFontStrikeThrough() AS VARIANT_BOOL
	 Declare Property CellFontStrikeThrough(Byval tCellFontStrikeThrough AS VARIANT_BOOL)
	 Declare Property CellFontWidth() AS float
	 Declare Property CellFontWidth(Byval prmCellFontWidth AS float)
	 Declare Property TextStyle() AS TextStyleSettings
	 Declare Property TextStyle(Byval prmTextStyle AS TextStyleSettings)
	 Declare Property TextStyleFixed() AS TextStyleSettings
	 Declare Property TextStyleFixed(Byval prmTextStyleFixed AS TextStyleSettings)
	 Declare Property ScrollTrack() AS VARIANT_BOOL
	 Declare Property ScrollTrack(Byval tScrollTrack AS VARIANT_BOOL)
	 Declare Property FocusRect() AS FocusRectSettings
	 Declare Property FocusRect(Byval prmFocusRect AS FocusRectSettings)
	 Declare Property HighLight() AS HighLightSettings
	 Declare Property HighLight(Byval prmHighLight AS HighLightSettings)
	 Declare Property Redraw() AS VARIANT_BOOL
	 Declare Property Redraw(Byval tRedraw AS VARIANT_BOOL)
	 Declare Property ScrollBars() AS ScrollBarsSettings
	 Declare Property ScrollBars(Byval prmScrollBars AS ScrollBarsSettings)
	 Declare Property MouseRow() AS long
	 Declare Property MouseCol() AS long
	 Declare Property CellLeft() AS long
	 Declare Property CellTop() AS long
	 Declare Property CellWidth() AS long
	 Declare Property CellHeight() AS long
	 Declare Property RowHeightMin() AS long
	 Declare Property RowHeightMin(Byval prmRowHeightMin AS long)
	 Declare Property FillStyle() AS FillStyleSettings
	 Declare Property FillStyle(Byval prmFillStyle AS FillStyleSettings)
	 Declare Property GridLines() AS GridLineSettings
	 Declare Property GridLines(Byval prmGridLines AS GridLineSettings)
	 Declare Property GridLinesFixed() AS GridLineSettings
	 Declare Property GridLinesFixed(Byval prmGridLinesFixed AS GridLineSettings)
	 Declare Property GridColor() AS OLE_COLOR
	 Declare Property GridColor(Byval prmGridColor AS OLE_COLOR)
	 Declare Property GridColorFixed() AS OLE_COLOR
	 Declare Property GridColorFixed(Byval prmGridColorFixed AS OLE_COLOR)
	 Declare Property CellBackColor() AS OLE_COLOR
	 Declare Property CellBackColor(Byval prmCellBackColor AS OLE_COLOR)
	 Declare Property CellForeColor() AS OLE_COLOR
	 Declare Property CellForeColor(Byval prmCellForeColor AS OLE_COLOR)
	 Declare Property CellAlignment() AS short
	 Declare Property CellAlignment(Byval prmCellAlignment AS short)
	 Declare Property CellTextStyle() AS TextStyleSettings
	 Declare Property CellTextStyle(Byval prmCellTextStyle AS TextStyleSettings)
	 Declare Property CellPictureAlignment() AS short
	 Declare Property CellPictureAlignment(Byval prmCellPictureAlignment AS short)
	 Declare Property Clip() AS STRING
	 Declare Property Clip(Byval pbstrClip AS STRING)
	 Declare Property Sort(Byval prmClip AS short)
	 Declare Property SelectionMode() AS SelectionModeSettings
	 Declare Property SelectionMode(Byval prmSelectionMode AS SelectionModeSettings)
	 Declare Property MergeCells() AS MergeCellsSettings
	 Declare Property MergeCells(Byval prmMergeCells AS MergeCellsSettings)
	 Declare Property AllowBigSelection() AS VARIANT_BOOL
	 Declare Property AllowBigSelection(Byval tAllowBigSelection AS VARIANT_BOOL)
	 Declare Property AllowUserResizing() AS AllowUserResizeSettings
	 Declare Property AllowUserResizing(Byval prmAllowUserResizing AS AllowUserResizeSettings)
	 Declare Property BorderStyle() AS BorderStyleSettings
	 Declare Property BorderStyle(Byval prmBorderStyle AS BorderStyleSettings)
	 Declare Property hWnd() AS long
	 Declare Property Enabled() AS VARIANT_BOOL
	 Declare Property Enabled(Byval tEnabled AS VARIANT_BOOL)
	 Declare Property Appearance() AS AppearanceSettings
	 Declare Property Appearance(Byval prmAppearance AS AppearanceSettings)
	 Declare Property MousePointer() AS MousePointerSettings
	 Declare Property MousePointer(Byval prmMousePointer AS MousePointerSettings)
	 Declare Property MouseIcon() AS IPICTUREDISP PTR
	 Declare Property MouseIcon(Byval prmMouseIcon AS IPICTUREDISP Ptr)
	 Declare Property PictureType() AS PictureTypeSettings
	 Declare Property PictureType(Byval prmPictureType AS PictureTypeSettings)
	 Declare Property Picture() AS IPICTUREDISP Ptr
	 Declare Property CellPicture() AS IPICTUREDISP Ptr
	 Declare Property CellPicture(Byval prmCellPicture AS IPICTUREDISP Ptr)
	 Declare Sub AboutBox()
	 Declare Property TextArray(Byval prmindex AS long) AS STRING
	 Declare Property TextArray(Byval prmindex AS long, Byval pbstrTextArray AS STRING)
	 Declare Property ColAlignment(Byval prmindex AS long) AS short
	 Declare Property ColAlignment(Byval prmindex AS long, Byval prmColAlignment AS short)
	 Declare Property ColWidth(Byval prmindex AS long) AS long
	 Declare Property ColWidth(Byval prmindex AS long, Byval prmColWidth AS long)
	 Declare Property RowHeight(Byval prmindex AS long) AS long
	 Declare Property RowHeight(Byval prmindex AS long, Byval prmRowHeight AS long)
	 Declare Property MergeRow(Byval prmindex AS long) AS VARIANT_BOOL
	 Declare Property MergeRow(Byval prmindex AS long, Byval tMergeRow AS VARIANT_BOOL)
	 Declare Property MergeCol(Byval prmindex AS long) AS VARIANT_BOOL
	 Declare Property MergeCol(Byval prmindex AS long, Byval tMergeCol AS VARIANT_BOOL)
	 Declare Property RowPosition(Byval prmindex AS long, Byval prmMergeCol AS long)
	 Declare Property ColPosition(Byval prmindex AS long, Byval prmMergeCol AS long)
	 Declare Property RowData(Byval prmindex AS long) AS long
	 Declare Property RowData(Byval prmindex AS long, Byval prmRowData AS long)
	 Declare Property ColData(Byval prmindex AS long) AS long
	 Declare Property ColData(Byval prmindex AS long, Byval prmColData AS long)
	 Declare Function TextMatrix(Byval prmRow AS long, Byval prmCol AS long) AS STRING
	 Declare Sub TextMatrix(Byval prmRow AS long, Byval prmCol AS long, Byval pbstrTextMatrix AS STRING)
	 Declare Sub AddItem(Byval pbstrItem AS STRING, Byval varindex AS VARIANT)
	 Declare Sub RemoveItem(Byval prmindex AS long)
	 Declare Sub Clear()
	 Declare Sub Refresh()
	 Declare Property DataSource() AS RowCursor
	 Declare Property DataSource(Byval prmDataSource AS RowCursor)
	 Declare Property RowIsVisible(Byval prmindex AS long) AS VARIANT_BOOL
	 Declare Property ColIsVisible(Byval prmindex AS long) AS VARIANT_BOOL
	 Declare Property RowPos(Byval prmindex AS long) AS long
	 Declare Property ColPos(Byval prmindex AS long) AS long
	 Declare Property GridLineWidth() AS short
	 Declare Property GridLineWidth(Byval prmGridLineWidth AS short)
	 Declare Property FixedAlignment(Byval prmindex AS long) AS short
	 Declare Property FixedAlignment(Byval prmindex AS long, Byval prmFixedAlignment AS short)
	 Declare Property FontName() AS STRING
	 Declare Property FontName(Byval pbstrFontName AS STRING)
	 Declare Property FontSize() AS float
	 Declare Property FontSize(Byval prmFontSize AS float)
	 Declare Property FontBold() AS VARIANT_BOOL
	 Declare Property FontBold(Byval tFontBold AS VARIANT_BOOL)
	 Declare Property FontItalic() AS VARIANT_BOOL
	 Declare Property FontItalic(Byval tFontItalic AS VARIANT_BOOL)
	 Declare Property FontStrikethru() AS VARIANT_BOOL
	 Declare Property FontStrikethru(Byval tFontStrikethru AS VARIANT_BOOL)
	 Declare Property FontUnderline() AS VARIANT_BOOL
	 Declare Property FontUnderline(Byval tFontUnderline AS VARIANT_BOOL)
	 Declare Property RightToLeft() AS VARIANT_BOOL
	 Declare Property RightToLeft(Byval tRightToLeft AS VARIANT_BOOL)
	 Declare Property OLEDropMode() AS OLEDropConstants
	 Declare Property OLEDropMode(Byval prmpsOLEDropMode AS OLEDropConstants)
	 Declare Sub OLEDrag()
End Type

 
 ' IMPLEMENTATION DES CLASSE
 
 Constructor DataObject()
	   ptrIVBDataObject=Create_IVBDataObject()
End Constructor 
Constructor DataObject(byref value AS IVBDataObject PTR)
	   ptrIVBDataObject=value
End Constructor 
Destructor DataObject()
End Destructor 
Operator  DataObject.Cast() AS IVBDataObject PTR
	Return  ptrIVBDataObject
End Operator  
Operator  DataObject.let(byref value AS IVBDataObject PTR)
	ptrIVBDataObject= value
End Operator  
SUB  DataObject.Release()
	ptrIVBDataObject->lpvtbl->Release(ptrIVBDataObject)
End SUB  
Sub DataObject.Clear()
	ptrIVBDataObject->lpvtbl->Clear(ptrIVBDataObject)
End Sub 
FUNCTION DataObject.GetData(Byval prmsFormat AS short) AS VARIANT
DIM As VARIANT  Retval
	ptrIVBDataObject->lpvtbl->GetData(ptrIVBDataObject,prmsFormat,@Retval)
	Return Retval
END FUNCTION 
FUNCTION DataObject.GetFormat(Byval prmsFormat AS short) AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIVBDataObject->lpvtbl->GetFormat(ptrIVBDataObject,prmsFormat,@Retval)
	Return Retval
END FUNCTION 
Sub DataObject.SetData(Byval varvValue AS VARIANT, Byval varvFormat AS VARIANT)
	ptrIVBDataObject->lpvtbl->SetData(ptrIVBDataObject,varvValue,varvFormat)
End Sub 
Property DataObject.Files() AS DataObjectFiles
DIM As IVBDataObjectFiles  ptr Retval
	ptrIVBDataObject->lpvtbl->get_Files(ptrIVBDataObject,@Retval)
	Return Retval
End Property 


 
 Constructor DataObjectFiles()
	   ptrIVBDataObjectFiles=Create_IVBDataObjectFiles()
End Constructor 
Constructor DataObjectFiles(byref value AS IVBDataObjectFiles PTR)
	   ptrIVBDataObjectFiles=value
End Constructor 
Destructor DataObjectFiles()
End Destructor 
Operator  DataObjectFiles.Cast() AS IVBDataObjectFiles PTR
	Return  ptrIVBDataObjectFiles
End Operator  
Operator  DataObjectFiles.let(byref value AS IVBDataObjectFiles PTR)
	ptrIVBDataObjectFiles= value
End Operator  
SUB  DataObjectFiles.Release()
	ptrIVBDataObjectFiles->lpvtbl->Release(ptrIVBDataObjectFiles)
End SUB  
Property DataObjectFiles.Item(Byval prmlIndex AS long) AS STRING
DIM As BSTR  Retval
	ptrIVBDataObjectFiles->lpvtbl->get_Item(ptrIVBDataObjectFiles,prmlIndex,@Retval)
	Return *cast(WSTRING PTR,Retval)
End Property 
Property DataObjectFiles.Count() AS long
DIM As long  Retval
	ptrIVBDataObjectFiles->lpvtbl->get_Count(ptrIVBDataObjectFiles,@Retval)
	Return Retval
End Property 
Sub DataObjectFiles.Add(Byval pbstrbstrFilename AS STRING, Byval varvIndex AS VARIANT)
	ptrIVBDataObjectFiles->lpvtbl->Add(ptrIVBDataObjectFiles,StrToBstr(pbstrbstrFilename),varvIndex)
End Sub 
Sub DataObjectFiles.Clear()
	ptrIVBDataObjectFiles->lpvtbl->Clear(ptrIVBDataObjectFiles)
End Sub 
Sub DataObjectFiles.Remove(Byval varvIndex AS VARIANT)
	ptrIVBDataObjectFiles->lpvtbl->Remove(ptrIVBDataObjectFiles,varvIndex)
End Sub 
FUNCTION DataObjectFiles._NewEnum() AS LPUNKNOWN
DIM As LPUNKNOWN  Retval
	ptrIVBDataObjectFiles->lpvtbl->_NewEnum(ptrIVBDataObjectFiles,@Retval)
	Return Retval
END FUNCTION 


 
 Constructor RowCursor()
End Constructor 
Constructor RowCursor(byref value AS IRowCursor PTR)
	   ptrIRowCursor=value
End Constructor 
Destructor RowCursor()
End Destructor 
Operator  RowCursor.Cast() AS IRowCursor PTR
	Return  ptrIRowCursor
End Operator  
Operator  RowCursor.let(byref value AS IRowCursor PTR)
	ptrIRowCursor= value
End Operator  
SUB  RowCursor.Release()
	ptrIRowCursor->lpvtbl->Release(ptrIRowCursor)
End SUB  


 
 Constructor MSFlexGrid()
	'   ptrIMSFlexGrid=Create_IMSFlexGrid()
	' If this Interface have an event Interface please use Atlgetdispatch to initialize it
End Constructor 
Constructor MSFlexGrid(byref value AS IMSFlexGrid PTR)
	   ptrIMSFlexGrid=value
End Constructor 
Destructor MSFlexGrid()
End Destructor 
Operator  MSFlexGrid.Cast() AS IMSFlexGrid PTR
	Return  ptrIMSFlexGrid
End Operator  
Operator  MSFlexGrid.let(byref value AS IMSFlexGrid PTR)
	ptrIMSFlexGrid= value
End Operator  
SUB  MSFlexGrid.Release()
	ptrIMSFlexGrid->lpvtbl->Release(ptrIMSFlexGrid)
End SUB  
Property MSFlexGrid.Rows() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_Rows(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.Rows(Byval prmRows AS long)
	ptrIMSFlexGrid->lpvtbl->Put_Rows(ptrIMSFlexGrid,prmRows)
End Property 
Property MSFlexGrid.Cols() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_Cols(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.Cols(Byval prmCols AS long)
	ptrIMSFlexGrid->lpvtbl->Put_Cols(ptrIMSFlexGrid,prmCols)
End Property 
Property MSFlexGrid.FixedRows() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_FixedRows(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FixedRows(Byval prmFixedRows AS long)
	ptrIMSFlexGrid->lpvtbl->Put_FixedRows(ptrIMSFlexGrid,prmFixedRows)
End Property 
Property MSFlexGrid.FixedCols() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_FixedCols(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FixedCols(Byval prmFixedCols AS long)
	ptrIMSFlexGrid->lpvtbl->Put_FixedCols(ptrIMSFlexGrid,prmFixedCols)
End Property 
Property MSFlexGrid.Version() AS short
DIM As short  Retval
	ptrIMSFlexGrid->lpvtbl->get_Version(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FormatString() AS STRING
DIM As BSTR  Retval
	ptrIMSFlexGrid->lpvtbl->get_FormatString(ptrIMSFlexGrid,@Retval)
	Return *cast(WSTRING PTR,Retval)
End Property 
Property MSFlexGrid.FormatString(Byval pbstrFormatString AS STRING)
	ptrIMSFlexGrid->lpvtbl->Put_FormatString(ptrIMSFlexGrid,StrToBstr(pbstrFormatString))
End Property 
Property MSFlexGrid.TopRow() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_TopRow(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.TopRow(Byval prmTopRow AS long)
	ptrIMSFlexGrid->lpvtbl->Put_TopRow(ptrIMSFlexGrid,prmTopRow)
End Property 
Property MSFlexGrid.LeftCol() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_LeftCol(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.LeftCol(Byval prmLeftCol AS long)
	ptrIMSFlexGrid->lpvtbl->Put_LeftCol(ptrIMSFlexGrid,prmLeftCol)
End Property 
Property MSFlexGrid.Row() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_Row(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.Row(Byval prmRow AS long)
	ptrIMSFlexGrid->lpvtbl->Put_Row(ptrIMSFlexGrid,prmRow)
End Property 
Property MSFlexGrid.Col() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_Col(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.Col(Byval prmCol AS long)
	ptrIMSFlexGrid->lpvtbl->Put_Col(ptrIMSFlexGrid,prmCol)
End Property 
Property MSFlexGrid.RowSel() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_RowSel(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.RowSel(Byval prmRowSel AS long)
	ptrIMSFlexGrid->lpvtbl->Put_RowSel(ptrIMSFlexGrid,prmRowSel)
End Property 
Property MSFlexGrid.ColSel() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_ColSel(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ColSel(Byval prmColSel AS long)
	ptrIMSFlexGrid->lpvtbl->Put_ColSel(ptrIMSFlexGrid,prmColSel)
End Property 
Property MSFlexGrid.Text() AS STRING
DIM As BSTR  Retval
	ptrIMSFlexGrid->lpvtbl->get_Text(ptrIMSFlexGrid,@Retval)
	Return *cast(WSTRING PTR,Retval)
End Property 
Property MSFlexGrid.Text(Byval pbstrText AS STRING)
	ptrIMSFlexGrid->lpvtbl->Put_Text(ptrIMSFlexGrid,StrToBstr(pbstrText))
End Property 
Property MSFlexGrid.BackColor() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_BackColor(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.BackColor(Byval prmBackColor AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_BackColor(ptrIMSFlexGrid,prmBackColor)
End Property 
Property MSFlexGrid.ForeColor() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_ForeColor(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ForeColor(Byval prmForeColor AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_ForeColor(ptrIMSFlexGrid,prmForeColor)
End Property 
Property MSFlexGrid.BackColorFixed() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_BackColorFixed(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.BackColorFixed(Byval prmBackColorFixed AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_BackColorFixed(ptrIMSFlexGrid,prmBackColorFixed)
End Property 
Property MSFlexGrid.ForeColorFixed() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_ForeColorFixed(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ForeColorFixed(Byval prmForeColorFixed AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_ForeColorFixed(ptrIMSFlexGrid,prmForeColorFixed)
End Property 
Property MSFlexGrid.BackColorSel() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_BackColorSel(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.BackColorSel(Byval prmBackColorSel AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_BackColorSel(ptrIMSFlexGrid,prmBackColorSel)
End Property 
Property MSFlexGrid.ForeColorSel() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_ForeColorSel(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ForeColorSel(Byval prmForeColorSel AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_ForeColorSel(ptrIMSFlexGrid,prmForeColorSel)
End Property 
Property MSFlexGrid.BackColorBkg() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_BackColorBkg(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.BackColorBkg(Byval prmBackColorBkg AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_BackColorBkg(ptrIMSFlexGrid,prmBackColorBkg)
End Property 
Property MSFlexGrid.WordWrap() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_WordWrap(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.WordWrap(Byval tWordWrap AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_WordWrap(ptrIMSFlexGrid,tWordWrap)
End Property 
Property MSFlexGrid.Font() AS IFONTDISP PTR
DIM As IFONTDISP Ptr Retval
	ptrIMSFlexGrid->lpvtbl->get_Font(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.Font(Byval prmFont AS IFONTDISP PTR)
	ptrIMSFlexGrid->lpvtbl->PutRef_Font(ptrIMSFlexGrid,prmFont)
End Property 
Property MSFlexGrid.FontWidth() AS float
DIM As float  Retval
	ptrIMSFlexGrid->lpvtbl->get_FontWidth(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FontWidth(Byval prmFontWidth AS float)
	ptrIMSFlexGrid->lpvtbl->Put_FontWidth(ptrIMSFlexGrid,prmFontWidth)
End Property 
Property MSFlexGrid.CellFontName() AS STRING
DIM As BSTR  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellFontName(ptrIMSFlexGrid,@Retval)
	Return *cast(WSTRING PTR,Retval)
End Property 
Property MSFlexGrid.CellFontName(Byval pbstrCellFontName AS STRING)
	ptrIMSFlexGrid->lpvtbl->Put_CellFontName(ptrIMSFlexGrid,StrToBstr(pbstrCellFontName))
End Property 
Property MSFlexGrid.CellFontSize() AS float
DIM As float  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellFontSize(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellFontSize(Byval prmCellFontSize AS float)
	ptrIMSFlexGrid->lpvtbl->Put_CellFontSize(ptrIMSFlexGrid,prmCellFontSize)
End Property 
Property MSFlexGrid.CellFontBold() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellFontBold(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellFontBold(Byval tCellFontBold AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_CellFontBold(ptrIMSFlexGrid,tCellFontBold)
End Property 
Property MSFlexGrid.CellFontItalic() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellFontItalic(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellFontItalic(Byval tCellFontItalic AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_CellFontItalic(ptrIMSFlexGrid,tCellFontItalic)
End Property 
Property MSFlexGrid.CellFontUnderline() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellFontUnderline(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellFontUnderline(Byval tCellFontUnderline AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_CellFontUnderline(ptrIMSFlexGrid,tCellFontUnderline)
End Property 
Property MSFlexGrid.CellFontStrikeThrough() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellFontStrikeThrough(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellFontStrikeThrough(Byval tCellFontStrikeThrough AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_CellFontStrikeThrough(ptrIMSFlexGrid,tCellFontStrikeThrough)
End Property 
Property MSFlexGrid.CellFontWidth() AS float
DIM As float  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellFontWidth(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellFontWidth(Byval prmCellFontWidth AS float)
	ptrIMSFlexGrid->lpvtbl->Put_CellFontWidth(ptrIMSFlexGrid,prmCellFontWidth)
End Property 
Property MSFlexGrid.TextStyle() AS TextStyleSettings
DIM As TextStyleSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_TextStyle(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.TextStyle(Byval prmTextStyle AS TextStyleSettings)
	ptrIMSFlexGrid->lpvtbl->Put_TextStyle(ptrIMSFlexGrid,prmTextStyle)
End Property 
Property MSFlexGrid.TextStyleFixed() AS TextStyleSettings
DIM As TextStyleSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_TextStyleFixed(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.TextStyleFixed(Byval prmTextStyleFixed AS TextStyleSettings)
	ptrIMSFlexGrid->lpvtbl->Put_TextStyleFixed(ptrIMSFlexGrid,prmTextStyleFixed)
End Property 
Property MSFlexGrid.ScrollTrack() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_ScrollTrack(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ScrollTrack(Byval tScrollTrack AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_ScrollTrack(ptrIMSFlexGrid,tScrollTrack)
End Property 
Property MSFlexGrid.FocusRect() AS FocusRectSettings
DIM As FocusRectSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_FocusRect(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FocusRect(Byval prmFocusRect AS FocusRectSettings)
	ptrIMSFlexGrid->lpvtbl->Put_FocusRect(ptrIMSFlexGrid,prmFocusRect)
End Property 
Property MSFlexGrid.HighLight() AS HighLightSettings
DIM As HighLightSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_HighLight(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.HighLight(Byval prmHighLight AS HighLightSettings)
	ptrIMSFlexGrid->lpvtbl->Put_HighLight(ptrIMSFlexGrid,prmHighLight)
End Property 
Property MSFlexGrid.Redraw() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_Redraw(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.Redraw(Byval tRedraw AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_Redraw(ptrIMSFlexGrid,tRedraw)
End Property 
Property MSFlexGrid.ScrollBars() AS ScrollBarsSettings
DIM As ScrollBarsSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_ScrollBars(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ScrollBars(Byval prmScrollBars AS ScrollBarsSettings)
	ptrIMSFlexGrid->lpvtbl->Put_ScrollBars(ptrIMSFlexGrid,prmScrollBars)
End Property 
Property MSFlexGrid.MouseRow() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_MouseRow(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.MouseCol() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_MouseCol(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellLeft() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellLeft(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellTop() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellTop(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellWidth() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellWidth(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellHeight() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellHeight(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.RowHeightMin() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_RowHeightMin(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.RowHeightMin(Byval prmRowHeightMin AS long)
	ptrIMSFlexGrid->lpvtbl->Put_RowHeightMin(ptrIMSFlexGrid,prmRowHeightMin)
End Property 
Property MSFlexGrid.FillStyle() AS FillStyleSettings
DIM As FillStyleSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_FillStyle(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FillStyle(Byval prmFillStyle AS FillStyleSettings)
	ptrIMSFlexGrid->lpvtbl->Put_FillStyle(ptrIMSFlexGrid,prmFillStyle)
End Property 
Property MSFlexGrid.GridLines() AS GridLineSettings
DIM As GridLineSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_GridLines(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.GridLines(Byval prmGridLines AS GridLineSettings)
	ptrIMSFlexGrid->lpvtbl->Put_GridLines(ptrIMSFlexGrid,prmGridLines)
End Property 
Property MSFlexGrid.GridLinesFixed() AS GridLineSettings
DIM As GridLineSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_GridLinesFixed(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.GridLinesFixed(Byval prmGridLinesFixed AS GridLineSettings)
	ptrIMSFlexGrid->lpvtbl->Put_GridLinesFixed(ptrIMSFlexGrid,prmGridLinesFixed)
End Property 
Property MSFlexGrid.GridColor() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_GridColor(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.GridColor(Byval prmGridColor AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_GridColor(ptrIMSFlexGrid,prmGridColor)
End Property 
Property MSFlexGrid.GridColorFixed() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_GridColorFixed(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.GridColorFixed(Byval prmGridColorFixed AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_GridColorFixed(ptrIMSFlexGrid,prmGridColorFixed)
End Property 
Property MSFlexGrid.CellBackColor() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellBackColor(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellBackColor(Byval prmCellBackColor AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_CellBackColor(ptrIMSFlexGrid,prmCellBackColor)
End Property 
Property MSFlexGrid.CellForeColor() AS OLE_COLOR
DIM As OLE_COLOR  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellForeColor(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellForeColor(Byval prmCellForeColor AS OLE_COLOR)
	ptrIMSFlexGrid->lpvtbl->Put_CellForeColor(ptrIMSFlexGrid,prmCellForeColor)
End Property 
Property MSFlexGrid.CellAlignment() AS short
DIM As short  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellAlignment(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellAlignment(Byval prmCellAlignment AS short)
	ptrIMSFlexGrid->lpvtbl->Put_CellAlignment(ptrIMSFlexGrid,prmCellAlignment)
End Property 
Property MSFlexGrid.CellTextStyle() AS TextStyleSettings
DIM As TextStyleSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellTextStyle(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellTextStyle(Byval prmCellTextStyle AS TextStyleSettings)
	ptrIMSFlexGrid->lpvtbl->Put_CellTextStyle(ptrIMSFlexGrid,prmCellTextStyle)
End Property 
Property MSFlexGrid.CellPictureAlignment() AS short
DIM As short  Retval
	ptrIMSFlexGrid->lpvtbl->get_CellPictureAlignment(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellPictureAlignment(Byval prmCellPictureAlignment AS short)
	ptrIMSFlexGrid->lpvtbl->Put_CellPictureAlignment(ptrIMSFlexGrid,prmCellPictureAlignment)
End Property 
Property MSFlexGrid.Clip() AS STRING
DIM As BSTR  Retval
	ptrIMSFlexGrid->lpvtbl->get_Clip(ptrIMSFlexGrid,@Retval)
	Return *cast(WSTRING PTR,Retval)
End Property 
Property MSFlexGrid.Clip(Byval pbstrClip AS STRING)
	ptrIMSFlexGrid->lpvtbl->Put_Clip(ptrIMSFlexGrid,StrToBstr(pbstrClip))
End Property 
Property MSFlexGrid.Sort(Byval prmClip AS short)
	ptrIMSFlexGrid->lpvtbl->Put_Sort(ptrIMSFlexGrid,prmClip)
End Property 
Property MSFlexGrid.SelectionMode() AS SelectionModeSettings
DIM As SelectionModeSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_SelectionMode(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.SelectionMode(Byval prmSelectionMode AS SelectionModeSettings)
	ptrIMSFlexGrid->lpvtbl->Put_SelectionMode(ptrIMSFlexGrid,prmSelectionMode)
End Property 
Property MSFlexGrid.MergeCells() AS MergeCellsSettings
DIM As MergeCellsSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_MergeCells(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.MergeCells(Byval prmMergeCells AS MergeCellsSettings)
	ptrIMSFlexGrid->lpvtbl->Put_MergeCells(ptrIMSFlexGrid,prmMergeCells)
End Property 
Property MSFlexGrid.AllowBigSelection() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_AllowBigSelection(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.AllowBigSelection(Byval tAllowBigSelection AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_AllowBigSelection(ptrIMSFlexGrid,tAllowBigSelection)
End Property 
Property MSFlexGrid.AllowUserResizing() AS AllowUserResizeSettings
DIM As AllowUserResizeSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_AllowUserResizing(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.AllowUserResizing(Byval prmAllowUserResizing AS AllowUserResizeSettings)
	ptrIMSFlexGrid->lpvtbl->Put_AllowUserResizing(ptrIMSFlexGrid,prmAllowUserResizing)
End Property 
Property MSFlexGrid.BorderStyle() AS BorderStyleSettings
DIM As BorderStyleSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_BorderStyle(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.BorderStyle(Byval prmBorderStyle AS BorderStyleSettings)
	ptrIMSFlexGrid->lpvtbl->Put_BorderStyle(ptrIMSFlexGrid,prmBorderStyle)
End Property 
Property MSFlexGrid.hWnd() AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_hWnd(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.Enabled() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_Enabled(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.Enabled(Byval tEnabled AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_Enabled(ptrIMSFlexGrid,tEnabled)
End Property 
Property MSFlexGrid.Appearance() AS AppearanceSettings
DIM As AppearanceSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_Appearance(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.Appearance(Byval prmAppearance AS AppearanceSettings)
	ptrIMSFlexGrid->lpvtbl->Put_Appearance(ptrIMSFlexGrid,prmAppearance)
End Property 
Property MSFlexGrid.MousePointer() AS MousePointerSettings
DIM As MousePointerSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_MousePointer(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.MousePointer(Byval prmMousePointer AS MousePointerSettings)
	ptrIMSFlexGrid->lpvtbl->Put_MousePointer(ptrIMSFlexGrid,prmMousePointer)
End Property 
Property MSFlexGrid.MouseIcon() AS IPICTUREDISP Ptr
DIM As IPICTUREDISP  Ptr Retval
	ptrIMSFlexGrid->lpvtbl->get_MouseIcon(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.MouseIcon(Byval prmMouseIcon AS IPICTUREDISP Ptr)
	ptrIMSFlexGrid->lpvtbl->PutRef_MouseIcon(ptrIMSFlexGrid,prmMouseIcon)
End Property 
Property MSFlexGrid.PictureType() AS PictureTypeSettings
DIM As PictureTypeSettings  Retval
	ptrIMSFlexGrid->lpvtbl->get_PictureType(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.PictureType(Byval prmPictureType AS PictureTypeSettings)
	ptrIMSFlexGrid->lpvtbl->Put_PictureType(ptrIMSFlexGrid,prmPictureType)
End Property 
Property MSFlexGrid.Picture() AS IPICTUREDISP Ptr
DIM As IPICTUREDISP  Ptr Retval
	ptrIMSFlexGrid->lpvtbl->get_Picture(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellPicture() AS IPICTUREDISP Ptr
DIM As IPICTUREDISP  Ptr Retval
	ptrIMSFlexGrid->lpvtbl->get_CellPicture(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.CellPicture(Byval prmCellPicture AS IPICTUREDISP PTR)
	ptrIMSFlexGrid->lpvtbl->PutRef_CellPicture(ptrIMSFlexGrid,prmCellPicture)
End Property 
Sub MSFlexGrid.AboutBox()
	ptrIMSFlexGrid->lpvtbl->AboutBox(ptrIMSFlexGrid)
End Sub 
Property MSFlexGrid.TextArray(Byval prmindex AS long) AS STRING
DIM As BSTR  Retval
	ptrIMSFlexGrid->lpvtbl->get_TextArray(ptrIMSFlexGrid,prmindex,@Retval)
	Return *cast(WSTRING PTR,Retval)
End Property 
Property MSFlexGrid.TextArray(Byval prmindex AS long, Byval pbstrTextArray AS STRING)
	ptrIMSFlexGrid->lpvtbl->Put_TextArray(ptrIMSFlexGrid,prmindex,StrToBstr(pbstrTextArray))
End Property 
Property MSFlexGrid.ColAlignment(Byval prmindex AS long) AS short
DIM As short  Retval
	ptrIMSFlexGrid->lpvtbl->get_ColAlignment(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ColAlignment(Byval prmindex AS long, Byval prmColAlignment AS short)
	ptrIMSFlexGrid->lpvtbl->Put_ColAlignment(ptrIMSFlexGrid,prmindex,prmColAlignment)
End Property 
Property MSFlexGrid.ColWidth(Byval prmindex AS long) AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_ColWidth(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ColWidth(Byval prmindex AS long, Byval prmColWidth AS long)
	ptrIMSFlexGrid->lpvtbl->Put_ColWidth(ptrIMSFlexGrid,prmindex,prmColWidth)
End Property 
Property MSFlexGrid.RowHeight(Byval prmindex AS long) AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_RowHeight(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.RowHeight(Byval prmindex AS long, Byval prmRowHeight AS long)
	ptrIMSFlexGrid->lpvtbl->Put_RowHeight(ptrIMSFlexGrid,prmindex,prmRowHeight)
End Property 
Property MSFlexGrid.MergeRow(Byval prmindex AS long) AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_MergeRow(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.MergeRow(Byval prmindex AS long, Byval tMergeRow AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_MergeRow(ptrIMSFlexGrid,prmindex,tMergeRow)
End Property 
Property MSFlexGrid.MergeCol(Byval prmindex AS long) AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_MergeCol(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.MergeCol(Byval prmindex AS long, Byval tMergeCol AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_MergeCol(ptrIMSFlexGrid,prmindex,tMergeCol)
End Property 
Property MSFlexGrid.RowPosition(Byval prmindex AS long, Byval prmMergeCol AS long)
	ptrIMSFlexGrid->lpvtbl->Put_RowPosition(ptrIMSFlexGrid,prmindex,prmMergeCol)
End Property 
Property MSFlexGrid.ColPosition(Byval prmindex AS long, Byval prmMergeCol AS long)
	ptrIMSFlexGrid->lpvtbl->Put_ColPosition(ptrIMSFlexGrid,prmindex,prmMergeCol)
End Property 
Property MSFlexGrid.RowData(Byval prmindex AS long) AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_RowData(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.RowData(Byval prmindex AS long, Byval prmRowData AS long)
	ptrIMSFlexGrid->lpvtbl->Put_RowData(ptrIMSFlexGrid,prmindex,prmRowData)
End Property 
Property MSFlexGrid.ColData(Byval prmindex AS long) AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_ColData(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ColData(Byval prmindex AS long, Byval prmColData AS long)
	ptrIMSFlexGrid->lpvtbl->Put_ColData(ptrIMSFlexGrid,prmindex,prmColData)
End Property 
FUNCTION MSFlexGrid.TextMatrix(Byval prmRow AS long, Byval prmCol AS long) AS STRING
DIM As BSTR  Retval
	ptrIMSFlexGrid->lpvtbl->get_TextMatrix(ptrIMSFlexGrid,prmRow,prmCol,@Retval)
	Return *cast(WSTRING PTR,Retval)
END FUNCTION 
Sub MSFlexGrid.TextMatrix(Byval prmRow AS long, Byval prmCol AS long, Byval pbstrTextMatrix AS STRING)
	ptrIMSFlexGrid->lpvtbl->Put_TextMatrix(ptrIMSFlexGrid,prmRow,prmCol,StrToBstr(pbstrTextMatrix))
End Sub 
Sub MSFlexGrid.AddItem(Byval pbstrItem AS STRING, Byval varindex AS VARIANT)
	ptrIMSFlexGrid->lpvtbl->AddItem(ptrIMSFlexGrid,StrToBstr(pbstrItem),varindex)
End Sub 
Sub MSFlexGrid.RemoveItem(Byval prmindex AS long)
	ptrIMSFlexGrid->lpvtbl->RemoveItem(ptrIMSFlexGrid,prmindex)
End Sub 
Sub MSFlexGrid.Clear()
	ptrIMSFlexGrid->lpvtbl->Clear(ptrIMSFlexGrid)
End Sub 
Sub MSFlexGrid.Refresh()
	ptrIMSFlexGrid->lpvtbl->Refresh(ptrIMSFlexGrid)
End Sub 
Property MSFlexGrid.DataSource() AS RowCursor
DIM As IRowCursor  ptr Retval
	ptrIMSFlexGrid->lpvtbl->get_DataSource(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.DataSource(Byval prmDataSource AS RowCursor)
	ptrIMSFlexGrid->lpvtbl->Put_DataSource(ptrIMSFlexGrid,prmDataSource)
End Property 
Property MSFlexGrid.RowIsVisible(Byval prmindex AS long) AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_RowIsVisible(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ColIsVisible(Byval prmindex AS long) AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_ColIsVisible(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.RowPos(Byval prmindex AS long) AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_RowPos(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.ColPos(Byval prmindex AS long) AS long
DIM As long  Retval
	ptrIMSFlexGrid->lpvtbl->get_ColPos(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.GridLineWidth() AS short
DIM As short  Retval
	ptrIMSFlexGrid->lpvtbl->get_GridLineWidth(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.GridLineWidth(Byval prmGridLineWidth AS short)
	ptrIMSFlexGrid->lpvtbl->Put_GridLineWidth(ptrIMSFlexGrid,prmGridLineWidth)
End Property 
Property MSFlexGrid.FixedAlignment(Byval prmindex AS long) AS short
DIM As short  Retval
	ptrIMSFlexGrid->lpvtbl->get_FixedAlignment(ptrIMSFlexGrid,prmindex,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FixedAlignment(Byval prmindex AS long, Byval prmFixedAlignment AS short)
	ptrIMSFlexGrid->lpvtbl->Put_FixedAlignment(ptrIMSFlexGrid,prmindex,prmFixedAlignment)
End Property 
Property MSFlexGrid.FontName() AS STRING
DIM As BSTR  Retval
	ptrIMSFlexGrid->lpvtbl->get_FontName(ptrIMSFlexGrid,@Retval)
	Return *cast(WSTRING PTR,Retval)
End Property 
Property MSFlexGrid.FontName(Byval pbstrFontName AS STRING)
	ptrIMSFlexGrid->lpvtbl->Put_FontName(ptrIMSFlexGrid,StrToBstr(pbstrFontName))
End Property 
Property MSFlexGrid.FontSize() AS float
DIM As float  Retval
	ptrIMSFlexGrid->lpvtbl->get_FontSize(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FontSize(Byval prmFontSize AS float)
	ptrIMSFlexGrid->lpvtbl->Put_FontSize(ptrIMSFlexGrid,prmFontSize)
End Property 
Property MSFlexGrid.FontBold() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_FontBold(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FontBold(Byval tFontBold AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_FontBold(ptrIMSFlexGrid,tFontBold)
End Property 
Property MSFlexGrid.FontItalic() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_FontItalic(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FontItalic(Byval tFontItalic AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_FontItalic(ptrIMSFlexGrid,tFontItalic)
End Property 
Property MSFlexGrid.FontStrikethru() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_FontStrikethru(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FontStrikethru(Byval tFontStrikethru AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_FontStrikethru(ptrIMSFlexGrid,tFontStrikethru)
End Property 
Property MSFlexGrid.FontUnderline() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_FontUnderline(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.FontUnderline(Byval tFontUnderline AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_FontUnderline(ptrIMSFlexGrid,tFontUnderline)
End Property 
Property MSFlexGrid.RightToLeft() AS VARIANT_BOOL
DIM As VARIANT_BOOL  Retval
	ptrIMSFlexGrid->lpvtbl->get_RightToLeft(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.RightToLeft(Byval tRightToLeft AS VARIANT_BOOL)
	ptrIMSFlexGrid->lpvtbl->Put_RightToLeft(ptrIMSFlexGrid,tRightToLeft)
End Property 
Property MSFlexGrid.OLEDropMode() AS OLEDropConstants
DIM As OLEDropConstants  Retval
	ptrIMSFlexGrid->lpvtbl->get_OLEDropMode(ptrIMSFlexGrid,@Retval)
	Return Retval
End Property 
Property MSFlexGrid.OLEDropMode(Byval prmpsOLEDropMode AS OLEDropConstants)
	ptrIMSFlexGrid->lpvtbl->Put_OLEDropMode(ptrIMSFlexGrid,prmpsOLEDropMode)
End Property 
Sub MSFlexGrid.OLEDrag()
	ptrIMSFlexGrid->lpvtbl->OLEDrag(ptrIMSFlexGrid)
End Sub 
aloberoger
Posts: 507
Joined: Jan 13, 2009 19:23

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by aloberoger »

form1_test.bi

Code: Select all

#Include ONCE "windows.bi"
#Include Once "crt.bi"
#Include Once "win/ocidl.bi"
#Include Once "win/olectl.bi"
 

#define CONTROL_SET_FONT(H,F)      SendMessage(H,WM_SETFONT,Cast(WPARAM,F),1)
#define Show(Window)               RedrawWindow(Window,0,0,0):ShowWindow(Window,SW_SHOW)

#DEFINE	SubclassWindow(h,f)	(CAST(WNDPROC, SetWindowLong(h,GWL_WNDPROC,CAST(DWORD, @f))))

 
 
Declare Function AtlAxWinInit Lib "atl.dll" Alias "AtlAxWinInit" () As HRESULT

Declare Function AtlAxGetControl Lib "atl.dll" Alias "AtlAxGetControl" ( _
                                               ByVal hWnd As HWND, ByVal pp As IUNKNOWN Ptr Ptr) As HRESULT

Declare Function AtlGetObjectSourceInterface Lib "atl.dll" Alias "AtlGetObjectSourceInterface" ( _
                                    ByVal punkObj As IUNKNOWN Ptr, ByRef plibid As Guid, ByRef piid As Guid, _
                                    ByRef pdwMajor As Word, ByRef pdwMinor As Word) As HRESULT
 





#Define MsgBox(s) MessageBox(getactivewindow(),s,"useactivex",MB_ok)



 DIM SHARED g_hinstance as HINSTANCE

'***************************************************************
' Now define our control ID constants
'***************************************************************

#DEFINE	ID_Command1		101
#DEFINE	ID_grd		   102

'***************************************************************
' Reserve memory space for each control that we'll create
'***************************************************************

DIM SHARED 	Form1	 AS 	HWND
DIM SHARED 	Command1	 AS 	HWND

  DIM SHARED  FontName As String
  DIM SHARED  Fontsize As float
  
 #Include Once "comHelper.bi" 
 #Include Once "MSFLXGRDClass.bi" 
 #Include Once "MSFLXGRDEvents.bi" 
  
   
  
  DIM   	grd	 AS 	MSFlexGrid
  
'**************************************************************
' Other variables & constants used by the program go here
'**************************************************************
DIM Shared As HWND hContainer 
DIM SHARED	hFont AS HFONT  'main font
DECLARE FUNCTION Form1_Proc ( byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM ) as LRESULT
DECLARE FUNCTION MakeFontEx(sFont As String, PointSize AS LONG, fBold AS LONG=0, _
                            fItalic AS LONG=0, fUnderline AS LONG=0, StrikeThru AS LONG=0,CharSet as LONG=0) AS HFONT

 DECLARE SUB Command1_Click()
 
 Sub AtlAxWinTerm()
     UnregisterClass("AtlAxWin", GetModuleHandle(0))
End Sub

FUNCTION AtlAxGetDispatch OverLoad (BYVAL hWndControl AS HWND) AS IDISPATCH PTR

    DIM hr AS HRESULT, ppUnk AS IUNKNOWN Ptr, ppDispatch AS IDispatch Ptr
    ' Get the IUnknown ptr of the OCX hosted in the control
    hr = AtlAxGetControl(hWndControl, @ppUnk)
    IF hr <>S_OK OR ppUnk =  NULL THEN
       Return NULL
    END IF
    ' Query for the existence of the dispatch interface
       hr = IUnknown_QueryInterface(ppUnk, @IID_IDispatch, @ppDispatch)
  
    ' If not found, return the IUnknown of the control
    IF hr <>  S_OK OR ppDispatch =  NULL THEN
       Return  Cast(IDISPATCH Ptr,ppUnk)
    END IF
    ' Release the IUnknown of the control

       IUnknown_Release(ppUnk)
  
    ' Return the retrieved address
    Return  ppDispatch
End Function


sub SetFormColor (hWnd As HWND ,Kolor As COLORREF )
   Dim As HBRUSH hbr=CreateSolidBrush(Kolor)
  DeleteObject(Cast(HBRUSH,SetClassLong(hWnd,GCL_HBRBACKGROUND,cast(DWORD,hbr))))
  InvalidateRect (hWnd,NULL,TRUE) 
End Sub


Function Set_Color (TxtColr As Integer ,BkColr As Integer ,wParam As WPARAM ,lParam As LPARAM )As LRESULT
  static As HBRUSH  ReUsableBrush
  SetTextColor(cast(HDC,wParam),TxtColr)
  if(BkColr=-1) Then
     BkColr=CInt(cUINT(CULng(GetClassLongPtr(GetParent(cast(HWND,lParam)),GCL_HBRBACKGROUND)))) 
     if(Cast(UINT,BkColr)>31)Then 
       SetBkMode(cast(HDC,wParam),TRANSPARENT): return BkColr 
     else
        BkColr=GetSysColor(BkColr-1)
     End If
  End If
  DeleteObject(ReUsableBrush) 
  ReUsableBrush=CreateSolidBrush(BkColr)
  SetBkColor(cast(HDC,wParam),BkColr) 
  return cast(LRESULT,ReUsableBrush)
End Function



' ========================================================================================
' Main
' ========================================================================================
Declare FUNCTION WINMAIN (BYVAL hInstance AS HINSTANCE, BYVAL hPrevInstance AS HINSTANCE, BYVAL lpszCmdLine AS ZString PTR, BYVAL nCmdShow AS LONG) AS LONG
  
End WinMain(GetModuleHandle(NULL),NULL,Command,SW_SHOW)

FUNCTION WINMAIN (BYVAL hInstance AS HINSTANCE, BYVAL hPrevInstance AS HINSTANCE, BYVAL lpszCmdLine AS ZString PTR, BYVAL nCmdShow AS LONG) AS LONG

   DIM hwndMain AS HWND
   Dim hCtl AS HWND
   Dim hFont AS HFONT
   Dim wcex AS WNDCLASSEX
   Dim szClassName AS ZString * 80

   hFont = GetStockObject(ANSI_VAR_FONT)

   ' Register the window class
   szClassName        ="Form1"
   g_hinstance       = hInstance
   wcex.cbSize        = SIZEOF(WNDCLASSEX)
   wcex.style         = CS_HREDRAW OR CS_VREDRAW
   wcex.lpfnWndProc   = @Form1_Proc
   wcex.cbClsExtra    = 0
   wcex.cbWndExtra    = 0
   wcex.hInstance     = hInstance
   wcex.hCursor       = LoadCursor (NULL, BYVAL IDC_ARROW)
   wcex.hbrBackground = cast(HBRUSH,COLOR_3DFACE+1)
   wcex.lpszMenuName  = NULL
   wcex.lpszClassName = STRPTR(szClassName)
   wcex.hIcon         = LoadIcon (NULL, BYVAL IDI_APPLICATION) ' Sample, if resource icon: LoadIcon(hInst, "APPICON")
   wcex.hIconSm       = LoadIcon (NULL, BYVAL IDI_APPLICATION) ' Remember to set small icon too..
   RegisterClassEx @wcex

          Dim As HRESULT   hr=AtlAxWinInit() 
 
          
 Form1 = CreateWindowEx( 0 ,"Form1","Test Event On MSFLEXGRID: Click on the grid and see what happen", WS_MINIMIZEBOX or  WS_SIZEBOX or  WS_CAPTION or  WS_MAXIMIZEBOX or  WS_POPUP or  WS_SYSMENU , 4, 23,752,393, HWND_DESKTOP, NULL , GetmoduleHandle(0),NULL)
 MakeFontEx("MS Sans Serif",24,400,0,0,0)
 Command1 = CreateWindowEx( WS_EX_CLIENTEDGE , "button", "Command1",  WS_CHILD or  WS_VISIBLE or  BS_PUSHBUTTON or  WS_TABSTOP, 8, 8, 113, 25, Form1, Cast(HMENU,ID_Command1), GetmoduleHandle(0),NULL)
 FontName="MS Sans Serif"
 FontSize=10
 MakeFontEx("MS Sans Serif",10,400,0,0,0)
 
 
  hContainer = CreateWindowEx( 0 ,"AtlAxWin",  "MSFlexGridLib.MSFlexGrid", _
                                   WS_CHILD Or WS_VISIBLE, 8, 40, 705, 305,Form1, Cast(HMENU,ID_Command1+1), GetmoduleHandle(0),NULL)
                                    
 
 grd=Cast(IMSFLExgrid Ptr,AtlAxGetDispatch(hContainer))
 
 SetEvent_DMSFlexGridEvents(TRUE,Cast(IMSFLExgrid Ptr, grd))
  
  grd.FontSize=24
  grd.rows=10
  grd.cols=10
 
 ShowWindow(Form1,SW_SHOW)
 UpdateWindow(Form1)

   ' Message handler loop
   Dim uMsg AS MSG
   While GetMessage(@uMsg, NULL, 0, 0)
      IF IsDialogMessage(hwndMain, @uMsg)=0 THEN
            TranslateMessage @uMsg
            DispatchMessage @uMsg
      END IF
   WEND

   	AtlAxWinTerm

   FUNCTION = uMsg.wParam

END FUNCTION



'***************************************************************
' Now that the form and its controls are loaded and on the
' screen, we go into the event loop and wait for the user
' to do something!
'***************************************************************

FUNCTION Form1_Proc ( byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM ) as LRESULT
	Dim RetC AS RECT
	 
	Dim ptnmhdr AS NMHDR PTR         'information about a notification message
	Dim mminfo AS MINMAXINFO PTR
  
	SELECT CASE Msg

	CASE WM_CREATE
			Return 0
	CASE WM_SIZE
		IF  wparam  <>  SIZE_MINIMIZED THEN
			GetClientRect hwnd, @RetC    'dlg client rect
			MoveWindow hContainer, 8, retC.Top + 35, RetC.Right -16, RetC.Bottom - 20 ,  TRUE
		END IF
		 return 0

	


	CASE WM_COMMAND
		SELECT CASE LOWORD(wParam)	'Which control triggered this event?
			CASE ID_Command1	'CommandButton
				Command1_Click()
		END SELECT
  Return 0
  
	CASE WM_CLOSE
 
    If IDYES = MessageBox(hWnd,"Quit?","Form1", MB_YESNO or MB_ICONQUESTION) Then
   	   SetEvent_DMSFlexGridEvents(FALSE,Cast(IMSFLExgrid Ptr, grd) )
			grd.Release
        DestroyWindow(Form1)
    End If
    Return 0
 
		CASE WM_DESTROY
			SetEvent_DMSFlexGridEvents(FALSE,Cast(IMSFLExgrid Ptr, grd) )
			grd.Release
		   PostQuitMessage(0)
		Return 0
 
	END SELECT
		Return DefWindowProc( hWnd, Msg, wParam, lParam )
END FUNCTION

'***********************************************************************************
' Add any other supporting routines here
'***********************************************************************************
 SUB Command1_Click()
	grd.Clear
End SUB 

FUNCTION MakeFontEx(sFont As String, PointSize AS LONG, fBold AS LONG=0, _
                 fItalic AS LONG =0, fUnderline AS LONG =0, StrikeThru AS LONG =0,CharSet as LONG=0) AS HFONT
Dim hDC AS HDC,  CyPixels AS LONG
Dim getFont AS LOGFONT
hDC = GetDC(HWND_DESKTOP)
CyPixels  = GetDeviceCaps(hDC, LOGPIXELSY)
ReleaseDC (HWND_DESKTOP, hDC)
PointSize = 0 - (PointSize * CyPixels) / 72
getFont.lfHeight = PointSize
getFont.lfWidth = 0
getFont.lfEscapement = 0
getFont.lfOrientation = 0
getFont.lfWeight = fBold
getFont.lfItalic = Cast(UCHAR,fItalic)
getFont.lfUnderline = Cast(UCHAR,fUnderline)
getFont.lfStrikeOut = Cast(UCHAR,StrikeThru)
getFont.lfCharSet = Cast(UCHAR,CharSet)
getFont.lfOutPrecision = OUT_TT_PRECIS
getFont.lfClipPrecision = CLIP_DEFAULT_PRECIS
getFont.lfQuality = DEFAULT_QUALITY
getFont.lfPitchAndFamily = FF_DONTCARE
 getFont.lfFaceName=getFont.lfFaceName+ sFont
FUNCTION = CreateFontIndirect(@getFont)
END Function


Sub SET_FONT(ByVal hwnd As HWND,byval strFonte As string , byval size as single, byval Bold as Integer=0, byval Italic as Integer=0, byval Underline as Integer=0, byval StrikeThru as Integer=0, ByVal CharSet as Integer=0) 
	DIM hFont AS HFONT=MakeFontEx(strFonte,size,Bold,Italic,Underline,StrikeThru, CharSet)
   SendMessage( hwnd,WM_SETFONT,cast(WPARAM,hFont),TRUE)
End Sub
aloberoger
Posts: 507
Joined: Jan 13, 2009 19:23

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by aloberoger »

msflxgrdEvents.bi

Code: Select all

/' ********************************************************************************************
 Library name: MSFlexGridLib
 Version: 1.0
 Documentation string: Microsoft FlexGrid Control 6.0 (SP6)
 Path: C:\WINDOWS\system32\MSFLXGRD.OCX
 Library GUID: {5E9E78A0-531B-11CF-91F6-C2863C385E30}
 Help file: C:\WINDOWS\HELP\MSHFlx98.chm
 Code machine generated by COM BUILD
Date: 02-11-2014  Time: 12:33:09
 author of the work : Alober      contact: aloberr@yahoo.fr
******************************************************************************************** '/



'********************************************************************************************
' DMSFlexGridEvents event interface
' Documentation string: Event interface for Microsoft FlexGrid Control
' Interface flags: &H1010 [Hidden] [Dispatchable]
' Member identifier: 27
' Number of functions: 20
'********************************************************************************************

Type _DMSFlexGridEventsvtbl_ As _DMSFlexGridEventsvtbl
Type _DMSFlexGridEvents
     lpvtbl As _DMSFlexGridEventsvtbl_ Ptr 
End Type 
Type _DMSFlexGridEventsvtbl 
	QueryInterface As Function(As _DMSFlexGridEvents ptr,As  REFIID,AS  LPVOID ptr)AS HRESULT
	AddRef As Function(As _DMSFlexGridEvents ptr)AS ULONG
	Release As Function(As _DMSFlexGridEvents ptr)AS ULONG
	GetTypeInfoCount As Function(As _DMSFlexGridEvents ptr,AS  UINT ptr)AS HRESULT
	GetTypeInfo As Function(As _DMSFlexGridEvents ptr,AS  UINT,AS  LCID,AS  ITypeInfo ptr ptr)AS HRESULT
	GetIDsOfNames As Function(As _DMSFlexGridEvents ptr,AS  REFIID,AS LPOLESTR Ptr,AS  UINT,AS  LCID,AS  DISPID ptr)AS HRESULT
	Invoke As Function(As _DMSFlexGridEvents ptr,AS  DISPID,AS  REFIID,AS  LCID,AS  WORD,AS  DISPPARAMS ptr,AS  VARIANT ptr,AS  EXCEPINFO ptr,AS  UINT ptr)AS HRESULT
	Click As Sub(As _DMSFlexGridEvents ptr)  'Fired when the user presses and releases the mouse button over the control.
	KeyDown As Sub(As _DMSFlexGridEvents ptr,BYVAL prmKeyCode As short Ptr,BYVAL prmShift As short)  'Fired when the user pushes a key.
	DblClick As Sub(As _DMSFlexGridEvents ptr)  'Fired when the user double-clicks the mouse over the control.
	KeyPress As Sub(As _DMSFlexGridEvents ptr,BYVAL prmKeyAscii As short Ptr)  'Fired when the user presses a key.
	KeyUp As Sub(As _DMSFlexGridEvents ptr,BYVAL prmKeyCode As short Ptr,BYVAL prmShift As short)  'Fired when the user releases a key.
	MouseDown As Sub(As _DMSFlexGridEvents ptr,BYVAL prmButton As short,BYVAL prmShift As short,BYVAL prmx As OLE_XPOS_PIXELS,BYVAL prmy As OLE_YPOS_PIXELS)  'Fired when the user presses a mouse button over the control.
	MouseMove As Sub(As _DMSFlexGridEvents ptr,BYVAL prmButton As short,BYVAL prmShift As short,BYVAL prmx As OLE_XPOS_PIXELS,BYVAL prmy As OLE_YPOS_PIXELS)  'Fired when the user moves the mouse over the control.
	MouseUp As Sub(As _DMSFlexGridEvents ptr,BYVAL prmButton As short,BYVAL prmShift As short,BYVAL prmx As OLE_XPOS_PIXELS,BYVAL prmy As OLE_YPOS_PIXELS)  'Fired when the user releases a mouse button over the control.
	SelChange As Sub(As _DMSFlexGridEvents ptr)  'Fired when the selected range of cells changes.
	RowColChange As Sub(As _DMSFlexGridEvents ptr)  'Fired when the current cell changes.
	EnterCell As Sub(As _DMSFlexGridEvents ptr)  'Fired before the cursor enters a cell.
	LeaveCell As Sub(As _DMSFlexGridEvents ptr)  'Fired after the cursor leaves a cell.
	Scroll As Sub(As _DMSFlexGridEvents ptr)  'Fired when the TopRow or LeftCol properties change.
	Compare As Sub(As _DMSFlexGridEvents ptr,BYVAL prmRow1 As long,BYVAL prmRow2 As long,BYVAL prmCmp As short Ptr)  'Fired during custom sorts to compare two rows.
	OLEStartDrag As Sub(As _DMSFlexGridEvents ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmAllowedEffects As long Ptr)  'OLEStartDrag event
	OLEGiveFeedback As Sub(As _DMSFlexGridEvents ptr,BYVAL prmEffect As long Ptr,BYVAL prmDefaultCursors As VARIANT_BOOL Ptr)  'OLEGiveFeedback event
	OLESetData As Sub(As _DMSFlexGridEvents ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmDataFormat As short Ptr)  'OLESetData event
	OLECompleteDrag As Sub(As _DMSFlexGridEvents ptr,BYVAL prmEffect As long Ptr)  'OLECompleteDrag event
	OLEDragOver As Sub(As _DMSFlexGridEvents ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmEffect As long Ptr,BYVAL prmButton As short Ptr,BYVAL prmShift As short Ptr,BYVAL prmx As float Ptr,BYVAL prmy As float Ptr,BYVAL prmState As short Ptr)  'OLEDragOver event
	OLEDragDrop As Sub(As _DMSFlexGridEvents ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmEffect As long Ptr,BYVAL prmButton As short Ptr,BYVAL prmShift As short Ptr,BYVAL prmx As float Ptr,BYVAL prmy As float Ptr)  'OLEDragDrop event
End type



	Declare Function  _DMSFlexGridEvents_QueryInterface (As _DMSFlexGridEvents ptr,As  REFIID,AS  LPVOID ptr)AS HRESULT
	Declare Function  _DMSFlexGridEvents_AddRef (As _DMSFlexGridEvents ptr)AS ULONG
	Declare Function  _DMSFlexGridEvents_Release (As _DMSFlexGridEvents ptr)AS ULONG
	Declare Function  _DMSFlexGridEvents_GetTypeInfoCount (As _DMSFlexGridEvents ptr,AS  UINT ptr)AS HRESULT
	Declare Function  _DMSFlexGridEvents_GetTypeInfo (As _DMSFlexGridEvents ptr,AS  UINT,AS  LCID,AS  ITypeInfo ptr ptr)AS HRESULT
	Declare Function  _DMSFlexGridEvents_GetIDsOfNames (As _DMSFlexGridEvents ptr,AS  REFIID,AS LPOLESTR Ptr,AS  UINT,AS  LCID,AS  DISPID ptr)AS HRESULT
	Declare Function  _DMSFlexGridEvents_Invoke (As _DMSFlexGridEvents ptr,AS  DISPID,AS  REFIID,AS  LCID,AS  WORD,AS  DISPPARAMS ptr,AS  VARIANT ptr,AS  EXCEPINFO ptr,AS  UINT ptr)AS HRESULT
	Declare Sub _DMSFlexGridEvents_Click (As _DMSFlexGridEvents ptr) 
	Declare Sub _DMSFlexGridEvents_KeyDown (As _DMSFlexGridEvents ptr,BYVAL prmKeyCode As short Ptr,BYVAL prmShift As short) 
	Declare Sub _DMSFlexGridEvents_DblClick (As _DMSFlexGridEvents ptr) 
	Declare Sub _DMSFlexGridEvents_KeyPress (As _DMSFlexGridEvents ptr,BYVAL prmKeyAscii As short Ptr) 
	Declare Sub _DMSFlexGridEvents_KeyUp (As _DMSFlexGridEvents ptr,BYVAL prmKeyCode As short Ptr,BYVAL prmShift As short) 
	Declare Sub _DMSFlexGridEvents_MouseDown (As _DMSFlexGridEvents ptr,BYVAL prmButton As short,BYVAL prmShift As short,BYVAL prmx As OLE_XPOS_PIXELS,BYVAL prmy As OLE_YPOS_PIXELS) 
	Declare Sub _DMSFlexGridEvents_MouseMove (As _DMSFlexGridEvents ptr,BYVAL prmButton As short,BYVAL prmShift As short,BYVAL prmx As OLE_XPOS_PIXELS,BYVAL prmy As OLE_YPOS_PIXELS) 
	Declare Sub _DMSFlexGridEvents_MouseUp (As _DMSFlexGridEvents ptr,BYVAL prmButton As short,BYVAL prmShift As short,BYVAL prmx As OLE_XPOS_PIXELS,BYVAL prmy As OLE_YPOS_PIXELS) 
	Declare Sub _DMSFlexGridEvents_SelChange (As _DMSFlexGridEvents ptr) 
	Declare Sub _DMSFlexGridEvents_RowColChange (As _DMSFlexGridEvents ptr) 
	Declare Sub _DMSFlexGridEvents_EnterCell (As _DMSFlexGridEvents ptr) 
	Declare Sub _DMSFlexGridEvents_LeaveCell (As _DMSFlexGridEvents ptr) 
	Declare Sub _DMSFlexGridEvents_Scroll (As _DMSFlexGridEvents ptr) 
	Declare Sub _DMSFlexGridEvents_Compare (As _DMSFlexGridEvents ptr,BYVAL prmRow1 As long,BYVAL prmRow2 As long,BYVAL prmCmp As short Ptr) 
	Declare Sub _DMSFlexGridEvents_OLEStartDrag (As _DMSFlexGridEvents ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmAllowedEffects As long Ptr) 
	Declare Sub _DMSFlexGridEvents_OLEGiveFeedback (As _DMSFlexGridEvents ptr,BYVAL prmEffect As long Ptr,BYVAL prmDefaultCursors As VARIANT_BOOL Ptr) 
	Declare Sub _DMSFlexGridEvents_OLESetData (As _DMSFlexGridEvents ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmDataFormat As short Ptr) 
	Declare Sub _DMSFlexGridEvents_OLECompleteDrag (As _DMSFlexGridEvents ptr,BYVAL prmEffect As long Ptr) 
	Declare Sub _DMSFlexGridEvents_OLEDragOver (As _DMSFlexGridEvents ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmEffect As long Ptr,BYVAL prmButton As short Ptr,BYVAL prmShift As short Ptr,BYVAL prmx As float Ptr,BYVAL prmy As float Ptr,BYVAL prmState As short Ptr) 
	Declare Sub _DMSFlexGridEvents_OLEDragDrop (As _DMSFlexGridEvents ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmEffect As long Ptr,BYVAL prmButton As short Ptr,BYVAL prmShift As short Ptr,BYVAL prmx As float Ptr,BYVAL prmy As float Ptr) 

 DIM SHARED _DMSFlexGridEventsTable AS _DMSFlexGridEventsVtbl = ( _
                                                               @_DMSFlexGridEvents_QueryInterface, _
                                                               @_DMSFlexGridEvents_AddRef, _
                                                               @_DMSFlexGridEvents_Release, _
                                                               @_DMSFlexGridEvents_GetTypeInfoCount, _
                                                               @_DMSFlexGridEvents_GetTypeInfo, _
                                                               @_DMSFlexGridEvents_GetIDsOfNames, _
                                                               @_DMSFlexGridEvents_Invoke, _
                                                               @_DMSFlexGridEvents_Click, _
                                                               @_DMSFlexGridEvents_KeyDown, _
                                                               @_DMSFlexGridEvents_DblClick, _
                                                               @_DMSFlexGridEvents_KeyPress, _
                                                               @_DMSFlexGridEvents_KeyUp, _
                                                               @_DMSFlexGridEvents_MouseDown, _
                                                               @_DMSFlexGridEvents_MouseMove, _
                                                               @_DMSFlexGridEvents_MouseUp, _
                                                               @_DMSFlexGridEvents_SelChange, _
                                                               @_DMSFlexGridEvents_RowColChange, _
                                                               @_DMSFlexGridEvents_EnterCell, _
                                                               @_DMSFlexGridEvents_LeaveCell, _
                                                               @_DMSFlexGridEvents_Scroll, _
                                                               @_DMSFlexGridEvents_Compare, _
                                                               @_DMSFlexGridEvents_OLEStartDrag, _
                                                               @_DMSFlexGridEvents_OLEGiveFeedback, _
                                                               @_DMSFlexGridEvents_OLESetData, _
                                                               @_DMSFlexGridEvents_OLECompleteDrag, _
                                                               @_DMSFlexGridEvents_OLEDragOver, _
                                                               @_DMSFlexGridEvents_OLEDragDrop) 

DIM SHARED _DMSFlexGridEventspSEvent AS  _DMSFlexGridEvents
              _DMSFlexGridEventspSEvent.lpvtbl = cast(_DMSFlexGridEventsVtbl Ptr,@_DMSFlexGridEventsTable)

'******************************************************************************
' Setup event interface
'******************************************************************************

Sub  SetEvent_DMSFlexGridEvents(connect as BOOL , punk as LPVOID )
   
    dim As IConnectionPointContainer ptr  cpc
    dim as IConnectionPoint ptr  cp
    static As DWORD  EvdwCookie
    dim As HRESULT  hr
   ' if(punk=NULL)then punk=ptrIMSFlexGrid

   hr=(cast(IUnknown ptr,punk))->lpVtbl->QueryInterface((cast(IUnknown ptr,punk)),@IID_IConnectionPointContainer,cast(LPVOID ptr,@cpc))
    if(FAILED(hr)) then 
       
        MessageBox (GetActiveWindow(), "Container failed","",0)
    End if
    hr=cpc->lpVtbl->FindConnectionPoint(cpc,@IID_DMSFlexGridEvents,@cp)
    if(FAILED(hr)) then
       
        MessageBox (GetActiveWindow(), "Connection point failed","",0)
    End if
    if(connect) then 
       
        hr=cp->lpVtbl->Advise(cp,cast(IUnknown ptr,@_DMSFlexGridEventspSEvent),@EvdwCookie)
       
    else
       
        hr=cp->lpVtbl->Unadvise(cp,EvdwCookie)
    End if
    cp->lpVtbl->Release(cp)
    cpc->lpVtbl->Release(cpc)
End sub
'******************************************************************************
' Dispatch event functions
'******************************************************************************

FUNCTION _DMSFlexGridEvents_QueryInterface ( thisobj as _DMSFlexGridEvents Ptr,riid as REFIID , ppvObj as LPVOID ptr ) As HRESULT
    if(IsEqualIID(riid,@IID_IUnknown) OR IsEqualIID(riid,@IID_IDispatch)) then
      *ppvObj=thisobj 
   elseif(IsEqualIID(riid,@IID_DMSFlexGridEvents))then 
      *ppvObj=@_DMSFlexGridEventspSEvent
   else
      *ppvObj=NULL 
      return E_NOINTERFACE 
   End if
  thisobj->lpVtbl->AddRef(thisobj)
  return S_OK
END FUNCTION

FUNCTION _DMSFlexGridEvents_AddRef ( thisobj as _DMSFlexGridEvents Ptr) AS ULONG
  return 1
END FUNCTION

FUNCTION _DMSFlexGridEvents_Release ( thisobj as _DMSFlexGridEvents Ptr)AS ULONG
  return 1
END FUNCTION

FUNCTION _DMSFlexGridEvents_GetTypeInfoCount ( thisobj As _DMSFlexGridEvents Ptr, iTInfo As UINT ptr) As HRESULT
  return E_NOTIMPL 
END FUNCTION

FUNCTION  _DMSFlexGridEvents_GetTypeInfo ( thisobj as _DMSFlexGridEvents Ptr,iTInfo As UINT ,lcid As LCID ,ppTInfo As ITypeInfo ptr ptr )As HRESULT
  return E_NOTIMPL 
END FUNCTION

FUNCTION  _DMSFlexGridEvents_GetIDsOfNames ( thisobj as _DMSFlexGridEvents Ptr,riid As REFIID ,rgszNames AS LPOLESTR Ptr ,cnames As UINT ,lcid As LCID ,rgDispId As DISPID ptr )As HRESULT
  return E_NOTIMPL 
END FUNCTION

FUNCTION  _DMSFlexGridEvents_Invoke ( thisobj as _DMSFlexGridEvents Ptr,dispIdMember As DISPID ,riid As REFIID ,lcid As LCID ,wFlags As WORD ,pDispParams As DISPPARAMS ptr ,pVarResult As VARIANT ptr,pExcepInfo As EXCEPINFO ptr,puArgErr As UINT ptr) As HRESULT
  ' Validate arguments
  if(CompareIID(riid,@IID_NULL)<>0 OR (0=(wFlags and DISPATCH_METHOD))) then
      return E_INVALIDARG 
    End if
  dim As HRESULT  hr 
  hr=S_OK 
  Select Case dispIdMember

	Case -600
		_DMSFlexGridEvents_Click(thisobj) 
		Return S_OK
  
	Case -602
		_DMSFlexGridEvents_KeyDown(thisobj,pDispParams->rgvarg[1].piVal,pDispParams->rgvarg[0].iVal)
		Return S_OK
  
	Case -601
		_DMSFlexGridEvents_DblClick(thisobj) 
		Return S_OK
  
	Case -603
		_DMSFlexGridEvents_KeyPress(thisobj,pDispParams->rgvarg[0].piVal)
		Return S_OK
  
	Case -604
		_DMSFlexGridEvents_KeyUp(thisobj,pDispParams->rgvarg[1].piVal,pDispParams->rgvarg[0].iVal)
		Return S_OK
  
	Case -605
		_DMSFlexGridEvents_MouseDown(thisobj,pDispParams->rgvarg[3].iVal,pDispParams->rgvarg[2].iVal,pDispParams->rgvarg[1].lVal,pDispParams->rgvarg[0].lVal)
		Return S_OK
  
	Case -606
		_DMSFlexGridEvents_MouseMove(thisobj,pDispParams->rgvarg[3].iVal,pDispParams->rgvarg[2].iVal,pDispParams->rgvarg[1].lVal,pDispParams->rgvarg[0].lVal)
		Return S_OK
  
	Case -607
		_DMSFlexGridEvents_MouseUp(thisobj,pDispParams->rgvarg[3].iVal,pDispParams->rgvarg[2].iVal,pDispParams->rgvarg[1].lVal,pDispParams->rgvarg[0].lVal)
		Return S_OK
  
	Case 69
		_DMSFlexGridEvents_SelChange(thisobj) 
		Return S_OK
  
	Case 70
		_DMSFlexGridEvents_RowColChange(thisobj) 
		Return S_OK
  
	Case 71
		_DMSFlexGridEvents_EnterCell(thisobj) 
		Return S_OK
  
	Case 72
		_DMSFlexGridEvents_LeaveCell(thisobj) 
		Return S_OK
  
	Case 73
		_DMSFlexGridEvents_Scroll(thisobj) 
		Return S_OK
  
	Case 74
		_DMSFlexGridEvents_Compare(thisobj,pDispParams->rgvarg[2].lVal,pDispParams->rgvarg[1].lVal,pDispParams->rgvarg[0].piVal)
		Return S_OK
  
	Case 1550
		_DMSFlexGridEvents_OLEStartDrag(thisobj,pDispParams->rgvarg[1].ppdispVal,pDispParams->rgvarg[0].plVal)
		Return S_OK
  
	Case 1551
		_DMSFlexGridEvents_OLEGiveFeedback(thisobj,pDispParams->rgvarg[1].plVal,pDispParams->rgvarg[0].pboolVal)
		Return S_OK
  
	Case 1552
		_DMSFlexGridEvents_OLESetData(thisobj,pDispParams->rgvarg[1].ppdispVal,pDispParams->rgvarg[0].piVal)
		Return S_OK
  
	Case 1553
		_DMSFlexGridEvents_OLECompleteDrag(thisobj,pDispParams->rgvarg[0].plVal)
		Return S_OK
  
	Case 1554
		_DMSFlexGridEvents_OLEDragOver(thisobj,pDispParams->rgvarg[6].ppdispVal,pDispParams->rgvarg[5].plVal,pDispParams->rgvarg[4].piVal,pDispParams->rgvarg[3].piVal,pDispParams->rgvarg[2].pfltVal,pDispParams->rgvarg[1].pfltVal,pDispParams->rgvarg[0].piVal)
		Return S_OK
  
	Case 1555
		_DMSFlexGridEvents_OLEDragDrop(thisobj,pDispParams->rgvarg[5].ppdispVal,pDispParams->rgvarg[4].plVal,pDispParams->rgvarg[3].piVal,pDispParams->rgvarg[2].piVal,pDispParams->rgvarg[1].pfltVal,pDispParams->rgvarg[0].pfltVal)
		Return S_OK
  
    Case Else
         hr=E_FAIL
  End Select 
return hr 
END FUNCTION


Extern grd As MSFlexGrid


   


'********************************************************************************************
' Documentation string: Fired when the user presses and releases the mouse button over the control.
' Number of parameters: 0
'********************************************************************************************
Sub _DMSFlexGridEvents_Click (thisobj As _DMSFlexGridEvents Ptr)
    
    '(Grd.font).name="Arial"
    '(Grd.font).size=15
    '(Grd.font).Bold=TRUE
   OleCreateFontDisp( "Arial",15,400)

	Grd.BackColorFixed=BGR(255,255,0)
   Grd.ForeColorFixed=BGR(0,0,255) 
   
   For i As Long=0 To grd.Rows
   	For j As Long=0 To grd.Cols
   		grd.TextMatrix(i,j,"Cell(" & i & "," & j & ")")
   	Next
   Next
   
   
   /'Dim As Long   row = Grd.MouseRow
    
         IF row = 0 THEN               ' // User has clicked the header row
            ' Sort rows in ascending order
            'pGrid.Sort = flexSortGenericAscending
            Messagebox NULL,"Vous avez cliqué sur La ligne 0","test Events of MSFlexgrid",0 
         Else
         	Messagebox NULL,"Vous n'avez pas cliqué sur La ligne 0","test Events of MSFlexgrid",0 
         END If
   '/      
End Sub  

'********************************************************************************************
' Documentation string: Fired when the user pushes a key.
' Number of parameters: 2
'********************************************************************************************
Sub _DMSFlexGridEvents_KeyDown (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmKeyCode As short Ptr,BYVAL prmShift As short)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired when the user double-clicks the mouse over the control.
' Number of parameters: 0
'********************************************************************************************
Sub _DMSFlexGridEvents_DblClick (thisobj As _DMSFlexGridEvents Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired when the user presses a key.
' Number of parameters: 1
'********************************************************************************************
Sub _DMSFlexGridEvents_KeyPress (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmKeyAscii As short Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired when the user releases a key.
' Number of parameters: 2
'********************************************************************************************
Sub _DMSFlexGridEvents_KeyUp (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmKeyCode As short Ptr,BYVAL prmShift As short)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired when the user presses a mouse button over the control.
' Number of parameters: 4
'********************************************************************************************
Sub _DMSFlexGridEvents_MouseDown (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmButton As short,BYVAL prmShift As short,BYVAL prmx As OLE_XPOS_PIXELS,BYVAL prmy As OLE_YPOS_PIXELS)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired when the user moves the mouse over the control.
' Number of parameters: 4
'********************************************************************************************
Sub _DMSFlexGridEvents_MouseMove (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmButton As short,BYVAL prmShift As short,BYVAL prmx As OLE_XPOS_PIXELS,BYVAL prmy As OLE_YPOS_PIXELS)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired when the user releases a mouse button over the control.
' Number of parameters: 4
'********************************************************************************************
Sub _DMSFlexGridEvents_MouseUp (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmButton As short,BYVAL prmShift As short,BYVAL prmx As OLE_XPOS_PIXELS,BYVAL prmy As OLE_YPOS_PIXELS)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired when the selected range of cells changes.
' Number of parameters: 0
'********************************************************************************************
Sub _DMSFlexGridEvents_SelChange (thisobj As _DMSFlexGridEvents Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired when the current cell changes.
' Number of parameters: 0
'********************************************************************************************
Sub _DMSFlexGridEvents_RowColChange (thisobj As _DMSFlexGridEvents Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired before the cursor enters a cell.
' Number of parameters: 0
'********************************************************************************************
Sub _DMSFlexGridEvents_EnterCell (thisobj As _DMSFlexGridEvents Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired after the cursor leaves a cell.
' Number of parameters: 0
'********************************************************************************************
Sub _DMSFlexGridEvents_LeaveCell (thisobj As _DMSFlexGridEvents Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired when the TopRow or LeftCol properties change.
' Number of parameters: 0
'********************************************************************************************
Sub _DMSFlexGridEvents_Scroll (thisobj As _DMSFlexGridEvents Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: Fired during custom sorts to compare two rows.
' Number of parameters: 3
'********************************************************************************************
Sub _DMSFlexGridEvents_Compare (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmRow1 As long,BYVAL prmRow2 As long,BYVAL prmCmp As short Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: OLEStartDrag event
' Number of parameters: 2
'********************************************************************************************
Sub _DMSFlexGridEvents_OLEStartDrag (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmAllowedEffects As long Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: OLEGiveFeedback event
' Number of parameters: 2
'********************************************************************************************
Sub _DMSFlexGridEvents_OLEGiveFeedback (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmEffect As long Ptr,BYVAL prmDefaultCursors As VARIANT_BOOL Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: OLESetData event
' Number of parameters: 2
'********************************************************************************************
Sub _DMSFlexGridEvents_OLESetData (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmDataFormat As short Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: OLECompleteDrag event
' Number of parameters: 1
'********************************************************************************************
Sub _DMSFlexGridEvents_OLECompleteDrag (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmEffect As long Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: OLEDragOver event
' Number of parameters: 7
'********************************************************************************************
Sub _DMSFlexGridEvents_OLEDragOver (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmEffect As long Ptr,BYVAL prmButton As short Ptr,BYVAL prmShift As short Ptr,BYVAL prmx As float Ptr,BYVAL prmy As float Ptr,BYVAL prmState As short Ptr)

  '*** Add your code here ***
  return 
End Sub  

'********************************************************************************************
' Documentation string: OLEDragDrop event
' Number of parameters: 6
'********************************************************************************************
Sub _DMSFlexGridEvents_OLEDragDrop (thisobj As _DMSFlexGridEvents Ptr,BYVAL prmData As IDISPATCH /'DataObject'/ PTR PTR,BYVAL prmEffect As long Ptr,BYVAL prmButton As short Ptr,BYVAL prmShift As short Ptr,BYVAL prmx As float Ptr,BYVAL prmy As float Ptr)

  '*** Add your code here ***
  return 
End Sub  

aloberoger
Posts: 507
Joined: Jan 13, 2009 19:23

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by aloberoger »

here the simplest way to create COM objects with the virtual classes.
In ICLSFACTORY.bi I was obliged to define three operators = and two Windows interfaces: _ IUnknown and _ Iclassfactory

for the moment the originators of FreeBasic are not interested, because I could update the headers holding of account the abstract classes, not to have each time to define them, and especially when a control activex is will be created that would become harassing.

Here, I utilized FactoryInfo, another manner of implementeing only one classfactory for several coclasses.

http://www.2shared.com/file/qOhShglH/cl ... y_dll.html
MrSwiss
Posts: 3910
Joined: Jun 02, 2013 9:27
Location: Switzerland

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by MrSwiss »

aloberoger wrote:for the moment the originators of FreeBasic are not interested
And they'll probably never will be, because even Microsoft (the Inventor of ActiveX) has dumped it,
as well as Internet Explorer, in Favour of their NEW Spartan Browser: aka HTML5. It's a Thing of the Past ...
aloberoger
Posts: 507
Joined: Jan 13, 2009 19:23

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by aloberoger »

it seems to to me that it is the .NET technology which is the successor of COM, but on arrival all the modern languages always offer this technology.
why VTBL methods whereas it is more complex?
why virtual classes?
why the multiple heritage that it is by means of the INTERFACES or not?
marcedo
Posts: 4
Joined: Feb 26, 2016 14:31

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by marcedo »

aloberoger wrote:it seems to to me that it is the .NET technology which is the successor of COM, but on arrival all the modern languages always offer this technology.
why VTBL methods whereas it is more complex?
why virtual classes?
why the multiple heritage that it is by means of the INTERFACES or not?
Yes, i had a hard time using lateBind Objects via vtbl. But i was able to do it. See the link in Sample below.
https://www.freebasic-portal.de/code-be ... x-304.html

It also contains information on how to use com/ole without mfc. It is c++ code, but the implementation in FreeBASIC is similar.
hanD!
aloberoger
Posts: 507
Joined: Jan 13, 2009 19:23

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by aloberoger »

good work
aloberoger
Posts: 507
Joined: Jan 13, 2009 19:23

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by aloberoger »

New Headers with abstract classes for Current version 1.05
available on demand
srvaldez
Posts: 3379
Joined: Sep 25, 2005 21:54

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by srvaldez »

Hi aloberoger
I am interested in your ActiveX headers and examples, thanks in advance.
aloberoger
Posts: 507
Joined: Jan 13, 2009 19:23

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by aloberoger »

first you need the headers supporting both vtbl and Abstract classes, I have choosed abstract classes will be the default one
It is necessary to remind that these are only the files contained in the inc/Win folder of freebasic path which are concerned.
The remainder without chagement.


A possibility is to rename the folder Freebasic/inc/win in your installation by Freebasic/inc/win_ and to copy my folder win in Freebasic/inc/

test your old projects, they will have to work.
if you have a project using the vtbl, it will be necessary to add in any beginning #define _ FB_COM_VTBL _
because vtbl method is not the default
download the headers at: http://www.2shared.com/file/11E5di-_/win.html
test examples at: http://www.2shared.com/file/eJYl-WIo/test_project.html

since no problems occured , i will post others examples later.
aloberoger
Posts: 507
Joined: Jan 13, 2009 19:23

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by aloberoger »

And because a programmer always made copies, it is necessary to save the old file win by renaming it for example by win _ and then include the downloaded folder win in the suitable place Freebasic. folder Inc /
The things should go right.
I would give later the list of the modifications made .
Somebody said it did not think that this could work, perhaps I am an bright who speaks about something since nearly three years
since this one man show since this period, I enormously evolved/moved in the COM programming which I am now think that perhaps I am not followed.
my intervensions on this matter will be from now on requests.
srvaldez
Posts: 3379
Joined: Sep 25, 2005 21:54

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by srvaldez »

thank you aloberoger :)
will run the tests tomorrow as it's time for me to get some rest.
Imortis
Moderator
Posts: 1924
Joined: Jun 02, 2005 15:10
Location: USA
Contact:

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by Imortis »

@aloberoger:
I am always interested to see the progress on this. I just don't post as much as I once did. Keep up the good work. It is awesome to see.
Drago
Posts: 116
Joined: Aug 10, 2005 13:15

Re: INSIDE ACTIVEX WITH FREEBASIC

Post by Drago »

Dear Aloberoger,

i am also very interested in your work.

Code: Select all

Dim CnT As New ADODB.Connection
Dim RsT As New ADODB.Recordset
I'm still searching for example to use the MS ADO DB under FB as I'm used to to with Excel VBA

Greetings
Drago
Post Reply