CIPAdressCtrl



  • ich weß ja selbst net wie ich das machen muss!! ich will nur wissen wie ich die variable auslesen kann, in der die ip gespeichert ist die ich eingegeben hab!! und wie ich diese variable richtig in nem schellexecute befehl eingeben kann. übrigens hab ich meinen programm code nochmal überarbeitet:

    CIPAdressCtrl() 
    { 
        void ClearAddress( ); 
        BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 
        int GetAddress( BYTE& nField0, BYTE& nField1, BYTE& nField2, BYTE& nField3 ); 
        int GetAddress( DWORD& dwAddress ); 
        void SetAddress( BYTE nField0, BYTE nField1, BYTE nField2, BYTE nField3 ); 
        void SetAddress( DWORD dwAddress ); 
        void SetFieldFocus( WORD nField ); 
        void SetFieldRange( int nField, BYTE nLower, BYTE nUpper );
    

    so ich hoffe so is der jetzt richtig und hoffe das ihr mir helfen könnt!!
    mfg desert



  • Hallo,

    noch einmal: es ist alles falsch. Ohne C++ - Kenntnisse wird es schwer, dir das zu erklären, aber ich mache es trotzdem. Füge deinem Dialog eine Variable vom Typ Control hinzu, nenne sie m_IpCtl. Dann rufst du dort, wo du den Inhalt des Steuerelements benötigst, einfach nur GetAddress auf:

    BYTE b1, b2, b3, b4;
    
    m_IpCtl.GetAddress(b1, b2, b3, b4);
    // es geht auch mit ((CIPAddressCtrl*)GetDlgItem(IDC_IPCTL))->GetAddress
    // wenn man nur die Control-ID verwenden will
    

    und schon stehen die Bestandteile der IP in den Variablen b1, b2, b3 und b4. Vom ShellExecute sind wir noch weit entfernt, probiere erst einmal, das hier zum Laufen zu bringen.

    MfG



  • hi!!
    zu meiner verteidigung ich hab schon c++ kenntnisse 🙂 !! aber da ich mich noch nicht viel mit ips beschäftigt habe weiß ich auch nicht so genau wie das geht!!! trotzdem danke für deinen hilfe. aber wird die ip nicht schon den variablen nField0 - nField3 gespeichert?? denn könnte man doch einfach diese variablen benutzen und sie in einem shellexecute einfügen. oder wird die ip in dem dwAdress gespeichert weil das ja auch al int definiert wird und das würde doch eigentlich theoretisch gehen!! ich probier erstmal das so aus wie ich meine wies funktionieren könnte und wenn das wieder nicht funktionier probier ich das nach deiner methode!!!
    thx for hepl and greetz
    desert



  • ok meine variante funktioniert nicht 😃 wie definiere ich denn eine varibale als control? ich kenn nur sowas wie int oder float!! kannst auch schon weiter erklären also ich meine mit code und so!!
    mfg



  • zunächst den Klassenassistenten aufrufen, dann Registerkarte "Member-Variablen" wählen, dann unten die ID des IP-Elements markieren, "Variable hinzufügen", Kategorie "Control" einstellen, Name ergänzen (m_IpCtl), ok klicken, fertig. Dann kann man die Methode GetAddress aufrufen. Wie ich schon geschrieben habe, geht es auch ohne Member-Variable:

    BYTE b1, b2, b3, b4;
    ((CIPAddressCtrl*)GetDlgItem(IDC_IPCTL))->GetAddress(b1, b2, b3, b4);
    

    wenn IDC_IPCTL die ID ist, die auch der Klassenassistent anzeigt.

    MfG



  • das nimmt er zwar an aber er meldet einen syntaxfehler!! er sagt syntaxfehler ")"!! und zwar in der zeile mit dem

    ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS))->GetAddress(b1, b2, b3, b4);
    

    könnte es sein das du klammern flasch gesetzt hast??



  • kann es sein, daß du eine Klammer zu viel oder zu wenig hast? Die Zeile ist jedenfalls korrekt, du mußt das "Umfeld" dieser Zeile prüfen.

    MfG



  • das geht immer noch nicht!! ich hab die zeile aus dem forum kopiert und er meldet jetzt 2 fehler in der letzten hier gezeigten Zeile!!
    error C2143: Syntaxfehler : Fehlendes ')' vor '*'
    error C2059: Syntaxfehler : ')'

    der code ist

    CIPAddressCtrl();
    BYTE b1, b2, b3, b4; 
    ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS))->GetAddress(b1, b2, b3, b4);
    

    wobei der name meines ip feldes CIPAddressCtrl ist und IDC_IPADDRESS im klassenassistenen angezeigt wird!!
    greetz



  • es bringt nichts, CIPAddressCtrl(); davor zu schreiben, es muß ohne das funktionieren.

    MfG



  • dann sagt er das CIPAddressCtrl unerwartet auftaucht!! da muss irgendwie n fehler dabei sein!!!



  • ich geb den code in der cpp datei von dem dialog ein wo ich das ip feld eingefügt hab!!!



  • zeige doch mal die ganze Funktion, in der die Aufrufe stehen (OnButton-Funktion?), dort liegt wahrscheinlich das Problem.

    MfG



  • ne ich hab das nicht inner onbutton funktion sonder eigentlich ganz normal ohne funktion eingegeben!! ich dachte das würde so auch gehen. also hab ich den code ganz einfach an das ende der datei angehängt!!! wahrscheinlich liegt dort das problem!!



  • ja, das habe ich mir gedacht, oder befürchtet. Dann muß ich wieder auf meinen Vorschlag, daß du erst einmal ein C++ - Buch lesen und durcharbeiten solltest, zurückkommen. Man kann doch nicht einfach Code mitten in die Landschaft schreiben, es gibt gewisse Regeln, wie ein C++ - Programm aufgebaut ist, die du scheinbar noch nicht kennst. Es muß ja einen Zeitpunkt geben, wann die IP-Adresse gelesen werden soll, und zu diesem Zeitpunkt muß dann eine Funktion aufgerufen werden. Wenn der Benutzer einen Button anklickt z.B., dann wird eine Funktion aufgerufen, und dort schreibt man hinein, was die Funktion tun soll, in diesem Falle z.B. die von mir angegebenen Zeilen ausführen. Aber ich weiß nicht, ob du damit jetzt etwas anfangen kannst, dir fehlen wahrscheinlich zu viele Grundlagen, also vielleicht einmal nachlesen...

    MfG



  • ich hab ja schon n paar bücher gelesen!! und ich habs jetzt hinbekommen!! ich hab n button eingefügt und dort denn m_CIPAddress.GetAddress(b1,b2,b3,b4) eingegeben und er hat keine fehler gemeldet!!! wie schon gesagt ich hab schon n paar bücher gelsen aber halt noch net so über ips oder besonders über tieferes wissen einfach halt nur die grundlagen!! also erklär weiter!! freu mich schon auf deine antwort!! bevor ichs vergesse, die b variablen hab ich auch definiert als BYTE bevor du sagst das ich das vergessen hab!! 😃
    mfg



  • BYTE b1, b2, b3, b4; 
    ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(b1, b2, b3, b4);
    
    CString ipstring;
    m_IpCtl.GetWindowText(ipstring);
    
    MessageBox(ipstring);
    

    weiterführend:
    m_IpCtl.ClearAddress();
    m_IpCtl.SetFieldFocus(0);



  • hi!!!
    ok danke ich habs jetzt geschafft auch das ich die ip in einen shellexecute befehl einfügen kann!!! ok thx for all the help!!
    mfg


Anmelden zum Antworten