PenStyle mit Dialog ändern:



  • Salüt zusammen

    Ich habe ein kniffliges Problem. Ich möchte in einem Dialogfenster den PenStyle(PS_DASH, etc) ändern. Mein vorgehen: Ich habe ein Kombinationsfeld im Dialog eingefügt. Von dem nehme ich den String(zB PS_DASH) und übergebe ihn bis in die Draw Methode, wo ich einen neuen CPen erzeuge und den dann mit SelectStockObject übernehme. Problem ist nur, dass ich diesen
    CString m_Stiftart ="PS_DASH" der CPen nicht so übergeben kann! Wie mache ich das?
    //Bis jetzt:

    CPen *newPen=new CPen(*m_Stiftart,m_Stiftbreite,m_Color);
    pDC->SelectObject(newPen);
    

    //Mir ist klar, dass das mit Cases oder einem enum gienge, aber das geht doch sicher einfacher!?

    MFG, Franky



  • PS_DASH ist ein String? Ich hätte einen UINT vermutet. 😕

    Wenn es ein UINT ist:
    Du kannst mit SetItemData und GetItemData eine Zahl an jeden Eintrag der Combobox hängen.
    Dann holst du dir nur die aktuell gewählte Zeile, liest die Zahl aus und erzeugst den Pen. 🙂



  • Normalerweise ist das auch eine Zahl. Er hat aber den String da stehen und ausgelesen. Diesen will er dann übergeben. Das geht nicht.

    Entweder mit switch/cas e oder so wie estartu_de es gesagt hat. Klingt jedenfalls nicht doof. 😉
    Das kannte ich so auch nicht.



  • Nur, lese ich mit der Combox ja einen CString. Ich habe in der Kombox verschiedene CStrings (PS_DASH,PS_SOLIS...) und frage mich. Wie kann ich diesen String in das entsprechende UINT umwandeln.

    GetItemData:
    Ich habe nicht ganz verstanden wie das gehen soll. Kann ich da jedem String einen UINT zuortnen, und diesen dann in einer eigenen Variabeln abspeichern?

    Thanx Franx



  • Ja.
    Du hast bsp. an der Position 0 den String PS_DASH, was einer 1 entspricht.
    Du sagst einfach:

    m_cListBox.SetItemData(0,PS_DASH);
    

    EDIT: Wenn der Benutzer nun eine Auswahl trifft, dann liest du nicht den String sondern einfach den Wert mit GetItemData().



  • Mit GetCurSel() könnte ich das machen. Stürtzt im Moment zwar noch ab weil die Rückgabe auf NULL zeigt, also nichts zurückkommt, aber das sollte ich dann noch hinkriegen!!!

    Greez, Franky 😋


Anmelden zum Antworten