Estoy escribiendo una DLL del complemento Win32 para una aplicación MFC de un tercero. La DLL necesita mostrar un diálogo modal. Cuando hago esto usando DialogBox()
u otra API simple de Win32 (por ejemplo, traté de escribir mi propio bucle modal), la ventana de la aplicación principal no vuelve a dibujar todos los elementos: vuelve a dibujar los elementos estándar, pero no el área del cliente. Los diálogos sin formas se muestran bien.Aplicación MFC y un cuadro de diálogo modal que no es MFC
Sospecho que esto se debe a que MFC no tiene realmente diálogos modales en el sentido de Win32. Solo puede tener un bucle de mensaje y un bucle separado en DialogBox()
interrumpe su delicada maquinaria. Aquí está a CodeProject article que explica esto. Pero este artículo de CodeProject tiene 9 años, así que tal vez las cosas hayan cambiado desde entonces. ¿Alguien podría arrojar algo de luz sobre esto? La aplicación utiliza MFC 8 (es decir, mfc80.dll
).
Actualización. Aquí hay un enlace al original question; puede contener algo de información adicional.
Actualización 2. Gracias a todos; Realmente aprecio todos los consejos, sin duda me ayuda a tener una idea general de cómo encajan las cosas. La primera ruta que exploraré es usar diálogos nativos de MFC 'modal'. (Como hago todo esto desde Python, usaré enlaces de Python para MFC, pywin32
). Esto tomará algún tiempo; cuando esté listo, actualizaré la publicación con los resultados.
+1 buena pregunta, estaremos interesados en ver la respuesta! –
También vea http://stackoverflow.com/questions/5058929 de la cual esta pregunta es un seguimiento (más o menos). – 0xC0000022L
podría usar Spy ++ (viene con Visual Studio) o alguna otra aplicación similar (una que conozco se puede encontrar en http://www.catch22.net/software/winspy) para averiguar si el área del cliente de la "Consola" "ventana es más que una sola ventana de niño ?! – 0xC0000022L