Determining If an Object Is Capable of Visual Editing
ID: Q99045
|
The information in this article applies to:
-
Microsoft OLE Libraries for Windows and Win32s, versions 2.0, 2.01
-
Microsoft OLE Libraries, used with:
-
Microsoft Windows NT, versions 3.5, 3.51, 4.0
-
Microsoft Windows 95
-
Microsoft Windows 2000
SUMMARY
It is impossible for a container to consistently determine whether an
object will attempt negotiation for visual editing. However, by
determining whether the object supports the IOleInPlaceObject
interface, the container may want to assume that the negotiation will
occur.
The default object handler will always fail a call to QueryInterface
for IOleInPlaceObject if the object is in the loaded state. The
container must first run the object and then query for the
IOleInPlaceObject interface. If this QueryInterface call succeeds,
then the container can assume that the object supports visual editing,
and may start negotiation on the execution of a verb.
MORE INFORMATION
The following C++ code returns TRUE if an object may start visual
negotiation when IOleObject::DoVerb is called:
BOOL fCanInPlaceActivate(LPOLEOBJECT lpObject)
{
LPOLEINPLACEOBJECT lpInPlaceObject;
BOOL retval;
// Run the object.
OleRun(lpObject);
// Query for IOleInPlaceObject.
HRESULT herr = lpObject->QueryInterface(IID_IOleInPlaceObject,
(LPVOID FAR *)
lpInPlaceObject);
// Check the return value.
if (herr == NOERROR)
{
retval = TRUE;
lpInPlaceObject->Release();
}
else
retval = FALSE;
lpObject::Close(OLECLOSE_NOSAVE);
return retval;
}
Additional query words:
2.00 3.50 4.00
Keywords : kbNTOS350 kbNTOS351 kbNTOS400 kbWinOS2000 kbOLE200 kbWinOS95 kbGrpCom kbDSupport
Version : WINDOWS:2.0,2.01,95; :
Platform : WINDOWS
Issue type :