Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con MDI Child e Modalita'

Ciao a tutti...
Ho un problema che mi assilla da diverse settimane...
Dunque:
ho realizzato un programma (naturalmente in VB 5.0) che mi permette di
gestire un certo tipo di traffico in rete.
Dato che il programma e' multilingua (ovvero e' possibile vederlo nella
lingua
che si vuole indipendentemente dal paese in cui lo si esegue) ho scritto
delle procedure che simulano in tutto e per tutto i MessageBox di VB.
Vi chiederete voi... perche' realizzare una procedura che simula il comando
MSGBOX...... se questo esiste gia'?
Risposta: perche' se io faccio fare un MsgBox a VB con un programma scritto
in lingua inglese che viene eseguito in italia la MsgBox mi fara' comparire
il mio bel messaggio in inglese ma i pulsanti con le alternative me le da in
lingua Italiana (il che non e' un gran che).
Dov'e' il problema?
Dunque... per simulare i MSGBOX io ho usato delle Form che vengono
richiamate con il metodo Show 1 (FormMessaggio.Show 1) ovvero in modo
''modale''.
Il problema e' che il mio programma e' in grado di monitorare il traffico di
rete e se ce' una qualche condizione mi fa comparire una MsgBox a video, ma
non quella di VB ma quella realizzata da me attivata con il metodo Show 1 e
che mi fa comparirire i pulsanrti nella lingua giusta.
Se mentre io ho gia' sullo schermo una MsgBox aperta (quella fatta da me) il
programma vuole avvisarmi di una certa condizione del traffico di rete
succede il PATATRAK.
Mi viene segnalato sullo schermo che non e' possibile visualizzare un form
modale se ce ne gia' uno aperto.
CAPITPO? non posso visualizzare piu' di un form modale per volta... come
posso
fare?
Non ditemi che devo prima controllare se ce gia' un form aperto in modalita
modale perche' nel mio caso e' una soluzione che non va bene.
Desidererei risolvere il problema nella maniera piu' ''informaticalmente
pulita'' e snella...
Chi puo' darmi una mano?
Ciao e grazie a tutti per la risposta.
Mario Paracchino
mparacchino+AEA-easysoftware.it

 fare?
Io sapevo che non era possibile aprire un form NON modale quando era aperto
un form modale, ma che non si possero aprire 2 form modali ricorsivamente
mi pare nuova!
Oltretutto so che un form MDIChild non puo' essere Modale.
Forse il problema nasce quando apri il form non dalla finestra attualmente modale,
ma da una disattivata dalla presenza di un form modale, ma anche questa mi suana
strana.
Senza contare poi la storia dei tasti "Si","No", "Annulla".... che non vengono tradotti,
in teoria una MsgBox di vb non e' altro che una MsgBox standard di windows.
Prova ad usare questa API, e vedere se ti fa lo stesso scherzo (della lingua).
Public Const MB_ABORTRETRYIGNORE = &H2&
Public Const MB_APPLMODAL = &H0&
Public Const MB_COMPOSITE = &H2         '  use composite chars
Public Const MB_DEFAULT_DESKTOP_ONLY = &H20000
Public Const MB_DEFBUTTON1 = &H0&
Public Const MB_DEFBUTTON2 = &H100&
Public Const MB_DEFBUTTON3 = &H200&
Public Const MB_DEFMASK = &HF00&
Public Const MB_ICONASTERISK = &H40&
Public Const MB_ICONEXCLAMATION = &H30&
Public Const MB_ICONHAND = &H10&
Public Const MB_ICONINFORMATION = MB_ICONASTERISK
Public Const MB_ICONMASK = &HF0&
Public Const MB_ICONQUESTION = &H20&
Public Const MB_ICONSTOP = MB_ICONHAND
Public Const MB_MISCMASK = &HC000&
Public Const MB_MODEMASK = &H3000&
Public Const MB_NOFOCUS = &H8000&
Public Const MB_OK = &H0&
Public Const MB_OKCANCEL = &H1&
Public Const MB_PRECOMPOSED = &H1         '  use precomposed chars
Public Const MB_RETRYCANCEL = &H5&
Public Const MB_SETFOREGROUND = &H10000
Public Const MB_SYSTEMMODAL = &H1000&
Public Const MB_TASKMODAL = &H2000&
Public Const MB_TYPEMASK = &HF&
Public Const MB_USEGLYPHCHARS = &H4         '  use glyph chars, not ctrl chars
Public Const MB_YESNO = &H4&
Public Const MB_YESNOCANCEL = &H3&
Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As
String, ByVal wType As Long) As Long
Function MyMsgBox(Scritta$, Titolo$, Flags As Long) As Long
    MyMsgBox = MessageBox(0, Scritta$, Titolo$, Flags)
End Function
Private Sub Form_Load()
    '
    ' ESEMPIO DI UTILIZZO
    '
    Call MyMsgBox("Ciao Mondo", "Titolo", MB_OK Or MB_ICONEXCLAMATION)
End Sub
Spero di esserti stato utile.
-- 
Hi, Ciao
Ettore                 By -MES-
http://www.aspide.it/freeweb/ilmes
Il sito comune di programmatori VB
http://members.xoom.com/it_lang_vb


