Nach Programm start direkt im fenster zeichnen
-
hallo zusammen,
so, nun bin ich hier, weil die anderen meintan, dass dieses Thema wohl eher hier rein gehört.
ich habe ein kleins programmchen geschrieben. wenn ich es starte erscheint ein fenster. in dem kann man mit der maus rumklicken 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.
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 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 muss in den View in OnPaint.
-
OnPaint habe ich gar nicht
-
OnDraw().
-
aslo die ondraw habe ich, aber wo muss ich die dennaufrufen, damit beim öffnen des fesnters die linie gezeichnet wird. im moment wird die funktion aufgerufen, wennich mit der maus klicke. dadurch wird dann ein viereck an die stelle gezeichnet. die ondraw ruft dafür einen funktion auf, die dann die vieecke zeichnet.
wie kann ich den jezt die ondraw nicht nur durch den mausklick, sondern auch durch das öffnen des fensters aufrufen?