2009-03-13 7 views

Respuesta

1

Ha sido un tiempo desde que he usado Windows Mobile — aquel entonces todavía se llamaba PocketPC 2002, por lo que este puede ser manera fuera de fecha — pero en ese momento era el comportamiento predeterminado para hacer clic en el X en la parte superior derecha de una aplicación. En lugar de cerrar, la aplicación recibiría el fondo. Supongo que eso ha cambiado.

+0

Estoy de acuerdo. WinCE es diferente del cliente o servidor de Windows. –

+0

Conozco la propiedad Form.MinimizeBox, que cambia el comportamiento del botón "Aceptar" entre "minimizar" y "cerrar". Lo que estoy buscando es una forma de minimizar un formulario por código. –

0

Llamar Ocultar() en su formulario activo.

+0

Ese no es el comportamiento que estoy buscando, ya que la forma se vuelve invisible para Windows Mobile. Ya no ve la aplicación. Realmente estoy buscando una forma de volver al "proceso anterior" por código. –

+0

Well WinMo no tiene el estado Minimizar para una ventana. ¿Qué quieres decir con que se convierte en "invisible"?Y cuando oculta su formulario, el último formulario que se muestra estará en la parte superior a menos que la pantalla Hoy se haya adelantado en orden Z o el otro proceso haya finalizado. – ctacke

0

estoy desarrollando en la mueca de dolor genérica (4.2 y 5.0) así que no estoy seguro de si mi solución funcionará para su problema de Windows Mobile.

En nuestro caso, nuestro formulario debe ocupar toda la pantalla (incluida la ocultación de la barra de tareas), no tiene barra de título, permite minimizar mediante código y minimiza el icono de la aplicación en la barra de tareas (para que pueda ser restaurado) dando enfoque al programa anterior en la pila de aplicaciones. No suena tan mal pero en la práctica no pude cumplir todos los requisitos al mismo tiempo, requirió algún truco.

Como otros han publicado, no hay Form.Minimize() en el marco compacto.

  • Form.Hide() no me dieron forma de restaurar la aplicación. P/Invocar ShowWindow(Form.Handle, 6), donde 6 = SW_MINIMIZE, minimizaría la aplicación a la barra de tareas pero solo cuando Form.FormBorderStyle = Normal (en lugar de Ninguno), sin embargo, esto mostraría la barra de título de la aplicación.
  • Necesitaba configurar Form.WindowState = Normal en lugar de Maximized; de lo contrario, cuando se minimizara la aplicación, se restablecería inmediatamente.

Al final armé lo siguiente para obtener lo que quería. Implicaba establecer manualmente el tamaño de la aplicación llenando la pantalla Y con una altura adicional para poder sesgar la aplicación y mover la barra de título fuera de la pantalla visible.

public class MyForm 
{ 
    public MyForm() 
    { 
    InitializeComponent(); 

    NativeMethods.HideTaskbar(); 
    FormBorderStyle = FormBorderStyle.FixedSingle; 
    WindowState = FormWindowState.Normal; 
    Rectangle screenBounds = Screen.PrimaryScreen.Bounds; 
    int taskBarHeight = SystemInformation.MenuHeight; 
    NativeMethods.MoveWindow(Handle, 
           0, -taskBarHeight, 
           screenBounds.Width, screenBounds.Height + taskBarHeight); 
    } 

    public void HandleMinimize() 
    { 
    NativeMethods.ShowTaskBar(); 
    NativeMethods.ShowWindow(Handle, WindowShowStyle.Minimize); 
    } 

La interceptación de la aplicación restaurar evento para ocultar la barra de tareas era mucho más complicado y ya que el autor originario no mencionó la barra de tareas no voy a entrar en ella.

Todos los métodos de clase NativeMethods estáticos son envoltorios para declaraciones de P/Invoke. Consulte la sección general en http://www.pinvoke.net para obtener más información sobre la implementación de estos.

Cuestiones relacionadas