4.00 | 4.00
WINDOWS | WINDOWS NT
kbusage kbole kbhowto kbcode
The information in this article applies to:
- Standard, Professional, and Enterprise Editions of Microsoft Visual
Basic for Windows, 16-bit and 32-bit, version 4.0
- Microsoft Visual C++, 32-bit Edition, version 4.x
SUMMARY
The type of an OLE control is the coclass name for the OLE control as
defined in its ODL file. For example, the type of Textbox control is
TextBox, the type of the Data Bound Grid control from Apex is DBGrid, and
so on. In Visual Basic, the type of an OLE Control appears to the right of
the control name in the Editbox portion of the property browser. This
article shows how the type of an OLE custom control can be programmatically
obtained.
MORE INFORMATION
Step-by-Step Example
- Create a rudimentary 32-bit OLE Control using the MFC CDK that ships
with Visual C++ 4.x. This article assumes that this custom OCX is called
Test (coclass name) and that the control class name is CTestCtrl.
- Use the Visual C++ MFC ClassWizard to add the following method to your
control class. The external and internal name of this method is
TypeOfControl. It takes a parameter of type LPDISPATCH, which is a
pointer to the primary IDispatch Interface of the OLE control whose Type
you want to find, and returns the type as a BSTR:
BSTR CTestCtrl::TypeOfControl(LPDISPATCH lpDisp)
{
// TODO: Add your dispatch handler code here
IProvideClassInfo *pProvideClassInfo;
LPTYPEINFO pTypeInfo;
BSTR bstrType = NULL;
if(lpDisp->QueryInterface(IID_IProvideClassInfo, (LPVOID *)
&pProvideClassInfo) == NOERROR)
{
if (pProvideClassInfo->GetClassInfo(&pTypeInfo) == NOERROR)
{
pTypeInfo->GetDocumentation(MEMBERID_NIL, &bstrType, NULL, NULL,
NULL);
pTypeInfo->Release();
}
pProvideClassInfo->Release();
}
return bstrType;
}
- Build the Test OLE control from Visual C++ 4.x. This automatically
registers the control if everything compiles properly.
- From Visual Basic 4.0 32-bit, open a new project, and add the Test OLE
control to the Visual Basic toolbox by choosing it from the Tools\Custom
Controls menu.
- Add an instance of the Test OLE control to Form1. This will be named
Test1.
- Add a DBGrid control to Form1. This will be named DBGrid1.
- Add the following code to the general declarations portion of Form1:
Private Sub Form_Click()
Debug.Print Test1.TypeOfControl(dbgrid1.object)
End Sub
- Run the Visual Basic program, and click the form. You should see DBGrid
printed in the Debug window.
|