get_os_window_handleT_get_os_window_handleGetOsWindowHandleGetOsWindowHandle (Operator)

Name

get_os_window_handleT_get_os_window_handleGetOsWindowHandleGetOsWindowHandle — Auslesen der Betriebssystem-Fenster-Handles.

Warnung

Dieser Operator kann nicht in HDevelop-Grafikfenstern verwendet werden, die mit dev_open_window geöffnet wurden.

Signatur

get_os_window_handle( : : WindowHandle : OSWindowHandle, OSDisplayHandle)

Herror T_get_os_window_handle(const Htuple WindowHandle, Htuple* OSWindowHandle, Htuple* OSDisplayHandle)

void GetOsWindowHandle(const HTuple& WindowHandle, HTuple* OSWindowHandle, HTuple* OSDisplayHandle)

void* HWindow::GetOsWindowHandle(void** OSDisplayHandle) const

static void HOperatorSet.GetOsWindowHandle(HTuple windowHandle, out HTuple OSWindowHandle, out HTuple OSDisplayHandle)

IntPtr HWindow.GetOsWindowHandle(out IntPtr OSDisplayHandle)

Beschreibung

get_os_window_handleget_os_window_handleGetOsWindowHandleGetOsWindowHandleGetOsWindowHandle gibt den Betriebssystem-Fenster-Handle des HALCON-Fensters WindowHandleWindowHandleWindowHandleWindowHandlewindowHandle in OSWindowHandleOSWindowHandleOSWindowHandleOSWindowHandleOSWindowHandle zurück. Unter unixartigen Systemen wird zusätzlich in OSDisplayHandleOSDisplayHandleOSDisplayHandleOSDisplayHandleOSDisplayHandle der Betriebssystem-Display-Handle des HALCON-Fensters zurückgeliefert. Dies kann dazu verwendet werden, um mit Betriebssystem-Funktionen auf das Fenster zuzugreifen, um z.B. darin benutzerdefiniert zu zeichnen. Unter Windows kann OSWindowHandleOSWindowHandleOSWindowHandleOSWindowHandleOSWindowHandle in eine Variable vom Typ HWND umgewandelt werden. Unter unixartigen Systemen kann OSWindowHandleOSWindowHandleOSWindowHandleOSWindowHandleOSWindowHandle in eine Variable vom Typ Window umgewandelt werden und OSDisplayHandleOSDisplayHandleOSDisplayHandleOSDisplayHandleOSDisplayHandle in den Typ Display.

Ausführungsinformationen

Parameter

WindowHandleWindowHandleWindowHandleWindowHandlewindowHandle (input_control)  window HWindow, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Fenster-Handle.

OSWindowHandleOSWindowHandleOSWindowHandleOSWindowHandleOSWindowHandle (output_control)  pointer HTupleHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)

Betriebssystem-Fenster-Handle.

OSDisplayHandleOSDisplayHandleOSDisplayHandleOSDisplayHandleOSDisplayHandle (output_control)  pointer HTupleHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)

Betriebssystem-Display-Handle (nur unter unixartigen Systemen).

Beispiel (C)

/* Draw a line into a HALCON window under Unix-like systems using X11 calls. */
#include "HalconC.h"
#include <X11/X.h>
#include <X11/Xlib.h>

int main(int argc, char **argv)
{
  Hlong hwin, win, disp;
  Display *display;
  Window window;
  GC gc;
  XGCValues values;
  static char dashes[] = { 20, 20 };

  open_window(0, 0, 500, 500, 0, "visible", "", &hwin);
  get_os_window_handle(hwin, &win, &disp);
  display = (Display *)disp;
  window = (Window)win;
  gc = XCreateGC(display, window, 0, &values);
  XSetFunction(display, gc, GXset);
  XSetLineAttributes(display, gc, 10, LineOnOffDash, CapRound, JoinRound);
  XSetDashes(display, gc, 0, dashes, 2);
  XSetForeground(display, gc, WhitePixel(display, DefaultScreen(display)));
  XSetBackground(display, gc, BlackPixel(display, DefaultScreen(display)));
  XDrawLine(display, win, gc, 20, 20, 480, 480);
  XFlush(display);
  XFreeGC(display, gc);
  wait_seconds(5);
  return 0;
}

/* Draw a line into a HALCON window under Windows using GDI calls. */
#include "HalconC.h"
#include "windows.h"

int main(int argc, char **argv)
{
  Hlong hwin, win, disp;
  HDC hdc;
  HPEN hpen;
  HPEN *hpen_old;
  LOGBRUSH logbrush;
  POINT point;
  static DWORD dashes[] = { 20, 20 };

  open_window(0, 0, 500, 500, 0, "visible", "", &hwin);
  get_os_window_handle(hwin, &win, &disp);
  logbrush.lbColor = RGB(255,255,255);
  logbrush.lbStyle = BS_SOLID;
  hpen =  ExtCreatePen(PS_USERSTYLE|PS_GEOMETRIC, 10, &logbrush, 2, dashes);
  hdc = GetDC((HWND)win);
  hpen_old = (HPEN *)SelectObject(hdc, hpen);
  MoveToEx(hdc, 20, 20, &point);
  LineTo(hdc, 480, 480);
  DeleteObject(SelectObject(hdc, hpen_old));
  ReleaseDC((HWND)win, hdc);
  wait_seconds(5);
  return 0;
}

Ergebnis

get_os_window_handleget_os_window_handleGetOsWindowHandleGetOsWindowHandleGetOsWindowHandle liefert den Wert 2 (H_MSG_TRUE), falls das Fenster gültig ist. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

open_windowopen_windowOpenWindowOpenWindowOpenWindow

Modul

Foundation