TForm 구성 요소 (테두리, 캡션 ..)에서 마우스 단추를 클릭하는 동안 OpenGL 애니메이션이 중지됩니다. 마우스 버튼을 놓 자마자 애니메이션이 계속 진행됩니다.VCL 구성 요소 (WM_PAINT)로 애니메이션
// Drawing Scene
void TMainForm::DrawGLScene()
{
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
DrawFigure();
SwapBuffers(hDC);
}
// Catching WM_PAINT
LRESULT CALLBACK NewWindowProcPanel3D(HWND hWnd, UINT msg, WPARAM w, LPARAM l)
{
switch (msg)
{
case WM_ERASEBKGND :
{
return 1;
}
case WM_PAINT :
{
MainForm->DrawGLScene();
}
default: return CallWindowProc((FARPROC)MainForm->OldWindowProcPanel3D,
hWnd, msg, w, l);
}
return 0;
}
// Creating OldWindowProcPanel3D -
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
OldWindowProcPanel3D = (WNDPROC)SetWindowLong(Panel3D->Handle,
GWL_WNDPROC, (long)NewWindowProcPanel3D);
}
// --------- *.h :
class TMainForm : public TForm
{
private:
HDC hDC;
public:
WNDPROC OldWindowProcPanel3D;
}
// Generation event WM_PAINT
void TMainForm::UpdateScene()
{
InvalidateRect(Panel3D->Handle, NULL, false);
}
// Animation code (turn on 'animation' if RadioButton is chosen)
void __fastcall TMainForm::RadioGroupClick(TObject *Sender)
{
if (RadioGroup->ItemIndex == 0)
animation = false;
else if (RadioGroup->ItemIndex == 1)
animation = true;
if (animation)
{
while (animation)
{
Application->ProcessMessages();
UpdateScene();
}
}
}
양식의 크기, 유용한 링크를 변경하는 동안 애니메이션을 중단하지 않으려면 어떻게해야합니까?