33 #define NONAMELESSUNION 47 #include "wine/list.h" 81 OLEMENUGROUPWIDTHS
mgw;
107 {
'W',
'i',
'n',
'e',
'D',
'r',
'a',
'g',
'D',
'r',
'o',
'p',
'T',
'r',
'a',
'c',
'k',
'e',
'r',
'3',
'2',0};
113 {
'P',
'R',
'O',
'P',
'_',
'O',
'L',
'E',
'M',
'e',
'n',
'u',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'o',
'r',0};
117 {
'O',
'l',
'e',
'D',
'r',
'o',
'p',
'T',
'a',
'r',
'g',
'e',
't',
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',0};
121 {
'W',
'i',
'n',
'e',
'M',
'a',
'r',
's',
'h',
'a',
'l',
'l',
'e',
'd',
'D',
'r',
'o',
'p',
'T',
'a',
'r',
'g',
'e',
't',0};
162 TRACE(
"Returning version %d, build %d.\n",
rmm,
rup);
206 TRACE(
"() - Initializing the OLE libraries\n");
236 WARN(
"ole_inits is already 0\n");
247 TRACE(
"() - Freeing the last reference count\n");
270 FIXME(
"(0x%08x, 0x%08x),stub!\n",
x,
y);
374 TRACE(
"size %d\n", (
int)
info.RegionSize);
413 IDropTarget_AddRef(&
This->IDropTarget_iface);
440 IDropTarget_AddRef( *
target );
455 r = IDropTarget_DragEnter(
target, pDataObj, grfKeyState,
pt, pdwEffect );
456 IDropTarget_Release(
target );
471 r = IDropTarget_DragOver(
target, grfKeyState,
pt, pdwEffect );
472 IDropTarget_Release(
target );
484 r = IDropTarget_DragLeave(
target );
485 IDropTarget_Release(
target );
501 r = IDropTarget_Drop(
target, pDataObj, grfKeyState,
pt, pdwEffect );
502 IDropTarget_Release(
target );
528 return &
This->IDropTarget_iface;
569 ERR(
"COM not initialized\n");
578 ERR(
"invalid hwnd %p\n",
hwnd);
586 FIXME(
"register for another process windows is disabled\n");
612 IDropTarget_Release(wrapper);
619 IDropTarget_AddRef(pDropTarget);
650 ERR(
"invalid hwnd %p\n",
hwnd);
659 if(drop_target) IDropTarget_Release(drop_target);
680 static const WCHAR auxusertypeW[] = {
'A',
'u',
'x',
'U',
's',
'e',
'r',
'T',
'y',
'p',
'e',
'\\',
'%',
'd',0};
681 DWORD valuetype, valuelen;
682 WCHAR auxkeynameW[16];
702 if (
form != USERCLASSTYPE_FULL)
712 usertypekey = auxkey;
759 static const WCHAR trackerW[] = {
'T',
'r',
'a',
'c',
'k',
'e',
'r',
'W',
'i',
'n',
'd',
'o',
'w',0};
761 HWND hwndTrackWindow;
764 TRACE(
"(%p, %p, %08x, %p)\n", pDataObject, pDropSource, dwOKEffect, pdwEffect);
766 if (!pDataObject || !pDropSource || !pdwEffect)
782 trackerInfo.accepterHWND =
NULL;
857 FIXME(
"(%p),stub!\n", pSrcDataObject);
869 static const WCHAR miscstatusW[] = {
'M',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',0};
870 static const WCHAR dfmtW[] = {
'%',
'd',0};
931 IEnumOLEVERB_AddRef(iface);
967 TRACE(
"(%d, %p, %p)\n", celt, rgelt, pceltFetched);
972 for (; celt; celt--, rgelt++)
987 ERR(
"RegEnumKeyW failed with error %d\n",
res);
994 ERR(
"RegQueryValueW failed with error %d\n",
res);
1007 ERR(
"RegQueryValueW failed with error %d\n",
res);
1014 pwszMenuFlags =
wcschr(pwszOLEVERB,
',');
1022 *pwszMenuFlags =
'\0';
1024 pwszAttribs =
wcschr(pwszMenuFlags,
',');
1032 *pwszAttribs =
'\0';
1037 rgelt->lpszVerbName = pwszOLEVERB;
1038 rgelt->fuFlags =
wcstol(pwszMenuFlags,
NULL, 10);
1039 rgelt->grfAttribs =
wcstol(pwszAttribs,
NULL, 10);
1053 TRACE(
"(%d)\n", celt);
1055 This->index += celt;
1076 TRACE(
"(%p)\n", ppenum);
1104 This->hkeyVerb = hkeyVerb;
1105 *ppenum = &
This->IEnumOLEVERB_iface;
1130 static const WCHAR wszVerb[] = {
'V',
'e',
'r',
'b',0};
1142 ERR(
"failed to open Verbs key for CLSID %s with error %d\n",
1183 hres = IRunnableObject_SetContainedObject(
runnable, fContained);
1216 hres = IRunnableObject_Run(runable,
NULL);
1217 IRunnableObject_Release(runable);
1227 LPOLECLIENTSITE pClientSite,
1233 STATSTG storageInfo;
1247 hres = IStorage_Stat(pStg, &storageInfo, STATFLAG_NONAME);
1256 CLSCTX_INPROC_HANDLER|CLSCTX_INPROC_SERVER,
1284 hres = IOleObject_GetMiscStatus(pOleObject, DVASPECT_CONTENT, &
dwStatus);
1294 hres = IPersistStorage_Load(persistStorage, pStg);
1296 IPersistStorage_Release(persistStorage);
1297 persistStorage =
NULL;
1304 hres = IOleObject_SetClientSite(pOleObject, pClientSite);
1310 IOleObject_Release(pOleObject);
1319 FIXME(
"handle OLE link\n");
1320 IOleLink_Release(pOleLink);
1326 IUnknown_Release(
pUnk);
1346 TRACE(
"(%p,%p,%x)\n", pPS, pStg, fSameAsLoad);
1351 hres = IPersistStorage_GetClassID(pPS, &objectClass);
1362 hres = IPersistStorage_Save(pPS, pStg, fSameAsLoad);
1366 IStorage_Commit(pStg,
1390 hres = IRunnableObject_LockRunning(
runnable, fLock, fLastUnlockCloses);
1488 if ((*ppHook)->tid ==
tid)
1490 pHookItem = *ppHook;
1491 *ppHook = pHookItem->
next;
1494 ppHook = &(*ppHook)->
next;
1496 if (!pHookItem)
return FALSE;
1529 for (pHookItem =
hook_list; pHookItem; pHookItem = pHookItem->
next)
1531 if (
tid == pHookItem->
tid )
1560 if ( hsubmenu == hPopupMenu )
1591 UINT nPos = 0, nWidth,
i;
1609 for (
i = 0, nWidth = 0;
i < 6;
i++ )
1611 nWidth += pOleMenuDescriptor->
mgw.width[
i];
1612 if ( nPos < nWidth )
1631 HOLEMENU hOleMenu = 0;
1655 if ( !pOleMenuDescriptor )
1713 if ( pOleMenuDescriptor )
1720 WARN(
"could not retrieve hHook for current thread!\n" );
1736 HOLEMENU hOleMenu = 0;
1774 if ( !pOleMenuDescriptor )
1787 if ( pOleMenuDescriptor )
1794 WARN(
"could not retrieve hHook for current thread!\n" );
1813 HMENU hmenuCombined,
1814 LPOLEMENUGROUPWIDTHS lpMenuWidths)
1820 if ( !hmenuCombined || !lpMenuWidths )
1829 if ( !pOleMenuDescriptor )
1833 for (
i = 0;
i < 6;
i++ )
1834 pOleMenuDescriptor->
mgw.width[
i] = lpMenuWidths->width[
i];
1848 HOLEMENU hmenuDescriptor)
1850 if ( hmenuDescriptor )
1878 HWND hwndActiveObject,
1879 LPOLEINPLACEFRAME lpFrame,
1880 LPOLEINPLACEACTIVEOBJECT lpActiveObject)
1885 if ( !hwndFrame || (hOleMenu && !hwndActiveObject) )
1888 if ( lpFrame || lpActiveObject )
1890 FIXME(
"(%p, %p, %p, %p, %p), Context sensitive help filtering not implemented!\n",
1915 if ( !pOleMenuDescriptor )
1919 pOleMenuDescriptor->
hwndFrame = hwndFrame;
1923 pOleMenuDescriptor =
NULL;
1954 if(!lpMsg)
return FALSE;
1957 WARN_(accel)(
"NULL accel handle\n");
1965 if (
NULL == lpAccelTbl)
1971 WARN_(accel)(
"CopyAcceleratorTableW failed\n");
1976 TRACE_(accel)(
"hAccel=%p, cAccelEntries=%d," 1977 "msg->hwnd=%p, msg->message=%04x, wParam=%08lx, lParam=%08lx\n",
1980 for(
i = 0;
i < cAccelEntries;
i++)
1998 TRACE_(accel)(
"found accel for virt_key %04lx (scan %04x)\n",
2004 TRACE_(accel)(
"incorrect SHIFT/CTRL/ALT-state\n");
2008 if(!(lpMsg->
lParam & 0x01000000))
2010 if((lpAccelTbl[
i].fVirt &
FALT) && (lpMsg->
lParam & 0x20000000))
2020 WARN_(accel)(
"couldn't translate accelerator key\n");
2025 if(lpwCmd) *lpwCmd = lpAccelTbl[
i].
cmd;
2036 switch (pmedium->tymed)
2040 if ( (pmedium->pUnkForRelease==0) &&
2041 (pmedium->u.hGlobal!=0) )
2047 if (pmedium->u.lpszFileName!=0)
2049 if (pmedium->pUnkForRelease==0)
2060 if (pmedium->u.pstm!=0)
2062 IStream_Release(pmedium->u.pstm);
2066 case TYMED_ISTORAGE:
2068 if (pmedium->u.pstg!=0)
2070 IStorage_Release(pmedium->u.pstg);
2076 if ( (pmedium->pUnkForRelease==0) &&
2077 (pmedium->u.hBitmap!=0) )
2083 if ( (pmedium->pUnkForRelease==0) &&
2084 (pmedium->u.hMetaFilePict!=0) )
2095 if ( (pmedium->pUnkForRelease==0) &&
2096 (pmedium->u.hEnhMetaFile!=0) )
2106 pmedium->tymed=TYMED_NULL;
2111 if (pmedium->pUnkForRelease!=0)
2113 IUnknown_Release(pmedium->pUnkForRelease);
2114 pmedium->pUnkForRelease = 0;
2148 #define DRAG_TIMER_ID 1 2207 fme.dwAspect = DVASPECT_CONTENT;
2209 fme.tymed = TYMED_HGLOBAL;
2212 *pdwEffect =
SUCCEEDED(
hr) ? DROPEFFECT_COPY : DROPEFFECT_NONE;
2214 if (*pdwEffect == DROPEFFECT_NONE)
2234 fme.dwAspect = DVASPECT_CONTENT;
2236 fme.tymed = TYMED_HGLOBAL;
2242 hr = pDataObj->lpVtbl->
GetData(pDataObj, &fme, &stgm);
2245 hGlobal = stgm.DUMMYUNIONNAME.hGlobal;
2267 info->curTargetHWND = new_target;
2273 if (is_acceptfiles(new_target))
2275 dwEffect =
info->dwOKEffect;
2276 hr = DefaultDragEnter(new_target,
info->dataObject,
2277 info->dwKeyState,
info->curMousePos,
2279 dwEffect &=
info->dwOKEffect;
2283 info->accepterHWND = new_target;
2285 *
info->pdwEffect = dwEffect;
2298 if (
info->curDragTarget)
2300 *
info->pdwEffect =
info->dwOKEffect;
2301 hr = IDropTarget_DragEnter(
info->curDragTarget,
info->dataObject,
2302 info->dwKeyState,
info->curMousePos,
2304 *
info->pdwEffect &=
info->dwOKEffect;
2309 IDropTarget_Release(
info->curDragTarget );
2326 if (
info->curDragTarget)
2329 *
info->pdwEffect != DROPEFFECT_NONE)
2331 *
info->pdwEffect =
info->dwOKEffect;
2332 hr = IDropTarget_Drop(
info->curDragTarget,
info->dataObject,
info->dwKeyState,
2333 info->curMousePos,
info->pdwEffect );
2334 *
info->pdwEffect &=
info->dwOKEffect;
2341 IDropTarget_DragLeave(
info->curDragTarget );
2342 *
info->pdwEffect = DROPEFFECT_NONE;
2344 IDropTarget_Release(
info->curDragTarget );
2348 else if (
info->accepterHWND)
2351 *
info->pdwEffect != DROPEFFECT_NONE)
2353 *
info->pdwEffect =
info->dwOKEffect;
2354 hr = DefaultDrop(
info->accepterHWND,
info->dataObject,
info->dwKeyState,
2355 info->curMousePos,
info->pdwEffect);
2356 *
info->pdwEffect &=
info->dwOKEffect;
2363 *
info->pdwEffect = DROPEFFECT_NONE;
2369 *
info->pdwEffect = DROPEFFECT_NONE;
2380 *
info->pdwEffect = DROPEFFECT_NONE;
2383 *
info->pdwEffect = DROPEFFECT_NONE;
2386 hr = IDropSource_GiveFeedback(
info->dropSource, *
info->pdwEffect );
2390 if (*
info->pdwEffect & DROPEFFECT_MOVE)
2392 else if (*
info->pdwEffect & DROPEFFECT_COPY)
2394 else if (*
info->pdwEffect & DROPEFFECT_LINK)
2418 HWND hwndNewTarget = 0;
2444 trackerInfo->accepterHWND =
NULL;
2466 else if (trackerInfo->accepterHWND)
2486 BYTE keyboardState[256];
2491 if ( (keyboardState[
VK_SHIFT] & 0x80) !=0)
2497 if ( (keyboardState[
VK_MENU] & 0x80) !=0)
2576 hres = IUnknown_QueryInterface(
pUnk,
2581 hres = IViewObject_Draw(
viewobject, dwAspect, -1, 0, 0, 0, hdcDraw, (
RECTL*)
rect, 0, 0, 0);
2593 LPOLEINPLACEFRAMEINFO lpFrameInfo,
LPMSG lpmsg)
2597 TRACE(
"(%p,%p,%p)\n", lpFrame, lpFrameInfo, lpmsg);
2599 if (
IsAccelerator(lpFrameInfo->haccel,lpFrameInfo->cAccelEntries,lpmsg,&wID))
2600 return IOleInPlaceFrame_TranslateAccelerator(lpFrame,lpmsg,wID);
2613 LPFORMATETC pFormatEtc,
2614 LPOLECLIENTSITE pClientSite,
2628 hres = IStorage_SetClass(pStg, rclsid);
2636 IOleObject_GetMiscStatus(pOleObject, DVASPECT_CONTENT, &
dwStatus);
2645 TRACE(
"trying to set stg %p\n", pStg);
2646 hres = IPersistStorage_InitNew(pPS, pStg);
2648 IPersistStorage_Release(pPS);
2654 TRACE(
"trying to set clientsite %p\n", pClientSite);
2655 hres = IOleObject_SetClientSite(pOleObject, pClientSite);
2660 IOleObject_Release(pOleObject);
2662 if (((renderopt == OLERENDER_DRAW) || (renderopt == OLERENDER_FORMAT)) &&
2673 if (renderopt == OLERENDER_DRAW && !pFormatEtc) {
2677 pfe.dwAspect = DVASPECT_CONTENT;
2679 pfe.tymed = TYMED_NULL;
2680 hres = IOleCache_Cache(pOleCache, &pfe, ADVF_PRIMEFIRST, &dwConnection);
2683 hres = IOleCache_Cache(pOleCache, pFormatEtc, ADVF_PRIMEFIRST, &dwConnection);
2684 IOleCache_Release(pOleCache);
2691 IUnknown_Release(
pUnk);
2706 static const WCHAR wszAutoConvertTo[] = {
'A',
'u',
't',
'o',
'C',
'o',
'n',
'v',
'e',
'r',
't',
'T',
'o',0};
2733 static const WCHAR wszAutoConvertTo[] = {
'A',
'u',
't',
'o',
'C',
'o',
'n',
'v',
'e',
'r',
't',
'T',
'o',0};
2760 WCHAR *user_type_old, *user_type_new;
2771 hr = IStorage_Stat(pStg, &
stat, STATFLAG_NONAME);
2780 hr = IStorage_SetClass(pStg, &
clsid);
2787 user_type_new =
NULL;
2792 user_type_new =
NULL;
2799 IStorage_SetClass(pStg, &
stat.clsid);
2807 IStorage_SetClass(pStg, &
stat.clsid);
2824 TRACE(
"(%p)\n",
object);
2826 if (!
object)
return FALSE;
2831 running = IRunnableObject_IsRunning(pRunnable);
2832 IRunnableObject_Release(pRunnable);
2961 WARN(
"Bad type %d\n",
vt);
2972 TRACE(
"(%p)\n", pvar);
2980 memset(pvar, 0,
sizeof(*pvar));
3013 if (pvar->u.pStream)
3014 IStream_Release(pvar->u.pStream);
3031 if (pvar->u.pclipdata)
3051 for (
i = 0;
i < pvar->u.cabstr.cElems;
i++)
3055 for (
i = 0;
i < pvar->u.calpstr.cElems;
i++)
3059 for (
i = 0;
i < pvar->u.calpwstr.cElems;
i++)
3074 WARN(
"Invalid/unsupported type %d\n", pvar->vt);
3079 memset(pvar, 0,
sizeof(*pvar));
3087 const PROPVARIANT *pvarSrc)
3092 TRACE(
"(%p, %p vt %04x)\n", pvarDest, pvarSrc, pvarSrc->vt);
3099 *pvarDest = *pvarSrc;
3130 if (pvarDest->u.pStream)
3131 IStream_AddRef(pvarDest->u.pStream);
3135 *pvarDest->u.puuid = *pvarSrc->u.puuid;
3138 if (pvarSrc->u.pszVal)
3146 if (pvarSrc->u.pwszVal)
3155 if (pvarSrc->u.blob.pBlobData)
3157 len = pvarSrc->u.blob.cbSize;
3159 CopyMemory(pvarDest->u.blob.pBlobData, pvarSrc->u.blob.pBlobData,
len);
3166 if (pvarSrc->u.pclipdata)
3168 len = pvarSrc->u.pclipdata->cbSize -
sizeof(pvarSrc->u.pclipdata->ulClipFmt);
3170 pvarDest->u.pclipdata->cbSize = pvarSrc->u.pclipdata->cbSize;
3171 pvarDest->u.pclipdata->ulClipFmt = pvarSrc->u.pclipdata->ulClipFmt;
3173 CopyMemory(pvarDest->u.pclipdata->pClipData, pvarSrc->u.pclipdata->pClipData,
len);
3184 case VT_I1: elemSize =
sizeof(pvarSrc->u.cVal);
break;
3185 case VT_UI1: elemSize =
sizeof(pvarSrc->u.bVal);
break;
3186 case VT_I2: elemSize =
sizeof(pvarSrc->u.iVal);
break;
3187 case VT_UI2: elemSize =
sizeof(pvarSrc->u.uiVal);
break;
3188 case VT_BOOL: elemSize =
sizeof(pvarSrc->u.boolVal);
break;
3189 case VT_I4: elemSize =
sizeof(pvarSrc->u.lVal);
break;
3190 case VT_UI4: elemSize =
sizeof(pvarSrc->u.ulVal);
break;
3191 case VT_R4: elemSize =
sizeof(pvarSrc->u.fltVal);
break;
3192 case VT_R8: elemSize =
sizeof(pvarSrc->u.dblVal);
break;
3193 case VT_ERROR: elemSize =
sizeof(pvarSrc->u.scode);
break;
3194 case VT_I8: elemSize =
sizeof(pvarSrc->u.hVal);
break;
3195 case VT_UI8: elemSize =
sizeof(pvarSrc->u.uhVal);
break;
3196 case VT_CY: elemSize =
sizeof(pvarSrc->u.cyVal);
break;
3197 case VT_DATE: elemSize =
sizeof(pvarSrc->u.date);
break;
3198 case VT_FILETIME: elemSize =
sizeof(pvarSrc->u.filetime);
break;
3199 case VT_CLSID: elemSize =
sizeof(*pvarSrc->u.puuid);
break;
3200 case VT_CF: elemSize =
sizeof(*pvarSrc->u.pclipdata);
break;
3201 case VT_BSTR: elemSize =
sizeof(pvarSrc->u.bstrVal);
break;
3202 case VT_LPSTR: elemSize =
sizeof(pvarSrc->u.pszVal);
break;
3203 case VT_LPWSTR: elemSize =
sizeof(pvarSrc->u.pwszVal);
break;
3204 case VT_VARIANT: elemSize =
sizeof(*pvarSrc->u.pvarVal);
break;
3210 len = pvarSrc->u.capropvar.cElems;
3214 for (
i = 0;
i <
len;
i++)
3215 PropVariantCopy(&pvarDest->u.capropvar.pElems[
i], &pvarSrc->u.capropvar.pElems[
i]);
3219 FIXME(
"Copy clipformats\n");
3223 for (
i = 0;
i <
len;
i++)
3229 for (
i = 0;
i <
len;
i++)
3231 strLen =
lstrlenA(pvarSrc->u.calpstr.pElems[
i]) + 1;
3233 memcpy(pvarDest->u.calpstr.pElems[
i],
3234 pvarSrc->u.calpstr.pElems[
i], strLen);
3240 for (
i = 0;
i <
len;
i++)
3242 strLen = (
lstrlenW(pvarSrc->u.calpwstr.pElems[
i]) + 1) *
3245 memcpy(pvarDest->u.calpstr.pElems[
i],
3246 pvarSrc->u.calpstr.pElems[
i], strLen);
3250 CopyMemory(pvarDest->u.capropvar.pElems, pvarSrc->u.capropvar.pElems,
len * elemSize);
3254 pvarDest->u.uhVal.QuadPart = 0;
3255 return SafeArrayCopy(pvarSrc->u.parray, &pvarDest->u.parray);
3258 WARN(
"Invalid/unsupported type %d\n", pvarSrc->vt);
3268 PROPVARIANT *rgvars)
3272 TRACE(
"(%u, %p)\n", cVariants, rgvars);
3277 for(
i = 0;
i < cVariants;
i++)
HRESULT WINAPI CoReleaseMarshalData(IStream *pStream)
interface IStorage * LPSTORAGE
static HRESULT WINAPI EnumOLEVERB_Skip(IEnumOLEVERB *iface, ULONG celt)
static IDropTarget * get_droptarget_pointer(HWND hwnd)
HRESULT WINAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew)
HRESULT WINAPI CoUnmarshalInterface(IStream *pStream, REFIID riid, LPVOID *ppv)
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
void OLEClipbrd_UnInitialize(void)
static HRESULT WINAPI DropTargetWrapper_Drop(IDropTarget *iface, IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect)
BOOL WINAPI DllDebugObjectRPCHook(BOOL b, void *dummy)
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
BSTR WINAPI PropSysAllocString(LPCOLESTR str)
static HRESULT create_stream_from_map(HANDLE map, IStream **stream)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
const GUID IID_IViewObject
HRESULT WINAPI GetHGlobalFromStream(IStream *pstm, HGLOBAL *phglobal)
struct tagTrackerWindowInfo TrackerWindowInfo
#define HRESULT_FROM_WIN32(x)
HRESULT WINAPI WriteFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
static const WCHAR prop_olemenuW[]
HRESULT WINAPI OleInitializeWOW(DWORD x, DWORD y)
HRESULT WINAPI SetConvertStg(IStorage *storage, BOOL convert)
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define ERROR_NO_MORE_ITEMS
static BOOL OLEMenu_UnInstallHooks(DWORD tid)
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
const GUID IID_IEnumOLEVERB
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
ACPI_SIZE strlen(const char *String)
HRESULT WINAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define REGDB_E_READREGDB
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define DRAGDROP_E_NOTREGISTERED
HRESULT WINAPI FreePropVariantArray(ULONG cVariants, PROPVARIANT *rgvars)
HRESULT WINAPI PropVariantClear(PROPVARIANT *pvar)
GLdouble GLdouble GLdouble r
GLuint GLuint GLsizei count
TW_UINT32 TW_UINT16 TW_UINT16 MSG
static void OLEUTL_ReadRegistryDWORDValue(HKEY regKey, DWORD *pdwValue)
#define OLEOBJ_E_INVALIDVERB
HRESULT WINAPI DECLSPEC_HOTPATCH OleRun(LPUNKNOWN pUnknown)
HRESULT WINAPI OleQueryLinkFromData(IDataObject *pSrcDataObject)
static LRESULT WINAPI OLEDD_DragTrackerWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
LONG WINAPI RegSetValueW(HKEY hKeyOriginal, LPCWSTR lpSubKey, DWORD dwType, LPCWSTR lpData, DWORD cbData)
HRESULT WINAPI OleDestroyMenuDescriptor(HOLEMENU hmenuDescriptor)
HRESULT WINAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew)
static HRESULT create_map_from_stream(IStream *stream, HANDLE *map)
#define INVALID_HANDLE_VALUE
HRESULT GetData([in, unique] FORMATETC *pformatetcIn, [out] STGMEDIUM *pmedium)
DWORD WINAPI GetLastError(VOID)
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
GLint GLint GLint GLint GLint x
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM *ppstm)
HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget)
const GUID IID_IPersistStorage
#define REGDB_E_KEYMISSING
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
_Check_return_ unsigned long __cdecl wcstoul(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
static HRESULT WINAPI DropTargetWrapper_DragLeave(IDropTarget *iface)
static HRESULT WINAPI DropTargetWrapper_QueryInterface(IDropTarget *iface, REFIID riid, void **ppvObject)
static IRunnableObject * runnable
BOOL WINAPI IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg, WORD *lpwCmd)
static EnumOLEVERB * impl_from_IEnumOLEVERB(IEnumOLEVERB *iface)
HOLEMENU WINAPI OleCreateMenuDescriptor(HMENU hmenuCombined, LPOLEMENUGROUPWIDTHS lpMenuWidths)
static void OLEMenu_UnInitialize(void)
BOOL WINAPI DestroyWindow(_In_ HWND)
static const IEnumOLEVERBVtbl EnumOLEVERB_VTable
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
static ULONG WINAPI DropTargetWrapper_AddRef(IDropTarget *iface)
static struct oletls * COM_CurrentInfo(void)
HRESULT WINAPI RevokeDragDrop(HWND hwnd)
static OleMenuHookItem * OLEMenu_IsHookInstalled(DWORD tid)
#define DRAGDROP_S_CANCEL
HRESULT WINAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew)
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
void OLEClipbrd_Initialize(void)
static APARTMENT * COM_CurrentApt(void)
static ULONG WINAPI EnumOLEVERB_AddRef(IEnumOLEVERB *iface)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
struct tagCREATESTRUCTA * LPCREATESTRUCTA
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define DUPLICATE_SAME_ACCESS
LONG WINAPI RegCloseKey(HKEY hKey)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
HRESULT WINAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, LPVOID *ppvObj)
static HRESULT WINAPI DropTargetWrapper_DragEnter(IDropTarget *iface, IDataObject *pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect)
#define PROCESS_DUP_HANDLE
HRESULT WINAPI OleTranslateAccelerator(LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg)
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
DWORD WINAPI GetWindowThreadProcessId(HWND, PDWORD)
BSTR WINAPI SysAllocString(LPCOLESTR str)
static HRESULT WINAPI EnumOLEVERB_Reset(IEnumOLEVERB *iface)
int WINAPI CopyAcceleratorTableW(_In_ HACCEL hAccelSrc, _Out_writes_to_opt_(cAccelEntries, return) LPACCEL lpAccelDst, _In_ int cAccelEntries)
BOOL WINAPI DeleteEnhMetaFile(_In_opt_ HENHMETAFILE)
static BOOL OLEMenu_FindMainMenuIndex(HMENU hMainMenu, HMENU hPopupMenu, UINT *pnPos)
HRESULT COM_OpenKeyForCLSID(REFCLSID clsid, LPCWSTR keyname, REGSAM access, HKEY *subkey)
BOOL WINAPI IsWindowUnicode(_In_ HWND)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
DWORD WINAPI GetCurrentThreadId(VOID)
#define DRAGDROP_E_INVALIDHWND
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
const GUID IID_IOleObject
static const WCHAR miscstatusW[]
SHORT WINAPI GetKeyState(_In_ int)
interface IPersistStorage * LPPERSISTSTORAGE
#define DECLSPEC_HOTPATCH
#define GetWindowLongPtrA
static ULONG WINAPI EnumOLEVERB_Release(IEnumOLEVERB *iface)
HRESULT WINAPI PropVariantCopy(PROPVARIANT *pvarDest, const PROPVARIANT *pvarSrc)
static void OLEDD_TrackStateChange(TrackerWindowInfo *trackerInfo)
static BOOL OLEMenu_InstallHooks(DWORD tid)
GLboolean GLboolean GLboolean b
static OleMenuHookItem * hook_list
HRESULT WINAPI OleDraw(IUnknown *pUnk, DWORD dwAspect, HDC hdcDraw, LPCRECT rect)
static LONG OLE_moduleLockCount
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
static LRESULT CALLBACK OLEMenu_GetMsgProc(INT code, WPARAM wParam, LPARAM lParam)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
HRESULT WINAPI CoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases)
#define CreateFileMappingW(a, b, c, d, e, f)
static LRESULT CALLBACK OLEMenu_CallWndProc(INT code, WPARAM wParam, LPARAM lParam)
void WINAPI PropSysFreeString(LPOLESTR str)
HRESULT WINAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj)
HRESULT WINAPI SafeArrayCopy(SAFEARRAY *psa, SAFEARRAY **ppsaOut)
HANDLE WINAPI GetCurrentProcess(VOID)
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
#define swprintf(buf, format,...)
struct tagOleMenuDescriptor OleMenuDescriptor
static void OLEDD_Initialize(void)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
#define REGDB_E_WRITEREGDB
HRESULT WINAPI OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained)
SIZE_T NTAPI VirtualQuery(IN LPCVOID lpAddress, OUT PMEMORY_BASIC_INFORMATION lpBuffer, IN SIZE_T dwLength)
#define DRAGDROP_S_USEDEFAULTCURSORS
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
BOOL WINAPI OleIsRunning(LPOLEOBJECT object)
static ULONG WINAPI DropTargetWrapper_Release(IDropTarget *iface)
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
#define STG_E_INVALIDPARAMETER
_Check_return_ BOOL WINAPI GetKeyboardState(_Out_writes_(256) PBYTE lpKeyState)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
static const WCHAR prop_marshalleddroptarget[]
#define DISP_E_BADVARTYPE
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
HRESULT WINAPI OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL bVisible)
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
static IDropTarget * WrapDropTarget(HWND hwnd)
#define InterlockedDecrement
#define DRAGDROP_E_ALREADYREGISTERED
HRESULT WINAPI OleRegGetMiscStatus(REFCLSID clsid, DWORD dwAspect, DWORD *pdwStatus)
#define memcpy(s1, s2, n)
DWORD WINAPI OleBuildVersion(void)
REFIID LPVOID * ppvObject
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
static void drag_end(TrackerWindowInfo *info)
const GUID IID_IRunnableObject
BOOL WINAPI UnhookWindowsHookEx(_In_ HHOOK)
static HRESULT EnumOLEVERB_Construct(HKEY hkeyVerb, ULONG index, IEnumOLEVERB **ppenum)
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
static const WCHAR emptyW[]
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
static const WCHAR OLEDD_DRAGTRACKERCLASS[]
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
IDropTarget IDropTarget_iface
HWND WINAPI GetParent(_In_ HWND)
_CRTIMP int __cdecl stat(const char *_Filename, struct stat *_Stat)
HRESULT WINAPI WriteClassStg(IStorage *pStg, REFCLSID rclsid)
HWND WINAPI SetCapture(_In_ HWND hWnd)
HANDLE WINAPI OpenProcess(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwProcessId)
LRESULT WINAPI CallNextHookEx(_In_opt_ HHOOK, _In_ int, _In_ WPARAM, _In_ LPARAM)
#define REGDB_E_CLASSNOTREG
static IEnumOLEVERB EnumOLEVERB
int WINAPI lstrlenA(LPCSTR lpString)
#define InterlockedIncrement
HRESULT WINAPI OleSetMenuDescriptor(HOLEMENU hOleMenu, HWND hwndFrame, HWND hwndActiveObject, LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEACTIVEOBJECT lpActiveObject)
static void OLE_FreeClipDataArray(ULONG count, CLIPDATA *pClipDataArray)
static BOOL OLEMenu_SetIsServerMenu(HMENU hmenu, OleMenuDescriptor *pOleMenuDescriptor)
HRESULT WINAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
static HANDLE get_droptarget_local_handle(HWND hwnd)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
struct tagCWPSTRUCT * LPCWPSTRUCT
static HRESULT WINAPI EnumOLEVERB_Clone(IEnumOLEVERB *iface, IEnumOLEVERB **ppenum)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HRESULT QueryGetData([in, unique] FORMATETC *pformatetc)
LSTATUS open_classes_key(HKEY hkey, const WCHAR *name, REGSAM access, HKEY *retkey)
HRESULT WINAPI DoDragDrop(IDataObject *pDataObject, IDropSource *pDropSource, DWORD dwOKEffect, DWORD *pdwEffect)
static HRESULT WINAPI EnumOLEVERB_Next(IEnumOLEVERB *iface, ULONG celt, LPOLEVERB rgelt, ULONG *pceltFetched)
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
static const WCHAR prop_oledroptarget[]
static HRESULT get_target_from_wrapper(IDropTarget *wrapper, IDropTarget **target)
GLint GLint GLint GLint GLint GLint y
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
HWND WINAPI WindowFromPoint(_In_ POINT)
static const IDropTargetVtbl DropTargetWrapperVTbl
static HRESULT give_feedback(TrackerWindowInfo *info)
static DropTargetWrapper * impl_from_IDropTarget(IDropTarget *iface)
BOOL WINAPI ReleaseCapture(void)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HHOOK WINAPI SetWindowsHookExW(_In_ int, _In_ HOOKPROC, _In_opt_ HINSTANCE, _In_ DWORD)
struct tagOleMenuHookItem OleMenuHookItem
static HRESULT WINAPI EnumOLEVERB_QueryInterface(IEnumOLEVERB *iface, REFIID riid, void **ppv)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
BOOL actctx_get_miscstatus(const CLSID *clsid, DWORD aspect, DWORD *status)
static HRESULT WINAPI DropTargetWrapper_DragOver(IDropTarget *iface, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect)
BOOL WINAPI DeleteMetaFile(_In_ HMETAFILE)
HRESULT WINAPI OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad)
HRESULT WINAPI OleRegGetUserType(REFCLSID clsid, DWORD form, LPOLESTR *usertype)
#define SetWindowLongPtrW
#define MAKEINTRESOURCEW(i)
static IViewObject viewobject
WINE_DECLARE_DEBUG_CHANNEL(accel)
static void OLEMenu_Initialize(void)
static void drag_enter(TrackerWindowInfo *info, HWND new_target)
#define WS_EX_ACCEPTFILES
HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, DWORD dwDestContext, void *pvDestContext, DWORD mshlFlags)
IDropTarget * curDragTarget
static HANDLE get_droptarget_handle(HWND hwnd)
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
static DWORD OLEDD_GetButtonState(void)
HRESULT WINAPI OleRegEnumVerbs(REFCLSID clsid, LPENUMOLEVERB *ppenum)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
#define DV_E_NOIVIEWOBJECT
#define HeapFree(x, y, z)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define IsEqualIID(riid1, riid2)
WINE_DEFAULT_DEBUG_CHANNEL(ole)
static BOOL is_droptarget(HWND hwnd)
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
HRESULT WINAPI ReadFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT *pcf, LPOLESTR *lplpszUserType)
DWORD WINAPI GetCurrentProcessId(VOID)
static HRESULT PROPVARIANT_ValidateType(VARTYPE vt)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint GLenum GLenum GLenum GLint GLuint GLenum GLenum GLfloat GLenum GLfloat GLenum map