Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
U

User 12249262

@User 12249262
About
Posts
5
Topics
2
Shares
0
Groups
0
Followers
0
Following
0

Posts

Recent Best Controversial

  • InitDialog in splitter
    U User 12249262

    Richard, Thanks for bearing with me. I looked in MDN and found this comment about OnInitialUpdate

    Called by the framework after the view is first attached to the document, but before the view is initially displayed.

    So I assume that OnInitalUpdate is called automaticaly and I don't need to do anything to invoke it but where would I put the override code in CFormRight : public CFormView or COpenGLControl : public CWnd ? Thanks again, John

    C / C++ / MFC graphics game-dev help tutorial question

  • InitDialog in splitter
    U User 12249262

    Richard, The function that I am trying to get to execute is COpenGLControl::oglInitialize() which was called in OnInitDialog in the example template I am following. the oglInitialize function, listed below should setup the OpenGL context. But my case is somewhat different as you can see from my most recent post and I don't know where to place the call to oglInitalize()

    void COpenGLControl::oglInitialize()
    {
    // Initial Setup:
    //
    static PIXELFORMATDESCRIPTOR pfd =
    {
    sizeof(PIXELFORMATDESCRIPTOR),
    1,
    PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
    PFD_TYPE_RGBA,
    32, // bit depth
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    16, // z-buffer depth
    0, 0, 0, 0, 0, 0, 0,
    };

    // Get device context only once.
    hdc = GetDC()->m\_hDC;
    
    // Pixel format.
    m\_nPixelFormat = ChoosePixelFormat(hdc, &pfd);
    SetPixelFormat(hdc, m\_nPixelFormat, &pfd);
    
    // Create the OpenGL Rendering Context.
    hrc = wglCreateContext(hdc);
    wglMakeCurrent(hdc, hrc);
    
    // Basic Setup:
    //
    // Set color to use when clearing the background.
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glClearDepth(1.0f);
    
    // Turn on backface culling
    glFrontFace(GL\_CCW);
    glCullFace(GL\_BACK);
    
    // Turn on depth testing
    glEnable(GL\_DEPTH\_TEST);
    glDepthFunc(GL\_LEQUAL);
    
    // Send draw request
    OnDraw(NULL);
    

    }

    In that example template I have three classes CMFCOpenGLDlg : public CDialogEx COpenGLControl : public CWnd and CMFCOpenGLApp : public CWinApp in this example the CMFCOpenGLDlg::OnInitDialog() function calls COpenGLControl::oglCreate() and COpenGLControl::OnCreate() calls COpenGLControl::oglInitialize() but I just don't see how to wire this up in my splitt form example where the panes are created from the splitter class. Thanks, John ... // Create OpenGL Control window m_oglWindow.oglCreate(rect, this);

    C / C++ / MFC graphics game-dev help tutorial question

  • InitDialog in splitter
    U User 12249262

    Victor, Thanks so much but I still don't know what to do. my CForm right and CFormLeft (where I want to put the OpenGL window) inherit from CFormView. Where do put the over ride? I have CMainForm : public CFrameWnd, and COpenGL: public CWnd. The OnCreateClient() function in CmainForm creates the splitter

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
    {
    // TODO: Add your specialized code here and/or call the base class

    // create splitter window
    if (!m\_wndSplitter.CreateStatic(this, 1, 2)){
    	return FALSE;
    }
    
    if (!m\_wndSplitter.CreateView(0, 0, RUNTIME\_CLASS(CFormLeft), CSize(300, 100), pContext) ||
    	!m\_wndSplitter.CreateView(0, 1, RUNTIME\_CLASS(CFormRight), CSize(100, 100), pContext))
    {
    	m\_wndSplitter.DestroyWindow();
    	return FALSE;
    }
    

    Thanks. John

    C / C++ / MFC graphics game-dev help tutorial question

  • InitDialog in splitter
    U User 12249262

    With MFCm I am trying to create an OpenGL control on a split form the uses the splitter class to create the panes. My problem is I don't know where to put the OnInitDialog() function or how to wire it up. I have a main form CMainFrame and 2 child forms CFormRight and CFormLeft but don't see any place for the OnInitDialog function. The OnCreateClient function in MainForm calls m_splitter.CreateView but not OnInitDialog. Any Suggestions? John C

    C / C++ / MFC graphics game-dev help tutorial question

  • OpenGL control on split MFC form
    U User 12249262

    I am trying to build an MFC application the uses a form with two panes, one for controls and the other for an OpenGL graphics window. I followed 2 code project for this task.

    1. 15338/SDI-with-split-window by kencocomputers
    2. Setting up OpenGL in an MFC control from codeguru C10975
      The split window application part worked fine but I cannot initialize the openGL context in the graphics pane.
      The classes in the project are:
    3. CAboutDlg
    4. CFormLeft
    5. CFormRight
    6. CMainForm
    7. CMFC_SurfaceViwerApp
    8. COpenGLControl
      CFormLeft and CFormRight views are created in the CManFrame function
      BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

    Specifically with:
    if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CFormLeft), CSize(300, 100), pContext) ||
    !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CFormRight), CSize(100, 100), pContext))
    {
    m_wndSplitter.DestroyWindow();
    return FALSE;
    }

    My question is how to actually implement the OpenGL Window; I suspect that it requires some code like:
    void COpenGLControl::oglInitialize()
    {
    // Initial Setup:
    //
    static PIXELFORMATDESCRIPTOR pfd =
    {
    sizeof(PIXELFORMATDESCRIPTOR),
    1,
    PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
    PFD_TYPE_RGBA,
    32, // bit depth
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    16, // z-buffer depth
    0, 0, 0, 0, 0, 0, 0,
    };
    // Get device context only once.
    hdc = GetDC()->m_hDC;

    // Pixel format.
    m\_nPixelFormat = ChoosePixelFormat(hdc, &pfd);
    SetPixelFormat(hdc, m\_nPixelFormat, &pfd);
    
    // Create the OpenGL Rendering Context.
    hrc = wglCreateContext(hdc);
    wglMakeCurrent(hdc, hrc);
    
    // Basic Setup:
    //
    // Set color to use when clearing the background.
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glClearDepth(1.0f);
    
    // Turn on backface culling
    glFrontFace(GL\_CCW);
    glCullFace(GL\_BACK);
    
    // Turn on depth testing
    glEnable(GL\_DEPTH\_TEST);
    glDepthFunc(GL\_LEQUAL);
    
    // Send draw request
    OnDraw(NULL);
    

    }
    But how does it activate? I put a call inside the oglCreate() function but nothing happened.

    void COpenGLControl::oglCreate(CRect rect, CWnd *parent)
    {
    CString className = AfxRegisterWndClass(CS_HREDRAW |
    CS_VREDRAW | CS_OWNDC, NULL,
    (HBRUSH)GetStockObject(BLACK_BRUSH), NULL);

    CreateEx(0, className, L"OpenGL", WS\_CHILD | WS\_VISIBLE |
    	WS\_CLIPSIBLINGS | WS\_CLIPCHILDREN, rect, parent, 0);
    
    // Set initial variables' values
    m\_oldWindow = rect;
    m\_originalRect = re
    
    C / C++ / MFC graphics question c++ game-dev testing
  • Login

  • Don't have an account? Register

  • Login or register to search.
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups