⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdkwindow-win32.c

📁 linux下电话本所依赖的一些图形库
💻 C
📖 第 1 页 / 共 5 页
字号:
    /* If asked to show (but not raise) a window that is already   * visible, do nothing.   */  if (!deiconify && !raise && IsWindowVisible (GDK_WINDOW_HWND (window)))    return;  /* Other cases */    if (!GDK_WINDOW_IS_MAPPED (window))    {      gdk_synthesize_window_state (window,				   GDK_WINDOW_STATE_WITHDRAWN,				   0);      focus_on_map = private->focus_on_map;    }  /* Use SetWindowPos to show transparent windows so automatic redraws   * in other windows can be suppressed.   */  if (GetWindowLong (GDK_WINDOW_HWND (window), GWL_EXSTYLE) & WS_EX_TRANSPARENT)    {      UINT flags = SWP_SHOWWINDOW | SWP_NOREDRAW | SWP_NOMOVE | SWP_NOSIZE;      if (!raise)	flags |= SWP_NOZORDER;      if (!raise || GDK_WINDOW_TYPE (window) == GDK_WINDOW_TEMP || !focus_on_map)	flags |= SWP_NOACTIVATE;      SetWindowPos (GDK_WINDOW_HWND (window), HWND_TOP, 0, 0, 0, 0, flags);      return;    }  old_active_window = GetActiveWindow ();  if (private->state & (GDK_WINDOW_STATE_BELOW | GDK_WINDOW_STATE_ABOVE))    {      DWORD exstyle = GetWindowLong (GDK_WINDOW_HWND (window), GWL_EXSTYLE);      if (private->state & GDK_WINDOW_STATE_BELOW)        exstyle &= (~WS_EX_TOPMOST);      if (private->state & GDK_WINDOW_STATE_ABOVE)        exstyle |= WS_EX_TOPMOST;      if (!SetWindowLong (GDK_WINDOW_HWND (window), GWL_EXSTYLE, exstyle))        WIN32_API_FAILED ("SetWindowLong");    }  if (private->state & GDK_WINDOW_STATE_FULLSCREEN)    gdk_window_fullscreen (window);  else if (private->state & GDK_WINDOW_STATE_MAXIMIZED)    ShowWindow (GDK_WINDOW_HWND (window), SW_MAXIMIZE);  else if (private->state & GDK_WINDOW_STATE_ICONIFIED)    ShowWindow (GDK_WINDOW_HWND (window), SW_RESTORE);  else if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TEMP || !focus_on_map)    ShowWindow (GDK_WINDOW_HWND (window), SW_SHOWNOACTIVATE);  else    ShowWindow (GDK_WINDOW_HWND (window), SW_SHOWNORMAL);  if (raise)    {      if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TEMP)        SetWindowPos (GDK_WINDOW_HWND (window), HWND_TOPMOST, 0, 0, 0, 0,	  	    SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);      else if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TOPLEVEL	       || GDK_WINDOW_TYPE (window) == GDK_WINDOW_DIALOG)        SetForegroundWindow (GDK_WINDOW_HWND (window));      else        BringWindowToTop (GDK_WINDOW_HWND (window));    }  else if (old_active_window != GDK_WINDOW_HWND (window))    SetActiveWindow (old_active_window);}voidgdk_window_show_unraised (GdkWindow *window){  g_return_if_fail (GDK_IS_WINDOW (window));    show_window_internal (window, FALSE, FALSE);}voidgdk_window_show (GdkWindow *window){  g_return_if_fail (GDK_IS_WINDOW (window));  show_window_internal (window, TRUE, FALSE);}voidgdk_window_hide (GdkWindow *window){  GdkWindowObject *private;    g_return_if_fail (window != NULL);  private = (GdkWindowObject*) window;  if (private->destroyed)    return;  GDK_NOTE (MISC, g_print ("gdk_window_hide: %p: %s\n",			   GDK_WINDOW_HWND (window),			   _gdk_win32_window_state_to_string (private->state)));    if (GDK_WINDOW_IS_MAPPED (window))    gdk_synthesize_window_state (window,				 0,				 GDK_WINDOW_STATE_WITHDRAWN);    _gdk_window_clear_update_area (window);    if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TOPLEVEL)    ShowOwnedPopups (GDK_WINDOW_HWND (window), FALSE);    if (GetWindowLong (GDK_WINDOW_HWND (window), GWL_EXSTYLE) & WS_EX_TRANSPARENT)    {      SetWindowPos (GDK_WINDOW_HWND (window), HWND_BOTTOM, 0, 0, 0, 0,		    SWP_HIDEWINDOW | SWP_NOREDRAW | SWP_NOZORDER | SWP_NOMOVE | SWP_NOSIZE);    }  else    {      ShowWindow (GDK_WINDOW_HWND (window), SW_HIDE);    }}voidgdk_window_withdraw (GdkWindow *window){  GdkWindowObject *private;    g_return_if_fail (window != NULL);    private = (GdkWindowObject*) window;  if (private->destroyed)    return;  GDK_NOTE (MISC, g_print ("gdk_window_withdraw: %p: %s\n",			   GDK_WINDOW_HWND (window),			   _gdk_win32_window_state_to_string (private->state)));    gdk_window_hide (window);	/* ??? */}voidgdk_window_move (GdkWindow *window,		 gint       x,		 gint       y){  GdkWindowObject *private = (GdkWindowObject *)window;  GdkWindowImplWin32 *impl;  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  if (GDK_WINDOW_DESTROYED (window))    return;  GDK_NOTE (MISC, g_print ("gdk_window_move: %p: +%d+%d\n",			   GDK_WINDOW_HWND (window), x, y));        impl = GDK_WINDOW_IMPL_WIN32 (private->impl);  if (private->state & GDK_WINDOW_STATE_FULLSCREEN)    return;  if (GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD)    _gdk_window_move_resize_child (window, x, y, impl->width, impl->height);  else    {      RECT outer_rect;      get_outer_rect (window, impl->width, impl->height, &outer_rect);            adjust_for_gravity_hints (impl, &outer_rect, &x, &y);      API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), NULL,			       x - _gdk_offset_x, y - _gdk_offset_y, 0, 0,			       SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER));    }}voidgdk_window_resize (GdkWindow *window,		   gint       width,		   gint       height){  GdkWindowObject *private = (GdkWindowObject*) window;  GdkWindowImplWin32 *impl;  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  if (GDK_WINDOW_DESTROYED (window))    return;  if (width < 1)    width = 1;  if (height < 1)    height = 1;  GDK_NOTE (MISC, g_print ("gdk_window_resize: %p: %dx%d\n",			   GDK_WINDOW_HWND (window), width, height));  impl = GDK_WINDOW_IMPL_WIN32 (private->impl);    if (private->state & GDK_WINDOW_STATE_FULLSCREEN)    return;  if (GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD)    _gdk_window_move_resize_child (window, private->x, private->y, width, height);  else    {      RECT outer_rect;      get_outer_rect (window, width, height, &outer_rect);      API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), NULL,			       0, 0,			       outer_rect.right - outer_rect.left,			       outer_rect.bottom - outer_rect.top,			       SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER));      private->resize_count += 1;    }}voidgdk_window_move_resize (GdkWindow *window,			gint       x,			gint       y,			gint       width,			gint       height){  GdkWindowObject *private = (GdkWindowObject*) window;  GdkWindowImplWin32 *impl;  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  if (GDK_WINDOW_DESTROYED (window))    return;  if (width < 1)    width = 1;  if (height < 1)    height = 1;    impl = GDK_WINDOW_IMPL_WIN32 (private->impl);  if (private->state & GDK_WINDOW_STATE_FULLSCREEN)    return;  GDK_NOTE (MISC, g_print ("gdk_window_move_resize: %p: %dx%d@+%d+%d\n",			   GDK_WINDOW_HWND (window),			   width, height, x, y));    if (GDK_WINDOW_TYPE (private) == GDK_WINDOW_CHILD)    _gdk_window_move_resize_child (window, x, y, width, height);  else    {      RECT outer_rect;      get_outer_rect (window, width, height, &outer_rect);      adjust_for_gravity_hints (impl, &outer_rect, &x, &y);      API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), NULL,			       x - _gdk_offset_x, y - _gdk_offset_y,			       outer_rect.right - outer_rect.left,			       outer_rect.bottom - outer_rect.top,			       SWP_NOACTIVATE | SWP_NOZORDER));    }}voidgdk_window_reparent (GdkWindow *window,		     GdkWindow *new_parent,		     gint       x,		     gint       y){  GdkWindowObject *window_private;  GdkWindowObject *parent_private;  GdkWindowObject *old_parent_private;  GdkWindowImplWin32 *impl;  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));  g_return_if_fail (new_parent == NULL || GDK_IS_WINDOW (new_parent));  g_return_if_fail (GDK_WINDOW_TYPE (window) != GDK_WINDOW_ROOT);  if (GDK_WINDOW_DESTROYED (window) ||      (new_parent && GDK_WINDOW_DESTROYED (new_parent)))    {      return;    }  if (!new_parent)    new_parent = _gdk_parent_root;  window_private = (GdkWindowObject*) window;  old_parent_private = (GdkWindowObject *) window_private->parent;  parent_private = (GdkWindowObject*) new_parent;  impl = GDK_WINDOW_IMPL_WIN32 (window_private->impl);  if (!GDK_WINDOW_DESTROYED (window) && !GDK_WINDOW_DESTROYED (new_parent))    {      GDK_NOTE (MISC, g_print ("gdk_window_reparent: %p: %p\n",			       GDK_WINDOW_HWND (window),			       GDK_WINDOW_HWND (new_parent)));      API_CALL (SetParent, (GDK_WINDOW_HWND (window),			    GDK_WINDOW_HWND (new_parent)));      API_CALL (MoveWindow, (GDK_WINDOW_HWND (window),			     x, y, impl->width, impl->height, TRUE));    }  /* From here on, we treat parents of type GDK_WINDOW_FOREIGN like   * the root window   */  if (GDK_WINDOW_TYPE (new_parent) == GDK_WINDOW_FOREIGN)    new_parent = _gdk_parent_root;    window_private->parent = (GdkWindowObject *)new_parent;  if (old_parent_private)    old_parent_private->children =      g_list_remove (old_parent_private->children, window);  parent_private->children = g_list_prepend (parent_private->children, window);  _gdk_window_init_position (GDK_WINDOW (window_private));}void_gdk_windowing_window_clear_area (GdkWindow *window,				  gint       x,				  gint       y,				  gint       width,				  gint       height){  GdkWindowImplWin32 *impl;  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));    impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);  if (!GDK_WINDOW_DESTROYED (window))    {      HDC hdc;      if (width == 0)	width = impl->width - x;      if (height == 0)	height = impl->height - y;      GDK_NOTE (MISC, g_print ("_gdk_windowing_window_clear_area: %p: "			       "%dx%d@+%d+%d\n",			       GDK_WINDOW_HWND (window),			       width, height, x, y));      hdc = GetDC (GDK_WINDOW_HWND (window));      IntersectClipRect (hdc, x, y, x + width + 1, y + height + 1);      SendMessage (GDK_WINDOW_HWND (window), WM_ERASEBKGND, (WPARAM) hdc, 0);      GDI_CALL (ReleaseDC, (GDK_WINDOW_HWND (window), hdc));    }}void_gdk_windowing_window_clear_area_e (GdkWindow *window,				    gint       x,				    gint       y,				    gint       width,				    gint       height){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));    if (!GDK_WINDOW_DESTROYED (window))    {      RECT rect;      GDK_NOTE (MISC, g_print ("_gdk_windowing_window_clear_area_e: %p: "			       "%dx%d@+%d+%d\n",			       GDK_WINDOW_HWND (window),			       width, height, x, y));      rect.left = x;      rect.right = x + width + 1;      rect.top = y;      rect.bottom = y + height + 1;      GDI_CALL (InvalidateRect, (GDK_WINDOW_HWND (window), &rect, TRUE));      UpdateWindow (GDK_WINDOW_HWND (window));    }}voidgdk_window_raise (GdkWindow *window){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));    if (!GDK_WINDOW_DESTROYED (window))    {      GDK_NOTE (MISC, g_print ("gdk_window_raise: %p\n",			       GDK_WINDOW_HWND (window)));      API_CALL (BringWindowToTop, (GDK_WINDOW_HWND (window)));    }}voidgdk_window_lower (GdkWindow *window){  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));    if (!GDK_WINDOW_DESTROYED (window))    {      GDK_NOTE (MISC, g_print ("gdk_window_lower: %p\n",			       GDK_WINDOW_HWND (window)));      API_CALL (SetWindowPos, (GDK_WINDOW_HWND (window), HWND_BOTTOM, 0, 0, 0, 0,			       SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE));    }}voidgdk_window_set_hints (GdkWindow *window,		      gint       x,		      gint       y,		      gint       min_width,		      gint       min_height,		      gint       max_width,		      gint       max_height,		      gint       flags){  /* Note that this function is obsolete */  GdkWindowImplWin32 *impl;  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));    if (GDK_WINDOW_DESTROYED (window))    return;    impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);  GDK_NOTE (MISC, g_print ("gdk_window_set_hints: %p: %dx%d..%dx%d @+%d+%d\n",			   GDK_WINDOW_HWND (window),			   min_width, min_height, max_width, max_height,			   x, y));  if (flags)    {      GdkGeometry geom;      gint geom_mask = 0;      geom.min_width  = min_width;      geom.min_height = min_height;      geom.max_width  = max_width;      geom.max_height = max_height;      if (flags & GDK_HINT_MIN_SIZE)        geom_mask |= GDK_HINT_MIN_SIZE;      if (flags & GDK_HINT_MAX_SIZE)        geom_mask |= GDK_HINT_MAX_SIZE;      gdk_window_set_geometry_hints (window, &geom, geom_mask);    }}void gdk_window_set_geometry_hints (GdkWindow      *window,			       GdkGeometry    *geometry,			       GdkWindowHints  geom_mask){  GdkWindowImplWin32 *impl;#if 0  WINDOWPLACEMENT size_hints;  RECT rect;  gint new_width = 0, new_height = 0;#endif  g_return_if_fail (window != NULL);  g_return_if_fail (GDK_IS_WINDOW (window));    if (GDK_WINDOW_DESTROYED (window))    return;  GDK_NOTE (MISC, g_print ("gdk_window_set_geometry_hints: %p\n",			   GDK_WINDOW_HWND (window)));  impl = GDK_WINDOW_IMPL_WIN32 (GDK_WINDOW_OBJECT (window)->impl);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -