c++ winapi window topmost

c++ - Establecer una ventana para ser superior



winapi window (4)

Estoy tratando de mantener mi ventana encima de todas las demás. Soy nuevo en la programación de C ++ Win32. Esta es mi inicialización de mi ventana en WinMain :

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

Anteriormente trabajé con diálogos, por lo que la propiedad más alta fue realmente fácil de usar. Pero aquí, en una ventana, no sé cómo configurarlo. También quiero poder activarlo. Alguien puede ayudarme?


Use CreateWindowEx con estilo de ventana (extendida) WS_EX_TOPMOST .

Descargo de responsabilidad: son aproximadamente 15 años desde que toqué esas cosas.


ver el parámetro SetWindowPos , hWndInsertAfter . pasar HWND_TOPMOST debe hacer lo que quieras.

Además, es posible que desee aprobar SWP_NOMOVE | SWP_NOSIZE SWP_NOMOVE | SWP_NOSIZE al parámetro uFlags si desea mantener la posición y el tamaño sin cambios.


SetWindowPos(hwnd01, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

Nota: SWP_NOMOVE | SWP_NOSIZE SWP_NOMOVE | SWP_NOSIZE son para ignorar los parámetros 3ro, 4to, 5to, 6to de la función SetWindowPos .

El segundo parámetro puede ser:

  • HWND_BOTTOM

  • HWND_NOTOPMOST (configurar ventana para ser una ventana normal)

  • HWND_TOP

  • HWND_TOPMOST (configurar la ventana para estar siempre en la parte superior)


2 Noitidart porque no puedo comentar directamente

SWP_NOMOVE Mantiene la posición actual (ignora los parámetros X e Y). SWP_NOSIZE Conserva el tamaño actual (ignora los parámetros cx y cy). Si no establece estos indicadores, debe especificar la posición y el tamaño en lugar de pasar 0, 0, 0, 0