Artery Geschrieben 29. Dezember 2011 Teilen Geschrieben 29. Dezember 2011 Hallo leute, Ich muss für die Schule ein MFC-Projekt machen. (Vorne weg ich bin von MFC kein Stück überzeugt, ganz ehrlich es ist ******e ) Naja jedenfalls, ich scheitere schon allein am Layout meiner Anwendung! Also ich habe das ganze Dialogfeldbasierend gemacht. Ich möchte jetzt mehrere Bitmaps und ein paar Buttons auf dem Fenster anordnen. Nur ich kriege es einfach nicht gebacken, dass sie richtig angeordnet sind. Also z.b. eine Bitmap im Hintergrund, darüber paar Buttons, aber er ordnet alles immer unterschiedlich an (z.b. das eine über dem anderen, wenn ich die transperenz verändere, wieder ganz anders usw.), wenn ich 3 Bitmaps habe sehe ich die dritte (als letztes hinzugefügte) überhaupt nicht! Kann man nicht einfach sagen dieses Objekt soll ganz in den Hintergrund, das dadrüber und das 3te ganz in den Vordergrund? Auch wenn ich das Fenster start, soll er 2 Bitmaps auf 2 Buttons laden, macht es bei einem. Den anderen sehe ich nur wenn ich mit der Maus drüber gehe... Darüber hinaus wenn ich die Größe des Fensters einstellen will, habe ich nur die Möglichkeit gefunden es mit der Maus verschiedenen groß zu ziehen. Habe es so eingestellt das unten 642x482 steht, wenn ich hab eine Bitmap mit z.b. der Breite 642 drauf packe ist sie viel zu klein erst bei 942 passt sie richtig drauf wieso das?? Also ganz ehrlich da war VB tausendmal besser... Ich hoffe ihr könnt mir helfen, weil ich richtig am verzweifeln bin was die Gestaltung angeht... MfG Artery Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 30. Dezember 2011 Teilen Geschrieben 30. Dezember 2011 Kann man nicht einfach sagen dieses Objekt soll ganz in den Hintergrund, das dadrüber und das 3te ganz in den Vordergrund?Mit Format -> Tab Order kannst du die Reihenfolge einstellen. Auch wenn ich das Fenster start, soll er 2 Bitmaps auf 2 Buttons laden, macht es bei einem. Den anderen sehe ich nur wenn ich mit der Maus drüber gehe...Dann hast du wohl etwas falsch gemacht. Da du nicht beschreibst, was du gemacht hast, ist dir hier schwer zu helfen. Habe es so eingestellt das unten 642x482 steht, wenn ich hab eine Bitmap mit z.b. der Breite 642 drauf packe ist sie viel zu klein erst bei 942 passt sie richtig drauf wieso das??Weil die Größenangaben nicht in Pixel angegeben sind, sondern in "Dialog Units" Ich hoffe ihr könnt mir helfen, weil ich richtig am verzweifeln bin was die Gestaltung angeht...Ist die Gestaltung denn ein wichtiger Bestandteil des Projekts, oder legst du da vielleicht gerade zu viel Wert auf unnötiges Blendwerk? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artery Geschrieben 30. Dezember 2011 Autor Teilen Geschrieben 30. Dezember 2011 Okay das mit der anordnung hat geklappt! Vielen Dank... Wie kriege ich denn die Größe des Dialogs in Pixeln hin? Und noch eine Frage, wie kann ich Statictext so modifizieren dass man nur die Schrift sieht? Kann man auch Schriftarten importieren? Ich würde gerne eine Schriftart benutzen die ich in Photoshop habe.. MfG Artery Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artery Geschrieben 31. Dezember 2011 Autor Teilen Geschrieben 31. Dezember 2011 (bearbeitet) Ich habs jetzt so zur hälfte mit der Schrift hinbekommen, aber eine sache klappt immer noch nicht, ich will die Schriftgröße eines einzelnen StaticText ändern, kann mir mal jemand bitte helfen?? €dit: void CVokabeltrainer20enhancedView::OnPaint() { //CPaintDC dc(this); // device context for painting // TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein. // CFormView::OnPaint() soll zum Zeichnen von Meldungen nicht aufgerufen werden. //CFont schrift; //CString ABCDE ="Arial"; CPaintDC dc(this); schrift.CreateFont(29, 0, 0, 0, FW_BOLD, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, _T("Consolas")); CStatic *ed=(CStatic*)GetDlgItem(IDC_STATIC222); ed->SetFont(&schrift); GetDlgItem(IDC_STATIC222)->SetWindowText(_T("Ghostmode")); } So habe ich es jetzt und Schrift ist ne public in der View Class! Aber ich bekomme nach dem Start eine fehler Meldung "Debug Assertion Failed..." aber ich sehe dass die Schrift richtig übernommen wurde und es anscheinend eingeschränkt funktioniert.. ich verstehe nur nicht was mir die Fehler Meldung sagen soll bzw. wodurch sie ausgelöst wird.. Bearbeitet 31. Dezember 2011 von Artery Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 31. Dezember 2011 Teilen Geschrieben 31. Dezember 2011 (bearbeitet) So habe ich es jetzt und Schrift ist ne public in der View Class!CreateFont in OnPaint ist keine gute Idee. Mach das im View-Konstruktor. Aber ich bekomme nach dem Start eine fehler Meldung "Debug Assertion Failed..." aber ich sehe dass die Schrift richtig übernommen wurde und es anscheinend eingeschränkt funktioniert.. ich verstehe nur nicht was mir die Fehler Meldung sagen soll bzw. wodurch sie ausgelöst wird..Da du den relevanten Teil der Meldung weggelassen hast, können wir dir auch nicht helfen. Wirf den Debugger an und schau im Callstack nach, woher die Meldung kommt. Bearbeitet 31. Dezember 2011 von Klotzkopp Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artery Geschrieben 31. Dezember 2011 Autor Teilen Geschrieben 31. Dezember 2011 Also ich habe das Ganze jetzt in "OnInitialUpdate()" gepackt und jetzt funktioniert es einwandfrei! So jetzt habe ich aber ein zweiten Dialog, wenn der geöffnet wird möchte ich wieder folgendes machen: m_cFontButtonFont.CreateFont(8, 0, 0, 0, FW_BOLD, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, _T("Consolas")); CStatic *p_cStaticEditElement=(CStatic*)GetDlgItem(IDSC_PRFLMNGRACCPTPRFLTXT); p_cStaticEditElement->SetFont(&m_cFontButtonFont); GetDlgItem(IDSC_PRFLMNGRACCPTPRFLTXT)->SetWindowText(_T("Ghostmode")); Der Dialog hat jetzt eine Klasse die von DialogEX abgeleitet ist. Darin habe ich kein "OnIntialUpdate". Ich weiß jetzt nicht wo ich das hinpacken soll... Ich habe mir einfach eine Funktion geschrieben in der das nun passieren soll. Ich war mir nicht ganz sicher wie ich sie aufrufen soll, also wenn ich sie nachdem Konstruktor aufrufe bekomme ich wieder nen Fehler. CWnd* CWnd::GetDlgItem(int nID) const { [COLOR="red"]ASSERT(::IsWindow(m_hWnd));[/COLOR] if (m_pCtrlCont == NULL) return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID)); else return m_pCtrlCont->GetDlgItem(nID); } in m_hWnd steht "unused = ???" Das scheint jetzt glaube ich das Problem zu sein, weil ich die Funktion aufrufe bevor ich: if(c_ProfilmangerNewProfilWindow.DoModal() == IDOK) {... } aufrufe. er hat iwie kein Fenster oder so hat keine ahnung... Nur ich wüsste auch nicht was ich machen sollte um es dazwischen zupacken. Ich weiß einfach nicht genau was .DoModal() macht nur das es iwie das Fenster aufruft... Aber ich weiß auch nicht genau wann in die if-bedingung gesprungen wird. Ich hoffe ihr könnt mir ihrgendwie helfen, ich bin so sehr am verzweifeln und ausrasten... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 31. Dezember 2011 Teilen Geschrieben 31. Dezember 2011 Moin. Der Dialog hat jetzt eine Klasse die von DialogEX abgeleitet ist. Darin habe ich kein "OnIntialUpdate". Ich weiß jetzt nicht wo ich das hinpacken soll... Kleiner Tipp: "OnInitDialog()". Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artery Geschrieben 1. Januar 2012 Autor Teilen Geschrieben 1. Januar 2012 Wenn es diese Funktion in meiner Klasse geben würde, hätte ich es darein auch gepackt es gibt aber keine solche Funktion :/ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 2. Januar 2012 Teilen Geschrieben 2. Januar 2012 Moin. Die gibt es. Entweder per KlassenAssistent erzeugen, oder per Hand einfügen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Artery Geschrieben 3. Januar 2012 Autor Teilen Geschrieben 3. Januar 2012 Achso ohh man, wenn man in rage ist dann vergisst man aber auch alles... Ja klar =) danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.