Newsgroup: it.comp.programmare.win32
Titolo: [VC++] Minimizzare alla partenza una dialog

E' possibile far partire minimizzata una dialog application
visualizzata con DoModal()?
Ho provato con ShowWindow( SW_MINIMIZE ) nella OnInitDialog() ma non
funziona (la visualizzazione avviene dopo WM_INIT), ho provato anche a
ridefinire DoModal() ma non ce l'ho fatta lo stesso...
Grazie e ciao
MerlinO
Sent via Deja.com 
http://www.deja.com/
Before you buy.

 visualizzata con DoModal()?
Domanda interessante, l'ho fatta anche io in passato. Io non ho ancora
trovato la soluzione, anche se ammetto di non essermi impegnato piu` di
tanto a cercarla.
Il suggerimento piu` promettente che mi hanno dato e` stato quello di
crearla con coordinate negative al difuori dello schermo (specificandole
direttamente nel template o intercettando qualche messaggio intermedio),
ma pare che nemmeno questo funzioni, Windows sposta automaticamente la
dialog all'interno del desktop visibile.
Io per ora mi tengo il "flash" che deriva chiamando ShowWindow( SW_HIDE)
alla prima OnEraseBkgnd(), che e` stata la soluzione "meno peggio" che
ho trovato. :)
---
Bye! Lorenzo Lutti
http://www.geocities.com/SiliconValley/Peaks/6258/

"Lorenzo Lutti" <lorenz...@DOHtiscalinet.it> ha scritto:
| > E' possibile far partire minimizzata una dialog
| > application
| > visualizzata con DoModal()?
|
| Domanda interessante, l'ho fatta anche io in passato. Io non ho ancora
| trovato la soluzione, anche se ammetto di non essermi impegnato piu`
di
| tanto a cercarla.
Io ho trovato una soluzione abbastanza sempilce,  ma non e' possibile
usare la DoModal() perche' non riesci a impedire la visualizzazione
della dialog massimizzata. Bisogna invece usare la Create() nella
InitInstance() dell'applicazione nel seguente modo:
BOOL CTestApp::InitInstance()
{
    m_pDlg = new CTestDlg;
    m_pMainWnd = m_pDlg;
    // finche' pMainWnd non e' nullo l'
app.ne
    // non esce
    m_pDlg->Create( IDD_TEST_DIALOG );
    m_pDlg->ShowWindow( SW_MINIMIZE );
}
bisogna quindi provvedere "a mano" alla distruzione della finestra, per
esempio nella OnCancel(), chiamando la Destroy():
void CDlgTestDlg::OnCancel()
{
    DestroyWindow();
    // CDialog::OnCancel();
}
[...]
| ---
| Bye! Lorenzo Lutti
ciao
MerlinO

dimenticavo... se la creazione avviene correttamente la InitInstance()
deve ritornare TRUE, altrimenti non funziona...
ciao
MerlinO

 m_pDlg->ShowWindow( SW_MINIMIZE );
Idea carina... mi sorprende che il framework te la "lasci passare" senza
lamentarsi o fare cose strane.


"Lorenzo Lutti" <lorenz...@DOHtiscalinet.it> ha scritto:
| > m_pDlg->Create( IDD_TEST_DIALOG );
| > m_pDlg->ShowWindow( SW_MINIMIZE );
|
| Idea carina... mi sorprende che il framework te la "lasci passare"
senza
| lamentarsi o fare cose strane.
perche' dovrebbe? in fondo e' una cosa abbastanza regolare... l'unica
cosa e' che la InitInstance() deve ritornare TRUE (per le dialog
application create col wizard inizialmente ritorna FALSE), altrimenti
esce subito dall'applicazione...
| ---
| Bye! Lorenzo Lutti
| 
http://www.geocities.com/SiliconValley/Peaks/6258/
ciao
MerlinO

 regolare...
In effetti hai ragione, dopotutto anche le modeless usano il ciclo dei
messaggi "principale", quindi l'unica vera differenza fra creare una
modeless o una finestra normale e` che la prima ti permette di inserire
qualche "funzione precotta" in piu`.
