Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372

    [c++/api MDI Child]

    Una MDI child può avere dei controlli, e fin qui ok, ma può contenere un'altra windows child che a sua volta ha propri controlli????
    Ho realizzato ciò con CreateDialog(...) ma non riesco ad accedere ai controlli di quest'ultima windows child è normale perchè non deve funzionare così o cosa ..???
    Tutto ciò per creare form dai template di risorse anzichè scrive un mucchio di codice per creare i controlli a run time per le MDI child!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [c++/api MDI Child]

    Originariamente inviato da stefanoB
    Una MDI child può avere dei controlli, e fin qui ok, ma può contenere un'altra windows child che a sua volta ha propri controlli????
    Ho realizzato ciò con CreateDialog(...) ma non riesco ad accedere ai controlli di quest'ultima windows child è normale perchè non deve funzionare così o cosa ..???
    Tutto ciò per creare form dai template di risorse anzichè scrive un mucchio di codice per creare i controlli a run time per le MDI child!!
    La butto lì perché non saprei di preciso e dovrei provare: potresti creare una dialog-box da mettere come "child" della finestra MDIchild. La dialog-box deve avere lo stile DS_CONTROL.
    Però ... non so se funziona!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372

    Re: Re: [c++/api MDI Child]

    Originariamente inviato da andbin
    La butto lì perché non saprei di preciso e dovrei provare: potresti creare una dialog-box da mettere come "child" della finestra MDIchild. La dialog-box deve avere lo stile DS_CONTROL.
    Però ... non so se funziona!
    ... avevo fatto un tentativo creando un dialogo con DS_CONTROL, WS_CHILD ... viene visualizzato correttamente (la MDI Child ha i controlli) ma ci sono alcuni problemi:

    1) accedi al controllo (edit) cliccando prima sulla MDI child poi entri in input
    2) non riesco a scrivere/leggere nell'edit
    3) non ho il focus sull'edit
    4) non funziona il tab per navigare

    ... approfondirò ...

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372

    Re: Re: Re: [c++/api MDI Child]

    Originariamente inviato da stefanoB
    ... avevo fatto un tentativo creando un dialogo con DS_CONTROL, WS_CHILD ... viene visualizzato correttamente (la MDI Child ha i controlli) ma ci sono alcuni problemi:
    adesso ho questa struttura: Frame Window->Mdi Client->MDI child window->Dialog Window

    dei 4 sopra citati punti ho risolto solo la navigazione con il tab key sui controlli della dialog nella mdi child, tramite IsDialogMessage nel message loop e con:

    - DIALOGO -
    xStyle WS_CHILD, WS_VISIBILE, DS_CONTROL oppure 0x50000400

    - CONTROLLO -
    xExStyle WS_CONTROLPARENT
    xStyle WS_CHILD, WS_VISIBILE, WS_TABSTOP


    non riesco però:
    - ad accedere direttamente in input nel controllo se non cliccando prima sulla finestra
    - ad avere il focus sul primo controllo della dialog
    - ad evitare che navigando con il tab key tra i controlli della dialog, terminati questi si salti ad altra finestra

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372
    ... niente nessun risultato tutti i tentativi di raggiundere i controlli della dialog scrivendovi e/o leggendovi tramite messaggio sono vani ... come è possibile ????

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372
    adesso riesco:

    - ad avere il focus sul primo controllo della dialog (figlia delle mdi child)
    - a scrivere negli edit via tastiera direttamente senza cliccare prima sulla finestra (e quindi avere il focus direttamente sulla dialog)

    ma ho questo problema: scrivere e leggere nei soli edit tramite funzione api, mentre riesco a cambiare il testo dei pulsanti, o scrivere negli static ... premetto la seguente struttura:

    1) MDIChilProcedure() WM_CREATE --> CreateDialog()

    2) DialogProcedure() WM_INITDIALOG --> SetWindowText(GetDlgItem(hwndDlg, IDC_BTN_RICERCA),Testo);
    SetDlgItemText(hwndDlg, IDC_BTN_RICERCA, Testo);
    SendDlgItemMessage(hwndDlg, IDC_BTN_RICERCA, WM_SETTEXT, 0, (LPARAM)Testo);

    se uso SendDlgItemMessage(hwndDlg, IDC_STC_LVALORE, WM_SETTEXT, 0, (LPARAM)Testo); per scrivere negli static
    o SendDlgItemMessage(hwndDlg, IDC_EDT_VALORE, WM_SETTEXT, 0, (LPARAM)Testo); per scrivere negli edit

    ritornano NULL o FALSE secondo la funzione utilizzata ... PERCHE' NON FUNZIONA??????

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372
    ... perchè non funziona gli edit e gli static della dialog non hanno proprietà che impediscono di scrivervi o di leggervi???

    aiuto ... sono bloccato qualche dritta???

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372
    ... non riesco a risolvere !!!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    372
    per riepilogare e chiarire meglio il problema posto lo spezzone incriminato (una dialgo procedure che tenta di inizializzare i controlli dei quali solo i button sono raggiunti e nessuna risposta con gli edit e static ....)


    BOOL CALLBACK DlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    switch(msg)
    {
    case WM_INITDIALOG:
    {
    //questo non scrive nella edit (testando ritorna FALSE) SendDlgItemMessage(hwndDlg, IDC_EDT1, WM_SETTEXT, 0, (LPARAM)"Prova...");

    //questo funziona cambia il testo del pulsante
    SendDlgItemMessage(hwndDlg, IDC_BTN_RICERCA, WM_SETTEXT, 0, (LPARAM)"Premi!");

    .
    .
    .

    }

    gli edit hanno i soli bit di stile WS_CHILD | WS_VISIBILE | WS_TABSTOP niente che ne impedisca la scrittura che avviene tranquillamente via tastiera ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.