Primero explicaré por qué lo necesito, porque anticipo que la primera respuesta será "¿Por qué lo necesita?". Quiero detectar cuando el cursor del mouse está en un borde de la pantalla y no quiero usar ganchos. Por lo tanto, creé una ventana invisible TOPMOST de un píxel de ancho.¿Cómo mantener mi ventana más alta en la parte superior?
estoy usando C++ en Windows XP, por lo que cuando se crea la ventana (CreateWindowEx (WS_EX_TOPMOST |. WS_EX_TRANSPARENT ...) todo funciona bien
Por desgracia, si un usuario se mueve otra ventana superior, por ejemplo, la barra de tareas por encima de mi ventana, que no entiendo los movimientos del ratón
traté de resolver este modo similar a los enfoques sugeridos en:. How To Keep an MDI Window Always on Top
me trató de comprobar si hay orden Z de mi ventana superior en WM_WINDOWPOSCHANGED primero con
pero pWP-> hwnd apunta a mi ventana y pWP-> hwndInsertAfter es 0, lo que significa que mi ventana está en la parte superior de la Z, aunque esté cubierta con la barra de tareas. Luego probé:
case WM_WINDOWPOSCHANGED :
HWND topWndHndl = GetNextWindow(myHandle, GW_HWNDPREV)
GetWindowText(topWndHndl, pszMem, cTxtLen + 1);
y siempre a conseguir que la ventana "Default IME" está en la parte superior de la ventana. Incluso si tratas de llevar mi ventana a la cima con SetWindowPos() o BringWindowToTop(), "IME predeterminado" permanece en la parte superior. No sé qué es "IME predeterminado" y cómo detectar si la barra de tareas está en la parte superior de mi ventana.
Así que mi pregunta es: ¿Cómo detectar que mi ventana superior ya no es la ventana superior superior y cómo mantenerla en la parte superior?
P.S. Sé que un enfoque de "fuerza bruta" de llevar periódicamente mi ventana a los trabajos principales, es feo y podría tener alguna inferencia no deseada con la ventana de notificaciones, por ejemplo. (Llevar mi ventana a la parte superior ocultará la ventana de notificación.)
¡Gracias por su tiempo y sugerencias!
posible duplicado de [¿Cómo hacer que una ventana permanezca siempre en la parte superior en .Net?] (Http://stackoverflow.com/questions/683330/how-to-make-a-window-always-stay-on- top-in-net) –