¿Cómo implementar ventanas transparentes en un lenguaje sencillo? Funciones API relacionadas: GetWindowLong: obtiene información sobre la ventana especificada; SetWindowLong: cambia los atributos de la ventana especificada; SetLayeredWindowAttributes: establece la transparencia de la ventana en capas: 1. Comando versión 2.DLL GetWindowLong, entero , "user32.dll", "GetWindowLongA". Parámetro hwnd, número entero. Parámetro nlndex, entero 2.Comando DLL SetWindowLong, entero, "SetWindowLongA". Parámetro hwnd, número entero. Parámetro nIndex, número entero. Parámetro dwNewLong, comando entero 3.DLL SetLayeredWindowAttributes, tipo lógico, "SetLayeredWindowAttributes". Parámetro hwnd, número entero. Parámetro crKey, número entero. Parámetros bAlfa, bytes. Parámetro dwFlags, entero SetLayeredWindowAttributes Parámetros: hwnd: identificador de ventana; crKey: valor de color que debe ser transparente; bAlpha: transparencia, el rango de valores es 0 ~ 255, 0 significa completamente transparente, 255 significa completamente opaco; Entre ellos, el parámetro dwFlags puede tomar los siguientes valores: LWA_ALPHA: el parámetro crKey (valor de color) no es válido y el parámetro bAlpha (transparencia) es válido: todos los lugares de la tabla donde el color es crKey son completamente transparentes; y el parámetro bAlpha (transparencia) no es válido LWA_ALPHA | LWA_COLORKEY: Todos los lugares de la tabla cuyo color es crKey son completamente transparentes y la transparencia de otros lugares se determina de acuerdo con el parámetro bAlpha. Decimal en lenguaje simple, #LWA_ALPHA=2, #LWA_COLORKEY=1, bit a bit o (#LWA_ALPHA, #LWA_COLORKEY)=3 Modo de transparencia 1: El color base de la ventana es completamente transparente y el control es completamente opaco. El código fuente es el siguiente... Versión 2. Subrutina creada __ventana de inicio_. Variable local rtn, tipo entero rtn = GetWindowLong (obtener identificador de ventana (), -20) SetWindowLong (obtener identificador de ventana (), -20, bit o (rtn, 524288)) SetLayeredWindowAttributes (obtener identificador de ventana (), color de fondo, 0 , 1) El efecto es el siguiente: la imagen superior es una ventana normal y la imagen inferior es una ventana transparente. Nota: No puede utilizar el color de fondo predeterminado. Método de transparencia dos: la ventana es translúcida. El código fuente es el siguiente. Versión 2. Crear subrutina __ventana de inicio_. Variable local rtn, entero rtn = GetWindowLong (obtener identificador de ventana (), -20) SetWindowLong (obtener identificador de ventana (), -20, bit o (rtn, 524288)) SetLayeredWindowAttributes (obtener identificador de ventana (), color de fondo, 120, 2) El efecto es el siguiente: la imagen de arriba es una ventana normal y la imagen de abajo es una ventana transparente. Nota: No puede utilizar el color de fondo predeterminado. Modo de transparencia 3: el color de fondo de la ventana es completamente transparente y los controles son semitransparentes. El código fuente es el siguiente. Versión 2. Crear subrutina __Ventana de inicio_.
Variable local rtn, entero rtn = GetWindowLong (obtener identificador de ventana (), -20) SetWindowLong (obtener identificador de ventana (), -20, bit o (rtn, 524288)) SetLayeredWindowAttributes (obtener identificador de ventana (), color de fondo, 120, 3) El efecto es el siguiente: la imagen de arriba es una ventana normal y la imagen de abajo es una ventana transparente. Nota: No puede utilizar el color de fondo de ventana predeterminado.