2017-06-13 4 views
0

Je travaille avec VS2005 pour cibler un périphérique WinCE, en cours de création d'interface graphique MFC. Je reçois une erreur liée à la ligneErreur de compilateur C++ - RC2108: constante de dialogue numérique attendue

CTEXT IDC_PG,168,183,63,63

disant

my_app.rc (95): erreur RC2108: attendue dialogue numérique constante

Je suis convaincu cette ligne CTEXT est problématique (l'erreur pointe sur la ligne après celle-ci.J'ai déplacé la ligne CTEX du milieu du bloc jusqu'à la fin, j'obtenais une erreur pour la ligne après CTEXT aussi quand il était au milieu) mais j'ai aucune idée de ce qui pourrait être incorrect ici.

Ce bloc complet est de code:

BEGIN 
    LTEXT   "Static",IDC_SEL,337,122,63,61,SS_NOTIFY 
    LTEXT   "Static",IDC_ESC,337,183,62,63,SS_NOTIFY 
    LTEXT   "Static",IDC_RETURN,337,122,63,123,SS_NOTIFY 
    LTEXT   "Static",IDC_RB,337,45,63,61,SS_NOTIFY 
    LTEXT   "Static",IDC_LB,337,0,63,61,SS_NOTIFY 
    LTEXT   "Static",IDC_DN,337,61,63,61,SS_NOTIFY 
    LTEXT   "Static",IDC_UP,337,0,63,61,SS_NOTIFY 
    LTEXT   "Static",IDC_SET,274,183,63,63,SS_NOTIFY 
    LTEXT   "Static",IDC_VYPLN,0,183,211,63,SS_NOTIFY 
    LISTBOX   IDC_LF,1,1,338,182,LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_TABSTOP 
    CTEXT   "Static",IDC_PHOTO,0,0,337,245 
    CTEXT   "Static",IDC_BG,0,0,400,245 
    LTEXT   "Static",IDC_ESC2,202,182,62,63,SS_NOTIFY 
    CTEXT   IDC_PG,168,183,63,63 //PagingWidget 
END 

Merci à l'avance pour faire la lumière sur ce point.

+1

Comment 'IDC_PG' est-il défini et où avez-vous obtenu l'ID' 168'? – Stefan

+0

défini dans l'en-tête - #define IDC_PG 1017 nombre calculé manuellement – dram

+1

Avez-vous essayé de mettre une chaîne en avant? 'CTEXT" test ", IDC_PG, 168,183,63,63'? https://msdn.microsoft.com/en-us/library/windows/desktop/aa380915(v=vs.85).aspx – Stefan

Répondre

1

Votre expliqué votre problème dans cette phrase: « Je ne veux pas faire « statique » que la planification im d'utiliser ce widget pour afficher currentPage »

Les ressources compilées dans votre projet est resource.h, et tous les fichiers * .rc et * rc2 ne peuvent contenir que des données statiques liées à votre application. Tous les éléments de ressource doivent avoir un ID (un UINT comme vu à partir de votre code d'application mais une chaîne pour le système d'exploitation) qui est constant et défini au moment de la compilation.

Si vous devez créer des contrôles dynamiquement, vous devez le faire dans le code. Vous pouvez les gérer en les ayant comme membres de votre classe de dialogue, ou en mémoire dynamique dans un vecteur de pointeurs (CWnd ne peut pas être copié). MFC fournit CObArray qui fournit RAII de base pour CWnd * dynamiquement alloué.

Si vous ressentez le besoin de référencer des rectangles dans votre boîte de dialogue pour placer vos contrôles dynamiques, insérez des contrôles statiques invisibles dans la boîte de dialogue avec l'éditeur. Sinon, si vous connaissez déjà le nombre maximal de widgets dont vous aurez besoin, placez-les comme éléments statiques sur la ressource de boîte de dialogue et affichez/masquez les éléments de la fonction membre OnInitDialog() pour votre boîte de dialogue.

Désolé, pour vous apporter les mauvaises nouvelles ... J'espère que vous avez une bonne sauvegarde.

+0

Très perspicace, merci – dram

+0

@dram: Je n'étais pas sûr de ce que vous voulez vraiment, donc il y a aussi une version plus rose, ci-dessous. –

0

Si, d'autre part, vous voulez seulement pouvoir accéder à un widget à l'exécution, pour changer son contenu, faites un clic droit sur la boîte de dialogue -> Créer une classe, assurez-vous que le type est CDialog. Ensuite, vous pouvez créer des variables pour les contrôles (widgets) en cliquant dessus avec le bouton droit de la souris -> Créer une variable.

La règle de base pour les variables de contrôle est de créer les variables de contrôle pour les contrôles dynamiques qui changeront le contenu pendant la durée de vie de la boîte de dialogue. Pour les boîtes de dialogue plus simples, qui ne font que lire et rassembler les données de l'utilisateur, il est préférable que nous utilisions des variables de type commun qui rempliront automatiquement vos contrôles à l'entrée, et rassembleront les données avec succès.

Suggestions de lecture: https://msdn.microsoft.com/en-us/library/0khz1cy9(v=vs.90).aspx

Espérons que c'est ce que vous voulez faire.Vous devez disposer d'un fichier de ressources de travail pour utiliser les capacités de génération de code de MFC.