Newsgroup: it.comp.lang.visual-basic
Titolo: Common Dialog: esiste un modo per posizionarla?

L'Help di VB5 alla voce Common Dialog control afferma:
"There is no way to specify where a dialog box is displayed."
E` proprio vero? Io avrei tanto (ma veramente tanto) bisogno di posizionarla
nel centro dello schermo..... Come si fa? (CCRP a parte...)
Ciao.
Mario

finestra  sempre in primo piano....

Ecco le routine non come allegato ma nel corpo del messaggio...
Scusate, ho fatto male ad allegarle al post la prima volta?!?...
chiedo venia (sinceramente non ci ho pensato... =(  )
DC da casa........
'******************************************************************
Option Explicit
'----- dichiarazione per centrare i common dialog
Type CWPSTRUCT
    lParam As Long
    WParam As Long
    Message As Long
    hwnd As Long
End Type
'Costanti per OnTop
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_SHOWWINDOW = &H40
Public Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA"
(ByVal idhook&, ByVal lpfn&, ByVal hmod&, ByVal dwthreadid&) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As
Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd
As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal
hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long,
ByVal cy As Long, ByVal wFlags As Long) As Long
'
' variabili per PosizionaDLG
Dim PosHook&, PosX&, PosY&
Function PosProc(ByVal nCode&, ByVal WParam&, Inf As CWPSTRUCT) As Long
Dim S As String * 7
    If Inf.Message <> 1 Then Exit Function
    GetClassName Inf.hwnd, S, 7
    If Left(S, 6) = "#32770" Then
        SetWindowPos Inf.hwnd, 0, PosX, PosY, 0, 0, 1
        UnhookWindowsHookEx PosHook
    End If
End Function
Sub PosizionaDLG(X&, Y&)
    PosX = X& ' 200 'Screen.Width / 2
    PosY = Y& '200 'Screen.Height / 2
    PosHook = SetWindowsHookEx(4, AddressOf PosProc, 0, App.ThreadID)
    'Dialog.CommonDialog1.ShowColor
End Sub
Sub OnTop(Controllo As Object, Stato As Boolean)
    If Stato = True Then
        Call SetWindowPos(Controllo.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
    Else
        Call SetWindowPos(Controllo.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
    End If
End Sub

                   Encoding: x-uuencode
  Grazie per il tuo interessamento.... ora sono in ferie ma appena torno proverò le tue routines!!!
Cia e grazie ancora.


Guarda, io ero convinto che gli attachment ai msg potessero essere fatti
solo su it.binari.*
Di seguito le 'istruzioni per l'uso' del Gruppo di coordinamento (è solo una
parte, le trovi su it.news.gruppi)
Comunque il questo caso i file erano arrivati lo stesso (perche??), anche se
io di impulso ti risposto di metterli nel corpo del msg
E comunque grazie per le routine!
Ciao, Piero
----
Il GCN ha pertanto stabilito che non e` possibile inviare file binari
(figure,
.doc Word, .wav, ...) nei gruppi it.*, con l'eccezione dei gruppi
it.binari.* che sono per l'appunto dedicati a tali file. Esiste un robot
che controlla automaticamente quanto viene postato, e cancella i messaggi
che appartengono a una di queste categorie:
- file uuencodati
- file in formato BinHex
- file in formato base64 (un tipico attachment).
Noticina: per default, articoli news superiori al milione di byte vengono
rifiutati dai server. Altri server limitano ancora di piu` la dimensione:
ad esempio 
news.uu.ml.org
 ha come limite 200K. Utente avvisato...
----