2012-06-19 23 views
9

¿Es habitual utilizar un cuadro de diálogo como Windows principal? Entonces, ¿sin registrar ninguna clase de usuario a través de RegisterClassEx? ¿Puedo hacer todo lo que hago a través de CreateWindow()? ¿Por qué debería crear controles como botones, cajas de edición, etc. a través de CreateWindow() en lugar de crear un cuadro de diálogo y usarlo como ventana principal?¿Diálogo como ventana principal?

También me gustaría saber la diferencia principal entre un cuadro de diálogo y una ventana y por qué utilizar uno el primero en lugar del segundo.

Gracias

+0

Parece un poco confundido ... estas 5 preguntas pueden necesitar respuestas muy largas. Comience a leer http://msdn.microsoft.com/en-us/library/windows/desktop/ms632597(v=vs.85).aspx para obtener una descripción general de Windows y las observaciones de este http://msdn.microsoft .com/en-us/library/windows/desktop/ms645452 (v = vs.85) .aspx para entender qué es un diálogo. –

+0

Respuestas cortas (estoy seguro de que alguien proporcionará una respuesta más extensa): 1) sí, mucho; 2) no necesita registrar las ventanas que usará; 3) no (si con todo quiere decir que no necesitará ningún otro código), sí, si quiere decir que realmente no necesita crear un recurso de diálogo; 4) por lo general, no tiene que hacerlo y, si sucede, por lo general, es porque no conoce el contenido real de una ventana en el momento de la compilación; 5) un diálogo (más o menos) ES una ventana, simplemente modal. –

+0

Mis 2 centavos: si usa Visual Basic, Delphi o .NET, no tendría que preocuparse por cosas de bajo nivel como esas y sería mucho, mucho más productivo. Una ventana se abstrae para ser un contenedor visual rectangular con propiedades. –

Respuesta

4

¿Es habitual utilizar un cuadro de diálogo como Windows principal?

Sí, es bastante común.

¿Entonces sin registrar ninguna clase de usuario a través de RegisterClassEx?

Un cuadro de diálogo es generalmente una clase de ventana predefinida, por lo que generalmente no es necesario registrarse.

También me gustaría saber la diferencia principal entre un cuadro de diálogo y una ventana y por qué usar uno el primero en lugar del segundo.

Bueno, dos grandes diferencias serían que no se puede cambiar el tamaño de un cuadro de diálogo y no tiene botones para minimizar o maximizar (por defecto, pero hay soluciones para esto). Tenga en cuenta el nombre, cuadro de diálogo. En otras palabras, se utilizan para tener un cuadro de diálogo con el usuario (recibir entrada y mostrar mensajes al usuario). En cierto sentido, son como cualquier otra ventana, debajo de CreateWindowxx, etc. se llama, etc. Sin embargo, son ventanas algo predefinidas que se pueden hacer rápidamente y existen limitaciones a lo que se puede hacer con ellas.

Además, un diálogo utiliza un procedimiento de diálogo en lugar de un procedimiento de ventana, que hace algún tipo de procesamiento por defecto para usted, como la inicialización de algunos controles, etc.

+0

El asistente genera automáticamente el código para minimizar un cuadro de diálogo, y no es difícil agregar el tamaño y maximizar: consulte http://stackoverflow.com/a/5739620/5987 –

+0

@MarkRansom: es cierto. Estaba pensando más en la "configuración predeterminada", pero probablemente haya soluciones para casi cualquier cosa, ya que los diálogos son "solo ventanas". –

2

Sí, una aplicación puede basarse en un diálogo. Incluso hay un asistente para eso si estás usando VisualStudio y MFC.

En VS2010, Crear nuevo proyecto> Aplicación MFC. En "Tipo de aplicación", seleccione Dialog Based. Haga clic en el resto del asistente y estará listo para las carreras.

Las aplicaciones basadas en cuadros de diálogo son mucho más sencillas, desde el punto de vista arquitectónico, que otros diseños, como Documento/Vista. Como tal, las cosas simples son mucho más fáciles de "explotar" rápidamente, pero las limitaciones del diseño se hacen evidentes cuando intentas hacer cosas más complejas. Podría terminar replicando gran parte de la arquitectura de Doc/View en su aplicación basada en diálogos para construir una aplicación basada en Dialog de calidad de producción. En ese caso, ¿realmente te salvaste algo?

+0

Es posible que no esté utilizando MFC. –

+0

Punto razonable, editado. –

2

Un diálogo es una especie de ventana al igual que la totalidad de la varios controles como botones son en realidad solo ventanas. Puede pensar en un diálogo como un tipo de ventana con mucha funcionalidad adicional para admitir el tipo de cosas para las que se utilizan los diálogos.

Hay dos tipos de cuadros de diálogo, modal que se muestran y esperan que los use y luego los descarte, y no modal, que muestran pero que no capturan y mantienen el foco de entrada hasta que se descartan.Puede ver estos dos tipos usados ​​en aplicaciones donde se usa un cuadro de diálogo modal para mostrar un error o requiere que el usuario realice alguna configuración y un modo no modal actúa como un tipo de caja de herramientas que se muestra y cuando lo necesita, hace clic para hacer algo y otras veces está usando alguna otra ventana en la aplicación.

Normalmente, un cuadro de diálogo no tiene una barra de menú, sino que tiene todos sus controles visibles o fácilmente accesibles mediante pestañas u otro tipo de presentación. Visual Studio y otros IDEs tienen diseñadores de diálogo para permitir la colocación de varios controles junto con los asistentes para permitir que los controles estén relacionados con las clases y los miembros de la clase.

Lo que trae una gran diferencia entre un diálogo y una ventana. Una ventana es una especie de página vacía y para hacer cosas con la página se requiere más trabajo. Un diálogo tiene herramientas que facilitan el diseño, sin embargo, también está limitado en gran parte por la caja de herramientas.

Si tiene una aplicación que se centra básicamente en permitir que un usuario especifique ciertas configuraciones y luego realice alguna tarea, un diálogo funciona bastante bien. Si tiene algo que requiera una interacción del usuario más complicada, será más necesaria una ventana de aplicación como la base desde la que se administrarán y manipularán todos sus otros diálogos y controles.

Cuestiones relacionadas