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