2009-03-13 14 views

risposta

1

E 'stato un po' che ho usato windows mobile — allora si chiamava ancora pocketpc del 2002, quindi questo potrebbe essere modo fuori moda — ma a quel tempo questo era il comportamento predefinito per cliccando sul X in in alto a destra di un'app. Invece di chiudere, l'app sarebbe stata inviata in background. Lo prendo che è cambiato?

+0

Sono d'accordo. WinCE è diverso dal client o dal server Windows. –

+0

Conosco la proprietà Form.MinimizeBox, che modifica il comportamento del pulsante "Ok" tra "minimizza" e "chiudi". Quello che sto cercando è un modo per minimizzare un modulo tramite codice. –

0

Chiama Nascondi() sul modulo attivo.

+0

Questo non è il comportamento che sto cercando, poiché il modulo diventa invisibile a Windows Mobile. Non vede più l'app. Sto davvero cercando un modo per tornare al "processo precedente" tramite codice. –

+0

Bene WinMo non ha lo stato Riduci a icona per una finestra. Cosa vuoi dire diventa "invisibile"?E quando si nasconde il modulo, l'ultimo modulo mostrato sarà in alto a meno che la schermata Oggi non sia stata anticipata in ordine Z o l'altro processo sia stato terminato. – ctacke

0

sto sviluppando sul WinCE generico (4.2 e 5.0) e quindi non sono sicuro se la mia soluzione funzionerà per il vostro problema di Windows Mobile.

Nel nostro scenario il nostro modulo doveva occupare l'intero schermo (nascondendo anche la barra delle applicazioni), non avere barra del titolo, possibilità di minimizzare attraverso il codice e quando ridotto a icona mostrerebbe l'icona dell'applicazione nella barra delle applicazioni (quindi può essere ripristinato) concentrando l'attenzione sul programma precedente sullo stack dell'applicazione. Non sembra troppo male, ma in pratica non ho potuto soddisfare tutti i requisiti richiesti allo stesso tempo alcuni trucchi.

Come altri hanno pubblicato non c'è Form.Minimize() sul framework compatto.

  • Form.Hide() non mi ha dato modo di ripristinare l'app. P/Invocazione ShowWindow(Form.Handle, 6), dove 6 = SW_MINIMIZE, ridurrebbe l'applicazione alla barra delle applicazioni, ma solo quando Form.FormBorderStyle = Normal (anziché None) tuttavia ciò mostrerebbe la barra del titolo dell'app.
  • Avevo bisogno di impostare Form.WindowState = Normal invece di Massimizzato altrimenti quando l'app è stata ridotta a icona si ripristinerebbe immediatamente.

Alla fine ho messo insieme quanto segue per ottenere ciò che volevo. Ha comportato l'impostazione manuale delle dimensioni dell'applicazione riempiendo lo schermo E con dell'altezza extra in modo da poter inclinare l'applicazione e spostare la barra del titolo dallo schermo visibile.

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); 
    } 

Intercettare l'applicazione di ripristino evento per nascondere la barra delle applicazioni era il modo più complicato e dal momento che l'autore originario non ha menzionato la barra delle applicazioni non voglio andare in esso.

Tutti i metodi di classe NativeMethods statici sono wrapper per istruzioni P/Invoke. Fare riferimento alla sezione coredll in http://www.pinvoke.net per ulteriori informazioni sull'implementazione di questi.

Problemi correlati