Domanda

Sto sviluppando un'applicazione per PocketPC. All'avvio dell'applicazione viene chiamata la funzione personalizzata SetScreenOrientation (270) che ruota lo schermo. Quando l'applicazione viene chiusa, viene chiamata la funzione SetScreenOrientation (0) che ripristina l'orientamento dello schermo.

In questo modo l'orientamento dello schermo non viene ripristinato se l'utente minimizza l'applicazione e questo non è accettabile.

Qualcuno sa dove (in quali gestori di eventi) dovrebbe essere chiamato SetScreenOrientation (int angolo) per impostare l'orientamento dello schermo all'avvio dell'applicazione, ripristinare l'orientamento su minimizza, impostare l'orientamento su massimizzare e ripristinare l'orientamento su chiusura?

In realtà non so quale gestore di eventi gestisce l'evento Riduci a icona e Ingrandisci.

È stato utile?

Soluzione

Il messaggio corretto è WM_SIZE , ma la risposta di Daemin punta a l'argomento della guida WM_SIZE errato. Controlla il wParam. Fai attenzione perché la tua finestra può essere ingrandita ma nascosta.

Altri suggerimenti

A partire dalla mia esperienza con Windows CE, dovresti gestire WM_SIZE o WM_WINDOWPOSCHANGED . Se stai lavorando su PocketPC ti suggerirei di dare prima un'occhiata al messaggio WM_WINDOWPOSCHANGED perché non sono sicuro che WM_SIZE abbia i parametri giusti di cui hai bisogno.

Dalla struttura WINDOWPOS del messaggio WM_WINDOWPOSCHa membro flag, in particolare SWP_SHOWWINDOW e SWP_HIDEWINDOW.


La versione specifica dei messaggi che devi guardare varia in base al sistema operativo che stai utilizzando. Il sistema operativo Pocket PC è basato su Windows CE 3.0 (e versioni precedenti), mentre Windows Mobile è ora basato su Windows CE 5.0 (anche Windows Mobile 6), ma è stato creato anche su Windows CE 4. (Fonte)

Quindi cerca nella sezione pertinente in MSDN il sistema operativo per cui stai scrivendo.

Non so come si chiamino questi nel mondo C ++, ma in .NET Compact Framework l'evento Resize del tuo modulo di applicazione verrebbe chiamato quando minimizzi / ingrandisci una finestra, e quindi nel codice evento verifichi WindowState proprietà del modulo per vedere se è minimizzato o mazimized.

Modificare lo stato del tuo PDA dall'interno della tua applicazione è rischioso (anche se ci sono molti buoni motivi per farlo), perché se l'app si arresta in modo anomalo lascerà il PDA in qualunque stato si trovasse. Ho fatto un molte app di tipo kiosk (a schermo intero) in Windows Mobile e uno dei trucchi per farlo in modo efficace è nascondere la barra del titolo WM (la riga superiore con il pulsante di avvio di Windows) per evitare che lampeggi per una divisione secondo ogni volta che apri un nuovo modulo. Se l'app si arresta in modo anomalo, la barra di Windows rimane invisibile fino a quando non ripristini il dispositivo, il che non va bene. Almeno con la rotazione dello schermo l'utente può ripristinarlo manualmente.

Dipende molto dalla piattaforma, ma andrei con WM_WINDOWPOSCHANGED o OnShow. Non è wm_size .. Quello non è sempre lanciato su tutte le piattaforme. Casio non lancia l'evento dimensione quando ti aspetteresti. TDS e Symbol's lo fanno.

Anche se MSDN è un'ottima fonte di informazioni, ricorda che non tutti i sistemi operativi sono uguali. Nel mondo PPC il fornitore dell'hardware può creare il proprio sistema operativo e talvolta le cose mancanti o ignorare di proposito le cose.

Ho una piattaforma qui (nome nascosto per proteggere ... beh io) che ha i pulsanti sinistro e destro .. Quando li premi, ti aspetteresti di essere in grado di catturare VK_LEFT, VK_RIGHT .. Tu ' mi sbaglio. In realtà ottieni ';' o ':'. Com'è per un calcio nei pantaloni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top