Cuando una aplicación está detrás de otras aplicaciones y hago clic en el icono de la barra de tareas de mi aplicación, espero que toda la aplicación en llegue al principio del orden z, incluso si un cuadro de diálogo de aplicación modal WS_POPUP es abierto.¿Por qué hacer clic en una ventana secundaria no siempre trae la aplicación al primer plano?
Sin embargo, algunas veces, para algunos de los cuadros de diálogo (y otros), solo aparece el cuadro de diálogo; el resto de la aplicación se queda atrás.
He examinado Spy ++ y para las que funcionan correctamente, puedo ver WM_WINDOWPOSCHANGING siendo enviado al elemento primario del diálogo. Para los que abandonan el resto de la aplicación, WM_WINDOWPOSCHANGING no se está enviando al elemento primario del diálogo.
Tengo un ejemplo en el que un diálogo generalmente trae toda la aplicación y el otro no. Tanto el cuadro de diálogo de trabajo como el cuadro de diálogo que no funciona tienen el mismo estilo de ventana, subestilo, principal, propietario, ontogenia.
En resumen, ambas ventanas WS_POPUPWINDOW creadas con DialogBoxParam(), han pasado en HWND idénticos como el tercer argumento.
¿Alguien más ha notado esta rareza de comportamiento en los programas de Windows? ¿Qué mensajes envía TaskBar a la aplicación cuando hago clic en su botón? ¿Quién es la responsabilidad de asegurarse de que todos de las ventanas de la aplicación salgan al primer plano?
En mi caso, el origen de la base es un marco MDI ... ¿eso tiene algún factor?
Gracias por su respuesta! Sin embargo, esta no es la causa del problema con mi aplicación. Como dije en mi pregunta, estoy pasando al propietario en todos los casos. ¿Alguna otra idea? –
¿Tiene una muestra reproducible, por casualidad? –