18CGlBaseView::CGlBaseView()
23 ZeroMemory(&glParam,
sizeof(PIXELFORMATDESCRIPTOR));
28CGlBaseView::~CGlBaseView()
30 DEBUG_INFO(
"DESTRUCTOR: CGlBaseView\n");
31 if (pApp!=NULL) pApp->ViewDestructor(
this);
38void CGlBaseView::SetParameter(PIXELFORMATDESCRIPTOR* param)
42 ZeroMemory(param,
sizeof(PIXELFORMATDESCRIPTOR));
43 param->nSize =
sizeof(PIXELFORMATDESCRIPTOR);
45 param->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
46 param->iPixelType = PFD_TYPE_RGBA;
47 param->cColorBits = 24;
48 param->cDepthBits = 16;
49 param->iLayerType = PFD_MAIN_PLANE;
51 colorMode = GRAPH_COLOR_RGBA;
56BOOL CGlBaseView::InitDevice(
int xsize,
int ysize, CWnd* cwnd)
58 ::glDepthFunc(GL_LEQUAL);
59 ::glEnable(GL_DEPTH_TEST);
61 ::glShadeModel(GL_SMOOTH);
68 SetWindowSize(xsize, ysize);
77POINT CGlBaseView::GetWindowDisplaySize(POINT pt)
79 int rx = GetSystemMetrics(SM_CXSCREEN);
80 int ry = GetSystemMetrics(SM_CYSCREEN) - 14;
82 int scrSize = Min(rx, ry)*2/3;
83 int sz = Max(pt.x, pt.y);
88 rs = (double)scrSize/sz;
89 pt.x = (int)(pt.x*rs);
90 pt.y = (int)(pt.y*rs);
108int CGlBaseView::GetMouseButton()
115void CGlBaseView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
117 CExView::OnActivateView(bActivate, pActivateView, pDeactiveView);
126BEGIN_MESSAGE_MAP(jbxwl::CGlBaseView,
CExView)
134int CGlBaseView::OnCreate(LPCREATESTRUCT lpCreateStruct)
136 if (CExView::OnCreate(lpCreateStruct)==-1)
return -1;
138 m_pDC =
new CClientDC(
this);
139 if (m_pDC==NULL)
return -1;
141 SetParameter(&glParam);
143 m_hRC = WGLCreateContext(m_pDC, &glParam);
155void CGlBaseView::OnDestroy()
157 CExView::OnDestroy();
159 WGLDeleteContext(m_hRC);
169void CGlBaseView::OnSize(UINT nType,
int cx,
int cy)
171 CExView::OnSize(nType, cx, cy);
255void CGlVTXBaseView::OnTimer(UINT_PTR nIDEvent)
258 if (doReSize) ExecWindowReSize(clientRect.right, clientRect.bottom);
262 else DEBUG_ERROR("CGlVTXBaseView::OnTimer(): ERROR: 表示可能なデータがありません\n");
263 CGlBaseView::OnTimer(nIDEvent);
268void CGlVTXBaseView::OnDraw(CDC* pDC)
270 if (hasViewData && timerID==-1) {
271 if (doReSize) ExecWindowReSize(clientRect.right, clientRect.bottom);
275 else if (!hasViewData) DEBUG_ERROR("CGlVTXBaseView::OnDraw(): ERROR: 表示可能なデータがありません\n");