von VC++ 6 zu .NET, Problem beim Wiederherstellen von CEdit Werte
-
Hallo @ all,
ich habe ein riesen Problem und brauche unbedingt eine Lösung, ich hoffe, dass ich hier richtig bin !
folgendes :In einen projekt habe ich 6 Klassen die von einer Klasse abgeleitet sind, diese Klasse überwacht auch die Wertebereiche von eingaben in EDIT Felder.
Ist ein Wert nicht korrekt muss (nach einer Fehlermeldung) der zuletzt eingetragene Wert wieder in das Edit Feld eingetragen werden und das Feld den Fokus erhalten.
So lief es super unter VC6void CFkuTyp::DDV_MinMaxFkuDouble(CDataExchange* pDX, double const& value, double minVal, double maxVal)
{
.....
.....//--- set focus to last control ---------------------------------------
::SetFocus(pDX->m_hWndLastControl);//--- if edit control -------------------------------------------------
if (pDX->m_bEditLastControl)
{
//--- undo last edit ------------------------------------------------
::SendMessage(pDX->m_hWndLastControl, EM_UNDO, 0, 0);//--- set selection to last edit ----------------------------------
::SendMessage(pDX->m_hWndLastControl, EM_SETSEL, 0, -1);
}
//--- end - if edit control -------------------------------------------
}Nun scheitert es beim Kompilieren unter .NET :
FEHLER : hWndLastControl kein Member von CDataExchangeWie kann ich das wieder zum laufen briengen ????
Vielen Dank für eure Hilfe !
Grüße vom Bodensee
Andreas
-
Hallo,
ja, das passiert leicht, wenn man undokumentierte Member aus den MFC verwendet. Die einfachste Lösung besteht wohl darin, wieder ein undokumentiertes Member zu verwenden, nämlich m_idLastControl. Dann kannst du leicht das Programm umschreiben: Mit GetDlgItem kann man diese ID in ein HWND "umwandeln", das wiederum dann für die Funktionen SetFocus und SendMessage eingesetzt werden kann.
MfG
-
Danke Probe-Nutzer !
War ein Volltreffer
Grüße vom Bodensee
Andreas