Name und Position vom Button ändern!!
-
ShowWindow wird nicht benötigt, wenn WS_VISIBLE gesetzt ist!
-
ich habe hier was gefunden, vielleicht hilft Dir weiter:
1-Button anlegen
CButton neu_button; neu_button.Create( "Button-Name", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rect, this,CButton neu_button);
2-Nachricht vom Button verarbeiten
class CMainWindow : public CFrameWnd { public: CMainWindow(); CButton neu_button; protected: afx_msg void OnPaint(); afx_msg void OnSize( UINT nType, int cx, int cy ); afx_msg void OnNeuButtonClicked(); DECLARE_MESSAGE_MAP() };
#include <afxwin.h> #include „CMainWindow.h“ BEGIN_MESSAGE_MAP(CMainWindow, CFrameWindow) ON_WM_PAINT() ON_WM_SIZE() ON_BN_CLICKED(IDC_BUTTON_START, OnNeuButtonClicked) END_MESSAGE_MAP() CMainWindow::CMainWindow() : :
-
ups, ich habe mich beim letzten Parameter vertippt
CButton neu_button; neu_button.Create( "Button-Name", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rect, this, IDC_neu_button);
-
@Nixet: Schwachsin. In deinem Code sind soooo viele Fehler...
@Pox: Am besten ließt du beim start die Anzahl an Buttons aus und erstellst dann einen Array mit der Größe... und rufst dem enstprechend dann auch die Create Function jeweils auf...
-
Hallo,
Die Anwendung habe ich neu erstellt, danach ging 1. Methode und konnte einen Button erstellen.
@Draverse: Deine Schreibweise ging auch.Dravere schrieb:
Also erstens ist mir ein wenig ein Rätsel was du mit dem Button im Mainframe machen willst, aber ok, ich meine das geht auch.
...Wie macht man das sonst?
(D)Evil schrieb:
Öffne die Datei... geh bis zum 1. [Button] guck dann ob darunter der Name: kommt... wenn nicht brichst de ab und suchst nach dem nächsten [Button] usw...
Einen wietern Button kann ich leider nicht erstellen.
Es geht nur mit dem ersten defenierten Button.
Ich habe's mit xml und tinyxml probiert, aber leider ohne Erfolg... ich kriege das einfach nicht hin. Ich bin echt am verzweifeln.
-
Dann zeig deinen Code... da wird der Fehler sein
-
Pox schrieb:
Hallo,
Die Anwendung habe ich neu erstellt, danach ging 1. Methode und konnte einen Button erstellen.
@Draverse: Deine Schreibweise ging auch.Dravere schrieb:
Also erstens ist mir ein wenig ein Rätsel was du mit dem Button im Mainframe machen willst, aber ok, ich meine das geht auch.
...Wie macht man das sonst?
Es geht nicht darum, dass dies falsch ist. Es geht darum, wo du deine Buttons haben willst. Es kann natürlich schon sein, dass du deine Buttons im Mainframe haben willst. Aber wenn du sie in der View haben willst, dann ist das erstellen im Mainframe natürlich komplett falsch. Und gerade weil du dem Benutzer die Möglichkeit geben willst, selber die Koordinaten und co der Buttons zu definieren, sehe ich das Mainframe irgendwie gar nicht als korrekte Stelle. Denn entweder ist am Ende kein Platz mehr für das View oder das View versteckt die Buttons, da es über ihnen gezeichnet wird. Also es kommt halt eben drauf an, was du am Ende willst.
Pox schrieb:
Einen wietern Button kann ich leider nicht erstellen.
Es geht nur mit dem ersten defenierten Button.
Ich habe's mit xml und tinyxml probiert, aber leider ohne Erfolg... ich kriege das einfach nicht hin. Ich bin echt am verzweifeln.(D)Evil schrieb:
Dann zeig deinen Code... da wird der Fehler sein
Grüssli
-
Meine Antwort kommt jetzt wieder ein bißchen spät, da ich nach einem totalen Absturtz meines PC's alles neu installieren mußte...
XML-Datei:
<Steuerelemente> <Button> <Name> Test </Name> <Position_X> 10 </Position_X> <Position_Y> 20 </Position_Y> <Hoehe> 60 </Hoehe> <Breite> 100 </Breite> </Button> <Button> . . </Steuerelemente>
Um die Attribute eines Eelements (Button) auszulesen habe ich folgendes geschrieben: (Code ohne Errorhandling)
TiXmlElement* root = doc.RotEelement(); //Steuerelemente TiXmlElement* elem; const char button_name; int pos_X, pos_Y, h, b; elem = root->FirstChildElement("Button"); elem->Attribute("Name", &button_name); elem->Attribute("Position_X", &pos_X); elem->Attribute("Position_Y", &pos_Y); elem->Attribute("Heohe", &h); elem->Attribue("Breite", &b);
Um alle Child Elemente durchzulaufen habe ich folgendes geschrieben
for( elem = root->FirstChildElement("Button"); elem; elem = elem->NextSiblingElement("Button") ) { . . }
-
Kennt sich hier keiner mit TinyXml aus, der mir weiter helfen könnte?
Danke im Voraus.Grüsse, Pox
-
Hallo,
mit dem folgendem Code kann ich mittlerweile alle Buttons durchlaufen:
. . TiXmlElement* root = doc.RootElement(); if (strcmp(root->Value(), "Steuerelemente")!=0) { throw runtime_error(string("falsches Wurzel:") + root->Value()); } for (TiXmlElement* button = root->FirstChildElement(); button; button = button->NextSiblingElement() ) { Start_Fenster.push_back(nodeToButton(button)); }
Mein Problem ist, dass ich leider nicht genau weiß, wie ich eine Objectlist aufbauen soll, in denen Referenz auf alle Elemente (Objekte) gesetzt werden sollen. Dann durch die Liste gehen, nach Namen suchen und entsprechende Details setzen.
Danke
-
Hallo,
mit dem folgendem Code kann ich mittlerweile alle Buttons durchlaufen:
. . TiXmlElement* root = doc.RootElement(); if (strcmp(root->Value(), "Steuerelemente")!=0) { throw runtime_error(string("falsches Wurzel:") + root->Value()); } for (TiXmlElement* button = root->FirstChildElement(); button; button = button->NextSiblingElement() ) { Start_Fenster.push_back(nodeToButton(button)); }
Mein Problem ist, dass ich leider nicht genau weiß, wie ich eine Objectlist aufbauen soll, in denen Referenz auf alle Elemente (Objekte) gesetzt werden sollen. Dann durch die Liste gehen, nach Namen suchen und entsprechende Details setzen.
Danke