Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Problem mit GetWindowText

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
26.10.2005, 10:37 Uhr
claudia



Hallo

Unter Windows 2000 konnte ich mit dem Befehl
m_CArtNum.GetWindowText(m_strArtNum);
den Inhalt eines Feldes holen und in der Anwendung weiterverarbeiten. Das besagte Feld ist als DropDown-Combobox definiert.

Unter XP funktioniert das nicht mehr - das Feld m_strArtNum ist immer leer.

Habe beides gegeneinander getestet, konnte jedoch weder im Debug-Modus noch mit Spy++ einen Unterschied feststellen. (ausser das es unter Windows2000 funktioniert - unter XP nicht)

Hat jemand von euch einen Rat, bzw. gibt es eine Alternative zu GetWindowText ????

Gruss Claudia

Dieser Post wurde am 26.10.2005 um 11:00 Uhr von claudia editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.10.2005, 11:13 Uhr
AndyDD



Hallo Claudia,

wo hast Du Deine Combobox erstellt? Ist sie Inhalt eines Dialogfeldes? Dann geht das auch sehr gut über Membervariablen. Du braucht nur der Combobox eine Membervariable zuweisen. Um den Dialog aufzurufen erstellt man ja zunächst eine Instanz der Dialogklasse. Danach kann man auf die Member schon zugreifen (z.B. zum Voreinstellen/Initialisieren). Nachdem das Fenster geschlossen wird geht der Mechanismus auch andersherum.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.10.2005, 11:36 Uhr
claudia



Hallo Andy,

ja - die Combobox ist Inhalt eines Dialogfeldes.

Ich suche nach einer Alternative,da ich es nicht schaffe unter XP den Inhalt des Feldes zu bekommen (obwohl dies unter Windows2000 und NT problemlos funktionierte).

Leider ist diese Anwendung nicht von mir geschrieben - ich habe nur die tolle Aufgabe der Fehlerbehebung und das mit sehr geringen C++ - Kenntnissen.

Hast Du noch einen Tipp ??

Vielen Dank Claudia
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.10.2005, 12:33 Uhr
Panschev



Dann versuche es doch mal mit GetDlgItemText():


C++:
CString strCombo;
GetDlgItemText(ID_DER_COMBOBOX, strCombo)


--
www.coding-help.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.10.2005, 12:42 Uhr
AndyDD



Wird der Dialog aus einer Ressource geladen, d.h.: ist er mit dem Ressourceneditor erstellt worden?
Poste doch vielleicht mal etwas Code. Ich hatte bisher noch nie Probleme damit, arbeite auch unter Win2000 und XP. XP habe ich sowohl als Home- als auch als Professional-Edition. Wundert mich.
Welchen Datentyp hast Du denn für m_strArtNum genau verwendet?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.10.2005, 16:53 Uhr
claudia



Das Feld m_strArtNum ist als cstring definiert.

Das geschilderte Problem tritt nicht auf wenn ein Wert aus der Combobox selektiert wird, sondern nur wenn der Benutzer einen Artikel erfasst und mit TAB weiterspringt.

Unter Win2000 wird der Wert mit GetWindowText korrekt gelesen - unter XP ist das Feld leer.

Hier einige Auzüge aus dem Code:




C++:
void AG_BeSuSummenView::StammSuchen(
        BOOL bListe //
        )
{
    if (!(m_nZlMode == INSERT_MODE || m_bChangedMode == TRUE))
    {
        return;
    }
    m_bFillCombo = TRUE;

    long    lLagNum;
    CString    strBez2, strBez3, strMatchcode,    strStrichcode, strLagBez, strEinheit;
    double  dBestand;

    CWaitCursor wait;
    int         nRetVal = TEQ_ERROR;
    CString     msg;
    long        LCID = m_app->GetLocale();
    int         nindex;

    CString strArtNum = m_strArtNum;

    UpdateData(TRUE);
    moveCommonCtrlToVar();
...

...
void AG_BeSuSummenView::moveCommonCtrlToVar()
{
     char feld1 [20];
    if (m_bMoving == TRUE)
        return;

    m_bMoving = TRUE;


    m_CArtNum.GetWindowText(m_strArtNum);

    m_bMoving = FALSE;


Dieser Post wurde am 27.10.2005 um 16:57 Uhr von claudia editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.10.2005, 08:33 Uhr
AndyDD



So wie das aussieht liegt Deine Combobox im View der Anwendung. Wie initialisierst Du die denn? Welche Flags sind in der Create-Methode gesetzt?
Hast Du schon mal GetText versucht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
28.10.2005, 11:56 Uhr
~claudia
Gast


Habe gettext eingebaut und bekomme jetzt folgende Fehlermeldung

usrmltcb.cpp(161) :error C2039: 'GetText': is not a member of 'AG_UserMultiColumnComboBox'
usrmltcb.h(45) : see declaration of 'AG_UserMultiColumnComboBox'


usrmltcb.h

C++:
class AU_EXPORT AG_UserMultiColumnComboBox : public SUMultiColumnComboBox
{
public:
    AG_UserMultiColumnComboBox();
    virtual ~AG_UserMultiColumnComboBox();

// Attributes
protected:
    AG_AuftrUtilApp*    m_app;
    SBVerwaltung*        m_sbvw;

// Operations
public:
    int                SelectCB(CString strid);
    int                SelectOrSetCB(CString strid, BOOL bEmpty = TRUE);
    void            GetCBData(long &lValue);
    int                SelectCBData(long lValue);
    int                FindCBData(long lValue);
    int             getText(CString& Text);
    void            SetWindowText(CString source, BOOL bFilled = TRUE);
    void            SelectOneIfOnlyOne();
    virtual void    format();


    DECLARE_DYNCREATE(AG_UserMultiColumnComboBox)
// Overrides
    // ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(AG_UserMultiColumnComboBox)
//}}AFX_VIRTUAL

    // Generated message map functions
//{{AFX_MSG(AG_UserMultiColumnComboBox)
//}}AFX_MSG
    DECLARE_MESSAGE_MAP()

};

//{{AFX_INSERT_LOCATION}}
#endif //AU_INC_USRMLTCB_H
////////////////////////////////////////////////////////////




usrmltcb.cpp

C++:
...
int AG_UserMultiColumnComboBox::GetText(
        CString& Text //
        )
{
    CString          m_Text;

    Text = m_Text;
    return TEQ_OK;
}
...



was mach ich denn jetzt schon wieder falsch ???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
28.10.2005, 12:26 Uhr
ao

(Operator)



Zitat:
was mach ich denn jetzt schon wieder falsch ???

GetText einmal mit g und einmal mit G geschrieben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
28.10.2005, 15:57 Uhr
AndyDD



Deine Klasse ist wie es aussieht von SUMultiColumnComboBox abgeleitet. Da das auch keine Standardklasse ist, woher kommt die? Du solltest erst mal rausfinden wie der Vererbungsgraph aussieht. Dann kannst Du Dir Gedanken über Funktionen machen....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: