void CChildView::OnPaint() { CRect pos(0, 0, 0, 0); HotSpots.clear(); CPaintDC pdc(this); // device context for painting CMemDC m(pdc, this); CDC& dc = m.GetDC(); CRect client; GetClientRect(&client); dc.FillSolidRect(&client, crBackground); if (!m_pClass) return; dc.SelectObject(&Font); HotSpots.clear(); DWORD classSize = m_pClass->GetMemorySize(); Memory.SetSize(classSize); ReadMemory((LPVOID)m_pClass->offset, Memory.pMemory, classSize); ViewInfo View; View.Address = m_pClass->offset; View.pData = Memory.pMemory; View.Classes = &theApp.Classes; View.client = &client; View.dc = &dc; View.Level = 0; View.HotSpots = &HotSpots; View.bMultiSelected = (Selected.size() > 1) ? true : false; int ypos = m_Scroll.GetScrollPos() * FontHeight; if (m_Scroll.IsWindowVisible()) View.client->right -= SB_WIDTH; int DrawMax = m_pClass->Draw(View, 0, -ypos) + ypos; if (m_pClass->RequestPosition != -1) { if ((m_pClass->RequestPosition >= 0) && ((unsigned int)m_pClass->RequestPosition < theApp.Classes.size())) { int idx = -1; for (UINT i = 0; i < theApp.Classes.size(); i++) { CNodeClass* pClass = View.Classes->at(i); if (m_pClass == theApp.Classes[i]) idx = i; } theApp.Classes.erase(theApp.Classes.begin() + idx); theApp.Classes.insert(theApp.Classes.begin() + m_pClass->RequestPosition, m_pClass); } m_pClass->RequestPosition = -1; } if (client.Height() < DrawMax) { SCROLLINFO si; si.cbSize = sizeof(SCROLLINFO); si.fMask = SIF_PAGE | SIF_RANGE; si.nMin = 0; si.nMax = DrawMax / FontHeight; si.nPage = client.Height() / FontHeight; m_Scroll.SetScrollInfo(&si); m_Scroll.ShowScrollBar(1); } else { m_Scroll.SetScrollPos(0); m_Scroll.ShowScrollBar(0); } // this makes tabs CMDIFrameWnd* pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd; CChildFrame* pChild = (CChildFrame*)pFrame->GetActiveFrame(); if (pChild->m_wndView.m_hWnd == this->m_hWnd) { pChild->SetWindowText(m_pClass->Name.GetString()); pChild->SetTitle(m_pClass->Name.GetString()); pFrame->UpdateFrameTitleForDocument(m_pClass->Name.GetString()); //char txt[256]; //sprintf (txt,"Total HotSpots: %i",HotSpots.size()); //dc.SetTextColor(0xFF0000); //dc.SetBkColor(0x000000); //dc.SetBkMode(OPAQUE); //dc.DrawText(txt,-1,&CRect(0,0,0,0), DT_LEFT | DT_NOCLIP | DT_NOPREFIX); } //for (UINT i=0; i < HotSpots.size();i++) //{ // dc.DrawFocusRect(HotSpots[i].Rect); //} }