Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Button ohne MFC-Assistent erzeugen

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
22.10.2006, 11:35 Uhr
~Malaika
Gast


Hallo,



Button ohne MFC-Assistent erzeugen

ich habe eine MFC-Anwendung (SDI) mit mehrere Views erstellt und stehe dabei vor meinem ersten Problem.
Ich möchte nähmlich in einem View einen Button ohne MFC_Assistent erzeugen, aber leider ohne Erfolg

Nachdem ich in der Klassendeklaration des Views (CMeinView) ein Attribut für den Button gesetzt habe, habe ich dann im Konstruktor einen Speicherbereich mit "new" erzeugt und die Methode "OnCreate" aufgerufen.

KlassenDefinition:

C++:
class CMeinView : public CFormView
{
....      
protected:
    CButton* m_pButton;

    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
....
}



Konstruktor und Destruktor:

C++:
CMeinView::CeinMView()
    : CFormView(MeinView::IDD)
{
    // TODO: Hier Code zur Konstruktion einfügen
    m_pButton = new CButton;
}
CMeinView::~CMeinView()
{
    delete m_pButton;
}



OnCreate-Methode:

C++:
int CMeinView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CView::OnCreate(lpCreateStruct) == -1)
        return -1;

    m_pButton->Create(_T("Mein Text"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
    CRect(10,10,100,30), this, 1);
}



Debuggen läuft zwar ohne Fehlermeldung, aber es wird leider nichts angezeigt
Kann mir vielleicht jemand hier weiterhelfen?

Gruß, Malaika
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.10.2006, 14:19 Uhr
~testen
Gast


Warum machst du überhaupt nen Pointer? Sinnfrei?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.10.2006, 14:27 Uhr
~Malaika
Gast


daran liegt's nicht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.10.2006, 15:43 Uhr
mmc20
puss in boots


mh... keine ahnung warum das bei dir nicht funktioniert, bei mir gehts, egal ob pointer oder nicht. wird noch etwas anderes auf deine view gezeichnet was den button evtl verdeckt ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.10.2006, 17:29 Uhr
~Malaika
Gast


Es handelt sich bei der Anwendung um einen Splitter und bin gerade dabei das erste Steuerelement (den Button) zu erstellen, aber leider vergeblich. Auf dem View wird nichts was anders gezeichnet, was den Button verdecken könnte.
Ich bin echt am verzweifeln, weil ich nicht weiß, woran es liegt.
Im MainFrame geht's problemlos, aber leider nicht dem View.
Gibt's vielleicht noch eine andere Methode zum Zeichnen und anschlißend zum Anzeigen vom Button?

Gruß,Malaika
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.10.2006, 17:43 Uhr
mmc20
puss in boots


dann schau doch mal ob die "OnDraw(..)" deiner view überhaupt aufgerufen wird


Bearbeitung:
zeig doch mal etwas code wo/wie deine view erstellt wird


Dieser Post wurde am 22.10.2006 um 17:47 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.10.2006, 18:16 Uhr
~Malaika
Gast


BOOL CMainFrame::OnCreateClient(...)
{

bolReturn = this->m_wndSpli.CreateStatic (this, 1, 2);
SIZE size;
size.cx = 300;
size.cy = 300;
bolReturn = bolReturn && this->m_wndSpli.CreateView (0, 0, RUNTIME_CLASS (CMeinView), size, pContext);
bolReturn = bolReturn && this->m_wndSpli.CreateView (0, 1, RUNTIME_CLASS (CRightView), size, pContext);

return bolReturn;
}

reicht das
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.10.2006, 22:26 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Evtl Liegt auch einfach das Steuerelement an einer Stelle die gar nicht gezeichnet wird. Hast du mal den Rückgabewert der Button->Create-Methode geprüft? Evtl gibt der Aufschluss.

Was mir grad auffällt. Geb dem Button mal ein Parent-Window:


C++:
m_pButton = new CButton(this);



Sonst zeichnet er das logischerweise halb unters Menü und halb unter den Hintergrund deiner View aber nicht auf deine View
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.10.2006, 22:44 Uhr
xXx
Devil


@FloSoft ... hmm der übergibt den this pointer bei der Create - Funktion doch als Parent ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.10.2006, 14:16 Uhr
~Malaika
Gast


Ich habe das ganze Projekt neu erstellt und jetzt ist das Problem weg... ich wieß gar nicht woran es gelegen hat.

Jetzt stehe ich vor einem zweiten Problem und zwar, ich würde gerne eine bestimmte Anzahl "n" von Buttons erstellen, die natürlich unterschiedliche Namen und Position haben und suche dafür eine Methode, wie ich dann alle diesen Buttons ablegen und anschließend erstellen kann.
Hat jemand hier eine Idee, wie ich das machen kann?

Danke im Voraus.
Malaika
 
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: