2008-09-29 8 views
6

¿Hay alguna forma de cambiar/agregar ventanas Abrir/Guardar cuadro de diálogo común para agregar funcionalidad adicional?Cambiar/Agregar controles a las ventanas Abrir/Guardar cuadro de diálogo común

En el trabajo tenemos un área en un servidor con cientos de 'carpetas de trabajo': carpetas de Windows normales creadas/administradas automáticamente por la aplicación de base de datos para albergar información sobre un trabajo (correos electrónicos/faxes escaneados/Word docs/Spreadsheets/Photos etc.) Las carpetas se nombran por el número del trabajo.

Me gustaría expandir el cuadro de diálogo estándar abrir/guardar con un cuadro combinado que busca carpetas de trabajo basadas en etiquetas de la base de datos, para que lo que hagan mis usuarios puedan encontrar fácilmente la carpeta de trabajo correcta para encontrar/guardar su trabajo

Conectarse a la base de datos y proporcionar la funcionalidad para buscar no es un problema, pero ¿hay alguna manera de agregar un control de cuadro combinado (idealmente con un evento de pulsación de tecla/tecla) al diálogo?

O ¿Crear mi propio cuadro de diálogo y hacer que se llame/use en lugar del estándar? es decir, desde CUALQUIER aplicación, mi cuadro de diálogo se llamaría permitiendo un fácil acceso a las carpetas de trabajo. Si están en perspectiva, pueden encontrar una carpeta de trabajo rápidamente, si están usando el Bloc de notas todavía pueden encontrar la carpeta fácilmente.

Esto significaría una nueva forma unificada de encontrar jobfolders desde cualquier aplicación.

Lo ideal sería que alguien conocer una forma usando VB/VB.net/C#, pero supongo, si es posible, su probablemente va a ser C++.

Respuesta

0

Su programa puede establecer la carpeta de inicio, por lo que si se conoce el número de trabajo (y por lo tanto el nombre de la carpeta), se puede establecer el diálogo para comenzar con la carpeta correcta ya abierto. Más allá de eso, no creo que puedas hacer mucho sin escribir una extensión de shell completa para ello.

5

Como Mark Ransom dijo, puedes hacerlo con OFN   ENABLETEMPLATE y OFN   ENABLEHOOK flags. A continuación, especifica un recurso de diálogo para el miembro de datos lpTemplateName de la estructura OPENFILENAME. Obtener la colocación correcta de sus controles requiere un poco de prueba y error.

El procedimiento de enlace que escriba recibirá mensajes de ventana específicos de ese diálogo - que está particularmente interesado en los mensajes WM_NOTIFY - hay un montón de los especiales (CDN   INITDONE, CDN   FolderChange, etc).

He creado algunas bastante complicadas unas cuantas veces, me gustaría poder incluir una captura de pantalla.

+1

Gracias, esto se ve bien! He configurado ganchos para capturar eventos de mouse y pulsaciones de teclas antes. ¿Podría explicarnos cuáles son los pasos básicos, por ejemplo, ¿Dónde reside mi código? ¿Será un dll en alguna parte? ¿Hay alguna manera de hacerlo usando VisualStudio.Net 2003 o SharpDevelop? Gracias – ajp

Cuestiones relacionadas