nach start des programm direkt im fenster zeichnen...
-
hallo zusammen,
ich habe ein kleins programmchen geschrieben. wenn ich es starte erscheint ein fenster. in dem kann man mit der maus rumkicken und da wo man geklickt hat, wird ein viereck gezeichnet.
nun würde ich gerne das fenster teilen. dazu würde ich gerne direkt, wenn das fenster geöffnet wird eine waagerechte linie in das fenster gezeichnet wir, so dass das fenster 1/3 zu 2/3 geteilt wird. die linie zeichnen ist nicht das problem, aber ich weiß nicht, wo man das dann einbauen muss, damit die linie direkt beim öffenen des fenster oder nach dem starten des programms in dem fenster gezeichnet wird.
wäre toll, wenn mir da jemand helfen könne, bin da noch ganz neu.
grup
Pepppy
-
Womit hast du das denn geschrieben? Mit C++ und der STL alleine bestimmt nicht.
-
Hallo,
ich habe hier mal den code für das fenster:
MainFrame.cpp
// MainFrm.cpp : Implementierung der Klasse CMainFrame // #include "stdafx.h" #include "Netzplan.h" #include "MainFrm.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CMainFrame IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_CREATE() END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // Statusleistenanzeige ID_INDICATOR_CAPS, ID_INDICATOR_NUM, // Num-Block Anzeige ID_INDICATOR_SCRL, }; // CMainFrame Erstellung/Zerstörung CMainFrame::CMainFrame() { // TODO: Hier Code für die Memberinitialisierung einfügen } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("Symbolleiste konnte nicht erstellt werden\n"); return -1; // Fehler bei Erstellung der Symbolleiste } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Statusleiste konnte nicht erstellt werden\n"); return -1; // Fehler bei Erstellung der Statusleiste } // HINWEIS: Löschen Sie diese drei Zeilen, wenn Sie nicht möchten, dass die Systemleiste // andockbar ist m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // HINWEIS: Ändern Sie hier die Fensterklasse oder die Darstellung, indem Sie // CREATESTRUCT cs modifizieren. cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE | WS_SYSMENU | WS_MINIMIZEBOX; ///| WS_THICKFRAME cs.cx= 800; // Breite des sich öffnenden Fenster cs.cy= 600; // Höhe des sich öffnenden Fensters return TRUE; } // CMainFrame Diagnose #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif //_DEBUG // CMainFrame Meldungshandler
und hier der code für die MainFrame.h
// MainFrm.h : Schnittstelle der Klasse CMainFrame // #pragma once class CMainFrame : public CFrameWnd { protected: // Nur aus Serialisierung erstellen CMainFrame(); DECLARE_DYNCREATE(CMainFrame) // Attribute public: // Operationen public: // Überschreibungen public: virtual BOOL PreCreateWindow(CREATESTRUCT& cs); // Implementierung public: virtual ~CMainFrame(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // Eingebundene Elemente der Steuerleiste CStatusBar m_wndStatusBar; CToolBar m_wndToolBar; // Generierte Funktionen für die Meldungstabellen protected: afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); DECLARE_MESSAGE_MAP() };
Nun würde ich gerne gleich bem öffnen des fenster diese Linie mitzeichenen lassen. leider weiß ich nicht, wie ich das anstellen soll.
wäre toll, wenn mir da jemand auf die Sprünge helfen könnte.
vielen dank.
gruß
Pepppy
-
Das sieht stark nach einer MFC-Anwendung aus - ab damit ins Visual Studio Board
Ansonsten: Was genau willst du wo und wie auf dem Bildschirm darstellen? Im einfachsten Fall mußt du die OnPaint() deines MainFrame's entsprechend anpassen.
(Und falls du eine Darstellung wie im Explorer haben willst, hat MFC die Klasse CSplitterWnd, die sich um die Aufteilung des Fensters kümmern kann)
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-