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

    VS2012 C++. La GetDlgItem() non funziona più?

    Ho da qualche giorno iniziato ad usare VS2012 per C++. Ho definito un progetto ex-novo con MFC per impratichirmi con l'ambiente.

    Ho provato ad usare la funzione GetDlgItem() che in VC++6.0 usavo spesso e volentieri, ma sto avendo grossi problemi. Anzi un solo problema pare non funzionare. Qualcuno sa darmi qualche dritta a proposito? Devo forse attivare/disattivare qualche flag di ambiente VS2012 per riottenere il funzionamento della suddetta funzione?

    Grazie per tutte le info che riuscirete a fornirmi....






  2. #2
    "Non funziona" come sempre è estremamente generica come descrizione del problema... posta il codice che stai usando, il problema che ottieni (restituisce NULL? restituisce numeri a caso? cosa dice GetLastError()?), eventualmente il codice del dialog che stai usando e di resource.h.

    (comunque, iniziare un progetto ex-novo con le MFC alle porte del 2014 mi fa un po' specie... )
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Se usi le MFC, sai di cosa parlo, bastano questi 4 righi:

    xx = (CEdit *)GetDlgItem ( IDC_STATIC_SPA );
    xx->ShowWindow( false );

    xx = (CEdit *)GetDlgItem ( IDC_EDIT7_INT4 );
    xx->SetWindowText( StrOutput );


    Nel VS2012 la GetDlgItem mi torna un puntatore NULL in entrambi i casi dandomi l'errore sulle 'IDC_STATIC_SPA' e 'IDC_EDIT7_INT4' dicendomi che non sono definiti. Mentre sono controlli definitissimi!!!

    In VC6.0 ho usato a iosa sequenze simili e non ho mai avuto problemi....


    (Perchè ti fa specie iniziare un progetto ex-novo con le MFC alle soglie del 2014????)



  4. #4
    Originariamente inviato da IlViandante2960
    Se usi le MFC, sai di cosa parlo, bastano questi 4 righi:

    xx = (CEdit *)GetDlgItem ( IDC_STATIC_SPA );
    xx->ShowWindow( false );

    xx = (CEdit *)GetDlgItem ( IDC_EDIT7_INT4 );
    xx->SetWindowText( StrOutput );


    Nel VS2012 la GetDlgItem mi torna un puntatore NULL in entrambi i casi dandomi l'errore sulle 'IDC_STATIC_SPA' e 'IDC_EDIT7_INT4' dicendomi che non sono definiti. Mentre sono controlli definitissimi!!!
    Hai incluso "resource.h" o come si chiama il file generato dal resource editor con le define per gli ID delle risorse?
    (Perchè ti fa specie iniziare un progetto ex-novo con le MFC alle soglie del 2014????)
    Perché le MFC erano un framework vagamente accettabile negli anni '90, quando VC++ non supportava metà delle features del C++, attualmente sono abbastanza terribili rispetto alle alternative - macro mastodontiche, message maps, supporto dubbio alle eccezioni, astrazione estremamente ridotta rispetto alle WinAPI (rispetto a cui è una "leaky abstraction"), nessun uso di idiomi "moderni" come MVC, ... basta confrontarla con il .NET Framework (in ambito managed) o le Qt (in ambito unmanaged) per vedere che c'è di molto meglio (e se rimani nell'ambito delle classi Qt guadagni "quasi gratis" la portabilità su Linux e Mac OS X).
    Inoltre, da quanto ne so Microsoft si limita a mantenere le MFC più o meno funzionanti, ma non hanno nessun interesse ad aggiungere grosse funzionalità, visto che ciò su cui stanno spingendo adesso è WinRT e WPF.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Grazie per le info che mi fornisci proverò ad approfondire... Non sviluppo software per diletto, ma per un'azienda che come tale chiede risultati in tempi brevi e certi.

    Non escludo che le metodologie che m'indichi siano più appropriate oggi, ma per essere operativo avrei bisogno di tempo per studiare e sperimentare, cosa piuttosto rara in qesto periodo dove tutti chiedono di essere immediatamente operativi.

    Tornando all'argomento del post si c'è tutto. Anche perchè i files di progetto li genera in automatico VS2012 io mi limito ad aggiungere i controlli....

    Forse fa parte di qualche "novità" di casa Microsoft....



  6. #6
    Originariamente inviato da IlViandante2960
    Tornando all'argomento del post si c'è tutto. Anche perchè i files di progetto li genera in automatico VS2012 io mi limito ad aggiungere i controlli....

    Forse fa parte di qualche "novità" di casa Microsoft....
    Non saprei, l'ultima volta che ho usato le MFC è stato su VC++ 2003, e non mi pare ci fossero cose particolari da fare... se vuoi prova a mettere un link al progetto completo, così quando ho un attimo ci do un'occhiata.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Cercando in rete, ho trovato che pare che sia stato reso più restrittivo l'uso della suddetta funzione. L'alternativa c'è ed è usare le variabili controllo....
    Grazie per la disponibilità...




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.