Quiero crear un hilo después de la creación de un cuadro de diálogo en MFC. ¿Hay alguna función que Windows haya proporcionado y se llame automáticamente después de OnInitDialog
para que pueda crear mi hilo dentro de ella?¿Hay alguna función llamada después de la función OnInitDialog en MFC?
Respuesta
Puede simplemente crear su hilo en la función OnInitDialog
. No hay ninguna razón para complicar demasiado las cosas yendo y buscando una función diferente, o dividiendo el código de inicialización en dos partes. (También no es dicha función, porque no hay un mensaje de Windows correspondiente que se envía.)
Si desea obtener su cuadro de diálogo en la pantalla antes se crea el hilo, que sólo puede mostrar manualmente usando el ShowWindow
function. Por ejemplo:
ShowWindow(SW_SHOW);
RedrawWindow();
También ver este mensaje por Raymond Chen: Waiting until the dialog box is displayed before doing something
OnInitDialog()
es la función principal invocada en la inicialización (en respuesta a WM_CREATE
).
¿Por qué no puedes crear tu hilo ahí?
estoy creando dos hilos dentro de la función onintidialog, pero cuando lo ejecuto, el cuadro de diálogo está llegando muy despacio. Así que estoy creando un hilo dentro del ontimer, es decir, después de 5 ms de tiempo cuando se forma el diálogo, el hilo funciona correctamente. así que estaba pensando que, en lugar de crear subprocesos en el temporizador, si hay alguna otra función que llame después de que se crea dialo, entonces puedo poner mi código allí. ¿Existe alguna función? – Suri
¿No se llama 'OnInitDialog' en reacción a' WM_INITDIALOG'? –
He cambiado la prioridad hilo para debajo de lo normal y cuando el hilo se ejecuta por primera vez que establecer el hilo para priorato normal. Esto funciona bien Gracias por su respuesta.
- 1. VS 2008, MFC: agregue OnInitDialog, ¿cómo?
- 2. MFC: función GetCurrentDirectory
- 3. JQuery Slider - Función de llamada después de la diapositiva
- 4. función de llamada después de .load (Jquery)
- 5. Función de llamada Ajax después del éxito
- 6. hay alguna función como string.isnullorempty() en javascript
- 7. puntero después de la llamada a la función
- 8. ¿Hay alguna función de suspensión en flexión?
- 9. ¿Hay alguna forma de silenciar la función 'espera' en Matlab
- 10. Función Haskell para invertir la función llamada
- 11. ¿Hay alguna manera de pasar otro parámetro en la función de devolución de llamada preg_replace_callback?
- 12. Llamada a la función anulada de la función de anulación
- 13. Función de llamada jQuery después de la carga
- 14. JavaScript devolución de llamada después de la función
- 15. ¿Hay alguna función de logaritmo GMP?
- 16. ¿Hay alguna manera de obtener el nombre de la función de llamada dentro del destinatario?
- 17. obtienen llamadas nombre de la función de la función llamada
- 18. llamada de función en la cláusula WHERE
- 19. ¿Hay alguna forma de rastrear una llamada a la función javascript?
- 20. Función de llamada de Javascript después de window.open
- 21. Cómo activarse la función de llamada en php para cada otra llamada a la función
- 22. ¿Hay alguna manera de obtener el nombre de la función dentro de una función de C++?
- 23. función de JavaScript llamada corchete
- 24. llamada función anidada en Python
- 25. Punto y coma después de la función
- 26. Función de llamada en DLL inyectado
- 27. actualizar la página actual después de configurar la función de tiempo de espera llamada
- 28. En IDA Pro, ¿hay alguna manera de marcar una función?
- 29. ¿Hay alguna función de regresión lineal en SQL Server?
- 30. OCaml: ¿Hay alguna función con el tipo 'a ->' que no sea la función de identidad?
Encontré que también necesitaba llamar a 'CenterWindow()' porque llamar a ShowWindow daba como resultado el diálogo en la esquina superior izquierda. – Klox
@klox Hmm, eso no debería ser necesario. Los cuadros de diálogo se centran automáticamente en sus ventanas de propietario. Esto ocurre en una función interna de MFC, '_AfxPostInitDialog', que se ejecuta después de' OnInitDialog'. '_AfxPostInitDialog' realmente llama a' CenterWindow' si la función 'OnInitDialog' no cambia las coordenadas del diálogo. Pero llamarlo explícitamente tampoco hará daño, así que lo que sea que funcione. Solo asegúrese de centrarlo en un lugar razonable, teniendo en cuenta los sistemas de monitores múltiples. Centrarse siempre en la pantalla principal sería una decisión incorrecta. :-) –
No tengo una ventana de propietario (el diálogo es la única ventana), pero su descripción ayuda a explicar el cambio en el comportamiento que estoy viendo. – Klox