亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gdkdnd-win32.c

?? linux下電話本所依賴的一些圖形庫
?? C
?? 第 1 頁 / 共 3 頁
字號:
}static HRESULT STDMETHODCALLTYPEidataobject_dunadvise (LPDATAOBJECT This,		       DWORD         dwConnection){  GDK_NOTE (DND, g_print ("idataobject_dunadvise %p\n", This));  return E_FAIL;}static HRESULT STDMETHODCALLTYPEidataobject_enumdadvise (LPDATAOBJECT    This,			 LPENUMSTATDATA *ppenumAdvise){  GDK_NOTE (DND, g_print ("idataobject_enumdadvise %p\n", This));  return E_FAIL;}		static ULONG STDMETHODCALLTYPEienumformatetc_addref (LPENUMFORMATETC This){  enum_formats *en = (enum_formats *) This;  int ref_count = ++en->ref_count;  GDK_NOTE (DND, g_print ("ienumformatetc_addref %p %d\n", This, ref_count));  return ref_count;}static HRESULT STDMETHODCALLTYPEienumformatetc_queryinterface (LPENUMFORMATETC This,			       REFIID          riid,			       LPVOID         *ppvObject){  GDK_NOTE (DND, g_print ("ienumformatetc_queryinterface %p\n", This));  *ppvObject = NULL;  PRINT_GUID (riid);  if (IsEqualGUID (riid, &IID_IUnknown))    {      g_print ("...IUnknown\n");      ienumformatetc_addref (This);      *ppvObject = This;      return S_OK;    }  else if (IsEqualGUID (riid, &IID_IEnumFORMATETC))    {      g_print ("...IEnumFORMATETC\n");      ienumformatetc_addref (This);      *ppvObject = This;      return S_OK;    }  else    {      g_print ("...Huh?\n");      return E_NOINTERFACE;    }}static ULONG STDMETHODCALLTYPEienumformatetc_release (LPENUMFORMATETC This){  enum_formats *en = (enum_formats *) This;  int ref_count = --en->ref_count;  GDK_NOTE (DND, g_print ("ienumformatetc_release %p %d\n", This, ref_count));  if (ref_count == 0)    g_free (This);  return ref_count;}static HRESULT STDMETHODCALLTYPEienumformatetc_next (LPENUMFORMATETC This,		     ULONG	     celt,		     LPFORMATETC     elts,		     ULONG	    *nelt){  enum_formats *en = (enum_formats *) This;  int i, n;  GDK_NOTE (DND, g_print ("ienumformatetc_next %p %d %ld\n", This, en->ix, celt));  n = 0;  for (i = 0; i < celt; i++)    {      if (en->ix >= nformats)	break;      elts[i] = formats[en->ix++];      n++;    }  if (nelt != NULL)    *nelt = n;  if (n == celt)    return S_OK;  else    return S_FALSE;}static HRESULT STDMETHODCALLTYPEienumformatetc_skip (LPENUMFORMATETC This,		     ULONG	     celt){  enum_formats *en = (enum_formats *) This;  GDK_NOTE (DND, g_print ("ienumformatetc_skip %p %d %ld\n", This, en->ix, celt));  en->ix += celt;  return S_OK;}static HRESULT STDMETHODCALLTYPEienumformatetc_reset (LPENUMFORMATETC This){  enum_formats *en = (enum_formats *) This;  GDK_NOTE (DND, g_print ("ienumformatetc_reset %p\n", This));  en->ix = 0;  return S_OK;}static HRESULT STDMETHODCALLTYPEienumformatetc_clone (LPENUMFORMATETC  This,		      LPENUMFORMATETC *ppEnumFormatEtc){  enum_formats *en = (enum_formats *) This;  enum_formats *new;  GDK_NOTE (DND, g_print ("ienumformatetc_clone %p\n", This));  new = enum_formats_new ();  new->ix = en->ix;  *ppEnumFormatEtc = &new->ief;  return S_OK;}static IDropTargetVtbl idt_vtbl = {  idroptarget_queryinterface,  idroptarget_addref,  idroptarget_release,  idroptarget_dragenter,  idroptarget_dragover,  idroptarget_dragleave,  idroptarget_drop};static IDropSourceVtbl ids_vtbl = {  idropsource_queryinterface,  idropsource_addref,  idropsource_release,  idropsource_querycontinuedrag,  idropsource_givefeedback};static IDataObjectVtbl ido_vtbl = {  idataobject_queryinterface,  idataobject_addref,  idataobject_release,  idataobject_getdata,  idataobject_getdatahere,  idataobject_querygetdata,  idataobject_getcanonicalformatetc,  idataobject_setdata,  idataobject_enumformatetc,  idataobject_dadvise,  idataobject_dunadvise,  idataobject_enumdadvise};static IEnumFORMATETCVtbl ief_vtbl = {  ienumformatetc_queryinterface,  ienumformatetc_addref,  ienumformatetc_release,  ienumformatetc_next,  ienumformatetc_skip,  ienumformatetc_reset,  ienumformatetc_clone};static target_drag_context *target_context_new (void){  target_drag_context *result;  result = g_new0 (target_drag_context, 1);  result->idt.lpVtbl = &idt_vtbl;  result->context = gdk_drag_context_new ();  result->context->is_source = FALSE;  GDK_NOTE (DND, g_print ("target_context_new: %p\n", result));  return result;}static source_drag_context *source_context_new (void){  source_drag_context *result;  result = g_new0 (source_drag_context, 1);  result->ids.lpVtbl = &ids_vtbl;  result->context = gdk_drag_context_new ();  result->context->is_source = TRUE;  GDK_NOTE (DND, g_print ("source_context_new: %p\n", result));  return result;}static data_object *data_object_new (void){  data_object *result;  result = g_new0 (data_object, 1);  result->ido.lpVtbl = &ido_vtbl;  result->ref_count = 1;  GDK_NOTE (DND, g_print ("data_object_new: %p\n", result));  return result;}static enum_formats *enum_formats_new (void){  enum_formats *result;  result = g_new0 (enum_formats, 1);  result->ief.lpVtbl = &ief_vtbl;  result->ref_count = 1;  result->ix = 0;  GDK_NOTE (DND, g_print ("enum_formats_new: %p\n", result));  return result;}#endif/* From MS Knowledge Base article Q130698 */static HRESULT resolve_link (HWND     hWnd,	      guchar  *lpszLinkName,	      guchar **lpszPath){  HRESULT hres;  IShellLinkA *pslA = NULL;  IShellLinkW *pslW = NULL;  IPersistFile *ppf = NULL;  /* Assume failure to start with: */  *lpszPath = 0;  /* Call CoCreateInstance to obtain the IShellLink interface   * pointer. This call fails if CoInitialize is not called, so it is   * assumed that CoInitialize has been called.   */  if (G_WIN32_HAVE_WIDECHAR_API ())    hres = CoCreateInstance (&CLSID_ShellLink,			     NULL,			     CLSCTX_INPROC_SERVER,			     &IID_IShellLinkW,			     (LPVOID *)&pslW);  else    hres = CoCreateInstance (&CLSID_ShellLink,			     NULL,			     CLSCTX_INPROC_SERVER,			     &IID_IShellLinkA,			     (LPVOID *)&pslA);  if (SUCCEEDED (hres))   {          /* The IShellLink interface supports the IPersistFile      * interface. Get an interface pointer to it.      */     if (G_WIN32_HAVE_WIDECHAR_API ())       hres = pslW->lpVtbl->QueryInterface (pslW,					    &IID_IPersistFile,					    (LPVOID *) &ppf);     else       hres = pslA->lpVtbl->QueryInterface (pslA,					    &IID_IPersistFile,					    (LPVOID *) &ppf);   }       if (SUCCEEDED (hres))    {      /* Convert the given link name string to wide character string. */      wchar_t *wsz = g_utf8_to_utf16 (lpszLinkName, -1, NULL, NULL, NULL);      /* Load the file. */      hres = ppf->lpVtbl->Load (ppf, wsz, STGM_READ);      g_free (wsz);    }    if (SUCCEEDED (hres))    {      /* Resolve the link by calling the Resolve()       * interface function.       */      if (G_WIN32_HAVE_WIDECHAR_API ())	hres = pslW->lpVtbl->Resolve (pslW, hWnd, SLR_ANY_MATCH | SLR_NO_UI);      else	hres = pslA->lpVtbl->Resolve (pslA, hWnd, SLR_ANY_MATCH | SLR_NO_UI);    }  if (SUCCEEDED (hres))    {      if (G_WIN32_HAVE_WIDECHAR_API ())	{	  wchar_t wtarget[MAX_PATH];	  hres = pslW->lpVtbl->GetPath (pslW, wtarget, MAX_PATH, NULL, 0);	  if (SUCCEEDED (hres))	    *lpszPath = g_utf16_to_utf8 (wtarget, -1, NULL, NULL, NULL);	}      else	{	  guchar cptarget[MAX_PATH];	  hres = pslA->lpVtbl->GetPath (pslA, cptarget, MAX_PATH, NULL, 0);	  if (SUCCEEDED (hres))	    *lpszPath = g_locale_to_utf8 (cptarget, -1, NULL, NULL, NULL);	}    }    if (ppf)    ppf->lpVtbl->Release (ppf);  if (pslW)    pslW->lpVtbl->Release (pslW);  if (pslA)    pslA->lpVtbl->Release (pslA);  return SUCCEEDED (hres);}static GdkFilterReturngdk_dropfiles_filter (GdkXEvent *xev,		      GdkEvent  *event,		      gpointer   data){  GdkDragContext *context;  GdkDragContextPrivateWin32 *private;  GString *result;  MSG *msg = (MSG *) xev;  HANDLE hdrop;  POINT pt;  gint nfiles, i;  guchar *fileName, *linkedFile;    if (msg->message == WM_DROPFILES)    {      GDK_NOTE (DND, g_print ("WM_DROPFILES: %p\n", msg->hwnd));      context = gdk_drag_context_new ();      private = GDK_DRAG_CONTEXT_PRIVATE_DATA (context);      context->protocol = GDK_DRAG_PROTO_WIN32_DROPFILES;      context->is_source = FALSE;      context->source_window = _gdk_parent_root;      g_object_ref (context->source_window);      context->dest_window = event->any.window;      g_object_ref (context->dest_window);      /* WM_DROPFILES drops are always file names */      context->targets =	g_list_append (NULL, GUINT_TO_POINTER (_text_uri_list));      context->actions = GDK_ACTION_COPY;      context->suggested_action = GDK_ACTION_COPY;      current_dest_drag = context;      event->dnd.type = GDK_DROP_START;      event->dnd.context = current_dest_drag;            hdrop = (HANDLE) msg->wParam;      DragQueryPoint (hdrop, &pt);      ClientToScreen (msg->hwnd, &pt);      event->dnd.x_root = pt.x + _gdk_offset_x;      event->dnd.y_root = pt.y + _gdk_offset_y;      event->dnd.time = _gdk_win32_get_next_tick (msg->time);      nfiles = DragQueryFile (hdrop, 0xFFFFFFFF, NULL, 0);      result = g_string_new (NULL);      for (i = 0; i < nfiles; i++)	{	  gchar *uri;	  if (G_WIN32_HAVE_WIDECHAR_API ())	    {	      wchar_t wfn[MAX_PATH];	      DragQueryFileW (hdrop, i, wfn, MAX_PATH);	      fileName = g_utf16_to_utf8 (wfn, -1, NULL, NULL, NULL);	    }	  else	    {	      char cpfn[MAX_PATH];	      DragQueryFileA (hdrop, i, cpfn, MAX_PATH);	      fileName = g_locale_to_utf8 (cpfn, -1, NULL, NULL, NULL);	    }	  /* Resolve shortcuts */	  if (resolve_link (msg->hwnd, fileName, &linkedFile))	    {	      uri = g_filename_to_uri (linkedFile, NULL, NULL);	      g_free (linkedFile);	      if (uri != NULL)		{		  g_string_append (result, uri);		  GDK_NOTE (DND, g_print ("...%s link to %s: %s\n",					  fileName, linkedFile, uri));		  g_free (uri);		}	    }	  else	    {	      uri = g_filename_to_uri (fileName, NULL, NULL);	      if (uri != NULL)		{		  g_string_append (result, uri);		  GDK_NOTE (DND, g_print ("...%s: %s\n", fileName, uri));		  g_free (uri);		}	    }	  g_free (fileName);	  g_string_append (result, "\015\012");	}      _gdk_dropfiles_store (result->str);      g_string_free (result, FALSE);      DragFinish (hdrop);            return GDK_FILTER_TRANSLATE;    }  else    return GDK_FILTER_CONTINUE;}/************************************************************* ************************** Public API *********************** *************************************************************/void_gdk_dnd_init (void){#ifdef OLE2_DND  HRESULT hres;  hres = OleInitialize (NULL);  if (! SUCCEEDED (hres))    g_error ("OleInitialize failed");  nformats = 2;  formats = g_new (FORMATETC, nformats);  formats[0].cfFormat = CF_TEXT;  formats[0].ptd = NULL;  formats[0].dwAspect = DVASPECT_CONTENT;  formats[0].lindex = -1;  formats[0].tymed = TYMED_HGLOBAL;    formats[1].cfFormat = CF_GDIOBJFIRST;  formats[1].ptd = NULL;  formats[1].dwAspect = DVASPECT_CONTENT;  formats[1].lindex = -1;  formats[1].tymed = TYMED_HGLOBAL;#endif}      void_gdk_win32_dnd_exit (void){#ifdef OLE2_DND  OleUninitialize ();#endif}/* Source side */static voidlocal_send_leave (GdkDragContext *context,		  guint32         time){  GdkEvent tmp_event;    if ((current_dest_drag != NULL) &&      (current_dest_drag->protocol == GDK_DRAG_PROTO_LOCAL) &&      (current_dest_drag->source_window == context->source_window))    {      tmp_event.dnd.type = GDK_DRAG_LEAVE;      tmp_event.dnd.window = context->dest_window;      /* Pass ownership of context to the event */      tmp_event.dnd.send_event = FALSE;      tmp_event.dnd.context = current_dest_drag;      tmp_event.dnd.time = GDK_CURRENT_TIME; /* FIXME? */      current_dest_drag = NULL;            gdk_event_put (&tmp_event);    }}static voidlocal_send_enter (GdkDragContext *context,		  guint32         time){  GdkEvent tmp_event;  GdkDragContextPrivateWin32 *private;  GdkDragContext *new_context;  private = GDK_DRAG_CONTEXT_PRIVATE_DATA (context);    if (current_dest_drag != NULL)    {      gdk_drag_context_unref (current_dest_drag);      current_dest_drag = NULL;    }  new_context = gdk_drag_context_new ();  new_context->protocol = GDK_DRAG_PROTO_LOCAL;  new_context->is_source = FALSE;  new_context->source_window = context->source_window;  g_object_ref (new_context->source_window);  new_context->dest_window = context->dest_window;  g_object_ref (new_context->dest_window);  new_context->targets = g_list_copy (context->targets);  gdk_window_set_events (new_context->source_window,			 gdk_window_get_events (new_context->source_window) |			 GDK_PROPERTY_CHANGE_MASK);  new_context->actions = context->actions;  tmp_event.dnd.type = GDK_DRAG_ENTER;  tmp_event.dnd.window = context->dest_window;  tmp_event.dnd.send_event = FALSE;  tmp_event.dnd.context = new_context;  tmp_event.dnd.time = GDK_CURRENT_TIME; /* FIXME? */    current_dest_drag = new_context;    gdk_event_put (&tmp_event);}static voidlocal_send_motion (GdkDragContext *context,		   gint            x_root, 		   gint            y_root,		   GdkDragAction   action,		   guint32         time){  GdkEvent tmp_event;    if ((current_dest_drag != NULL) &&      (current_dest_drag->protocol == GDK_DRAG_PROTO_LOCAL) &&      (current_dest_drag->source_window == context->source_window))    {      tmp_event.dnd.type = GDK_DRAG_MOTION;      tmp_event.dnd.window = current_dest_drag->dest_window;      tmp_event.dnd.send_event = FALSE;      tmp_event.dnd.context = current_dest_drag;      tmp_event.dnd.time = time;      current_dest_drag->suggested_action = action;      current_dest_drag->actions = current_dest_drag->suggested_action;      tmp_event.dnd.x_root = x_root;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久色婷婷小香蕉久久| 欧美变态凌虐bdsm| 精品国一区二区三区| 亚洲人成电影网站色mp4| 韩国成人精品a∨在线观看| 欧美性猛片aaaaaaa做受| 亚洲国产精品t66y| 狠狠色狠狠色综合| 欧美日韩在线不卡| 亚洲视频在线一区二区| 成人激情动漫在线观看| 26uuu国产日韩综合| 亚洲成精国产精品女| 99re成人在线| 中文字幕一区二区三区在线不卡| 精品无码三级在线观看视频| 在线综合视频播放| 五月婷婷色综合| 欧美唯美清纯偷拍| 亚洲国产视频网站| 在线看不卡av| 亚洲美女屁股眼交3| 成人不卡免费av| 国产精品久久久久久久久免费相片| 黄一区二区三区| 久久久久99精品一区| 国产精品综合一区二区| 久久久久久亚洲综合影院红桃| 久久www免费人成看片高清| 4438亚洲最大| 久久国产精品99精品国产| 欧美成人女星排行榜| 精品中文字幕一区二区小辣椒| 日韩你懂的在线播放| 色老头久久综合| 最新日韩在线视频| 色综合天天综合狠狠| 亚洲一区二区成人在线观看| 在线一区二区视频| 天天免费综合色| 欧美成人r级一区二区三区| 精品一区二区av| 日本一区二区视频在线| 成人a免费在线看| 一区二区三区不卡在线观看| 欧美人与z0zoxxxx视频| 国产日韩av一区二区| 成人av电影在线| 一区2区3区在线看| 欧美一二三区在线| 国产福利91精品| 亚洲人吸女人奶水| 欧美日韩在线直播| 国内外精品视频| 亚洲视频一区二区在线观看| 欧美日韩免费一区二区三区视频| 日韩1区2区日韩1区2区| 国产女人水真多18毛片18精品视频| av一区二区三区在线| 五月婷婷欧美视频| 国产欧美一区二区精品忘忧草| 一本色道a无线码一区v| 日产国产高清一区二区三区| 久久婷婷国产综合国色天香| 91香蕉国产在线观看软件| 肉丝袜脚交视频一区二区| 国产无人区一区二区三区| 欧美性一级生活| 成人一区二区三区视频| 亚洲成a人v欧美综合天堂下载| 26uuu精品一区二区| 91福利国产成人精品照片| 精一区二区三区| 亚洲国产中文字幕| 国产精品人人做人人爽人人添| 欧美高清精品3d| av电影在线观看一区| 久久精品久久综合| 亚洲午夜久久久久久久久电影院| 26uuu亚洲婷婷狠狠天堂| 欧美在线一二三| av影院午夜一区| 国产精品一区二区黑丝| 午夜精品福利在线| 亚洲精品美国一| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 蜜乳av一区二区三区| 亚洲精品福利视频网站| 国产精品欧美综合在线| 精品国产成人系列| 欧美一区二区三区四区五区 | 亚洲婷婷在线视频| 亚洲国产精品99久久久久久久久| 7777精品伊人久久久大香线蕉| 99riav久久精品riav| 国产激情一区二区三区| 久久99国产精品免费| 久久成人av少妇免费| 免费一区二区视频| 亚洲1区2区3区4区| 亚洲成a人v欧美综合天堂下载 | 91精品国产色综合久久不卡电影 | 国产精品免费aⅴ片在线观看| 日韩一二在线观看| 91精品国模一区二区三区| 欧美电影在线免费观看| 欧美精品一卡两卡| 9191精品国产综合久久久久久 | 99视频在线观看一区三区| 国产不卡在线视频| 粉嫩13p一区二区三区| 成人av免费在线观看| 成人av在线资源网| 97精品国产露脸对白| 色综合一个色综合| 91福利小视频| 欧美性xxxxx极品少妇| 欧美裸体bbwbbwbbw| 欧美老人xxxx18| 欧美大片在线观看| 久久亚洲免费视频| 国产精品久久福利| 伊人婷婷欧美激情| 亚洲a一区二区| 麻豆国产欧美一区二区三区| 国内精品视频666| 成人开心网精品视频| 色综合欧美在线| 在线综合亚洲欧美在线视频| 日韩欧美成人午夜| 国产喂奶挤奶一区二区三区| 亚洲欧美综合色| 亚洲电影一级黄| 国产在线不卡一卡二卡三卡四卡| 国产成人精品影视| 日本乱人伦aⅴ精品| 欧美区视频在线观看| 日韩欧美你懂的| 国产精品你懂的| 亚洲一区二区三区四区在线免费观看 | 日本最新不卡在线| 国产精品一线二线三线精华| 91色视频在线| 337p亚洲精品色噜噜噜| 国产日韩精品一区二区三区| 亚洲人成网站在线| 蜜臀久久99精品久久久久久9| 国产精品456露脸| 欧美在线观看一区二区| 日韩视频在线观看一区二区| 国产精品网曝门| 日韩高清在线电影| www.日韩av| 精品人在线二区三区| 亚洲视频在线观看一区| 久久国产精品第一页| 91黄视频在线| 久久久精品免费网站| 亚洲成人免费观看| 成人久久视频在线观看| 在线综合视频播放| 一区二区在线观看视频在线观看| 美女看a上一区| 在线观看免费视频综合| 亚洲国产高清aⅴ视频| 日本成人中文字幕| 在线免费观看一区| 欧美精彩视频一区二区三区| 亚洲电影在线免费观看| 97久久超碰精品国产| wwwwww.欧美系列| 天天操天天干天天综合网| 91在线一区二区| 国产日本亚洲高清| 美国毛片一区二区三区| 欧美日本在线看| 亚洲少妇屁股交4| 国产成人综合视频| 精品国产精品网麻豆系列 | 欧美不卡一区二区三区四区| 一区二区三区四区在线播放| 高清国产一区二区| 久久久精品tv| 精品在线一区二区| 日韩欧美123| 免费欧美日韩国产三级电影| 337p亚洲精品色噜噜| 亚洲成年人影院| 欧美日韩国产经典色站一区二区三区 | 欧美激情在线一区二区| 国产在线精品不卡| 久久丝袜美腿综合| 国产一区 二区| 26uuu国产电影一区二区| 久草热8精品视频在线观看| 日韩一区国产二区欧美三区| 调教+趴+乳夹+国产+精品| 制服丝袜国产精品| 日韩av中文字幕一区二区| 日韩一卡二卡三卡四卡|