mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-04 18:06:22 +03:00
Header files and non-compilable source files are now included within generated VS projects. genproj now generates DRAWEXE.rc.
80 lines
3.1 KiB
C++
80 lines
3.1 KiB
C++
// Copyright (c) 1996-1999 Matra Datavision
|
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
|
//
|
|
// This file is part of Open CASCADE Technology software library.
|
|
//
|
|
// This library is free software; you can redistribute it and/or modify it under
|
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
|
// by the Free Software Foundation, with special exception defined in the file
|
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
|
// distribution for complete text of the license and disclaimer of any warranty.
|
|
//
|
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
|
// commercial license or contractual agreement.
|
|
|
|
#if defined(_WIN32)
|
|
#include <windows.h>
|
|
#endif
|
|
|
|
#include <WNT_WClass.hxx>
|
|
|
|
#include <TCollection_ExtendedString.hxx>
|
|
#include <WNT_ClassDefinitionError.hxx>
|
|
#include <WNT_Window.hxx>
|
|
|
|
#if defined(_WIN32) && !defined(OCCT_UWP)
|
|
|
|
IMPLEMENT_STANDARD_RTTIEXT(WNT_WClass, Standard_Transient)
|
|
|
|
//=======================================================================
|
|
//function : WNT_WClass
|
|
//purpose :
|
|
//=======================================================================
|
|
WNT_WClass::WNT_WClass (const TCollection_AsciiString& theClassName,
|
|
const Standard_Address theWndProc,
|
|
const unsigned int theStyle,
|
|
const Standard_Integer theClassExtra,
|
|
const Standard_Integer theWindowExtra,
|
|
const Aspect_Handle theCursor,
|
|
const Aspect_Handle theIcon,
|
|
const TCollection_AsciiString& theMenuName)
|
|
: myClassName (theClassName),
|
|
myAppInstance (GetModuleHandleW (NULL)),
|
|
myWndProc (NULL)
|
|
{
|
|
const TCollection_ExtendedString aClassNameW (theClassName);
|
|
const TCollection_ExtendedString aMenuNameW (theMenuName);
|
|
WNDCLASSW aWinClass;
|
|
aWinClass.style = (UINT)theStyle;
|
|
aWinClass.lpfnWndProc = theWndProc != NULL ? (WNDPROC )theWndProc : DefWindowProcW;
|
|
aWinClass.cbClsExtra = theClassExtra;
|
|
aWinClass.cbWndExtra = theWindowExtra;
|
|
aWinClass.hInstance = (HINSTANCE )myAppInstance;
|
|
aWinClass.hIcon = theIcon != NULL ? (HICON )theIcon : LoadIcon (NULL, IDI_APPLICATION);
|
|
aWinClass.hCursor = theCursor != NULL ? (HCURSOR )theCursor : LoadCursor (NULL, IDC_NO);
|
|
aWinClass.hbrBackground = 0;
|
|
aWinClass.lpszMenuName = !aMenuNameW.IsEmpty() ? aMenuNameW.ToWideString() : NULL;
|
|
aWinClass.lpszClassName = aClassNameW.ToWideString();
|
|
if (!RegisterClassW (&aWinClass))
|
|
{
|
|
myClassName.Clear();
|
|
throw WNT_ClassDefinitionError("Unable to register window class");
|
|
}
|
|
myWndProc = (Standard_Address )aWinClass.lpfnWndProc;
|
|
}
|
|
|
|
//=======================================================================
|
|
//function : ~WNT_WClass
|
|
//purpose :
|
|
//=======================================================================
|
|
WNT_WClass::~WNT_WClass()
|
|
{
|
|
if (!myClassName.IsEmpty())
|
|
{
|
|
const TCollection_ExtendedString aClassNameW (myClassName);
|
|
UnregisterClassW (aClassNameW.ToWideString(), (HINSTANCE )myAppInstance);
|
|
}
|
|
}
|
|
|
|
#endif // _WIN32
|