Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Da CWnd a CDialog

    Salve a tutti, mi sono appena registrato!

    Avrei bisogno di aiuto, ho fatto un programmino che si basa sul WindowFromPoint, e mi è venuta l'idea dì implementare una simpatica funzione "Export Window" e la mia idea sarebbe di portare questo elemento CWnd nella classe CDialog, o altrimenti, nel dialogo ho ad esempio già un controllo, quindi cambiare quel controllo con la finestra/controllo catturata dal mouse.

    Spero nel vostro aiuto.

    Saluti

  2. #2
    Spiegati con maggiore chiarezza: non si capisce da dove vengano tutti questi CDialog/CWnd/controlli né cosa debba fare veramente la tua applicazione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Allora, io ho un dialog, mettiamo si chiami proprio dialog (CDialog dialog)e che alla pressione di un tasto si visualizzi:

    codice:
    void CMioDlg::OnButton() 
    {
    	dialog Dlg;
    	Dlg.DoModal();
    }
    poi ho un elemento CWnd contenente un controllo/finestra, quindi adesso come faccio visulizzare questoelemento CWnd nel dialog? Avevo pensato ad una cosa del genere:

    codice:
    void CMioDlg::OnButton() 
    {
    	CWnd *Win = WindowFromPoint(point);
    
    	dialog Dlg;
    	Dlg.m_hWnd = (HWND)Win;
    	Dlg.DoModal();
    }
    ma ovviamente non funziona... spero di essere stato chiaro adesso aspetto i vostri consigli.

    Saluti

  4. #4
    Originariamente inviato da Emulator ®
    poi ho un elemento CWnd contenente un controllo/finestra, quindi adesso come faccio visulizzare questoelemento CWnd nel dialog?
    Se non appartiene già al dialog non puoi, perché si tratta di una finestra appartente ad un'altra applicazione/finestra
    Avevo pensato ad una cosa del genere:

    codice:
    void CMioDlg::OnButton() 
    {
    	CWnd *Win = WindowFromPoint(point);
    
    	dialog Dlg;
    	Dlg.m_hWnd = (HWND)Win;
    	Dlg.DoModal();
    }
    ma ovviamente non funziona...
    Sfido io, questo codice è una bomba ad errori: stai tentando di aggiungere una finestra figlia ad un dialog assegnando il suo handle a CDialog::m_hWnd, il campo di un oggetto CWnd (poi ereditato da CDialog) che rappresenta l'handle della finestra a cui è collegata la classe.
    Saluti
    Ciao, e buon ripasso delle MFC nel particolare e del Platform SDK in generale... :rollo:
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Gazie delle risposte.

    Quindi non c'è modo di fare visualizzare un elemento CWnd in un dialog? neanche se per esempio il dialog contiene già un elemento CWnd e magari cambiarlo?

  6. #6
    Certo che c'è il modo, ma questo CWnd deve essere creato dalla tua applicazione (e non appartenere ad altre).
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Bene allora, supponiamo di avere nel mio dialogo questo elemento:

    codice:
    CWnd Static;
    il cui, è associato con una static nel dialogo, quindi adesso supponiamo di avere un altro elemento:

    codice:
    CWnd *Elemento;
    in cui dentro vi è una finestra presa da un WindowFromPoint o cosaltro.

    Il quesito è, come passo "Elmento" a "Static"?

    Saluti

  8. #8
    Non puoi sostituire ad elementi del tuo Dialog altre finestre, poiché le MFC si basano sugli ID delle risorse del tuo programma per effettuare il dispatch dei messaggi alle corrette procedure evento; al limite puoi cambiare la finestra padre di Elemento per visualizzarlo all'interno del tuo dialog con SetParent, ma solo se Elemento appartiene alla tua applicazione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Grazie MItaly sono riuscito nella mia impresa

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.