2009-07-27 6 views
1

J'ai hérité d'une très ancienne application que je suis en train de mettre à jour (je sais, nous aurions dû la réécrire en VS 2008, mais nous avons acheté une société, ce qui m'a bloqué avec la relique) . À l'aide de UpdateData (TRUE) pour récupérer les modifications apportées dans les contrôles de boîte de dialogue, rien n'est mis à jour. J'ai un contrôle d'édition, avec une variable entière, et un contrôle d'édition avec une variable de chaîne, assignée en utilisant l'assistant de classe. En appuyant sur le bouton OK, UpdateData (TRUE) est exécuté pour récupérer les nouvelles valeurs du disalog. Je me souviens d'avoir eu un problème similaire lorsque VS C++ 6.0 est sorti pour la première fois, mais je ne l'ai pas utilisé depuis que VS 2003 et C# sont devenus courants.DoDataExchange VC++ 6.0

Merci pour toute aide à l'avance!

Bill

+0

après la méthode DoDateExchange de la classe de boîte de dialogue – peterchen

Répondre

0

Vous aurez besoin de regarder le contenu de la méthode DoDataExchange et de voir ce qu'il fait. Il n'y a pas suffisamment d'informations ici pour dire ce qui pourrait mal tourner à part ça.

1

Vérifiez la méthode DoDataExchange(). Il devrait avoir la logique pour écrire des données ou les lire à partir des contrôles. Si les programmeurs ont utilisé l'implémentation par défaut, il y aura une macro DDX _... pour chaque contrôle en cours de lecture/écriture. Regardez simplement les autres boîtes de dialogue MFC (dans votre code ou google) pour voir comment les commandes DDX doivent être écrites si elles sont manquantes.

Alternativement, si c'est seulement 1 ou 2 valeurs, vous pouvez facilement obtenir le contrôle et le lire directement si cela ne vous dérange pas de faire la validation, etc. Obtenir l'ID du contrôle à partir du concepteur de formulaire et utiliser quelque chose comme suit:

CEditWnd *pWnd = GetDlgItem(ID_THECONTROL); 
CString newValue = pWnd->GetWindowText(); 
...