OCC之HelloWorld

2024-03-26 23:40
文章标签 helloworld occ

本文主要是介绍OCC之HelloWorld,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


一个Viewer管理多个view对象,一个view就是一个视图。它不与具体的窗口关联。
构造一个view需要两个对象: 一个是Aspect_WindowDriver的子类对象,一个是Viewer。

Aspect_WindowDriver的父类是Aspect_Driver,它有画直线段,多边形等纯虚函数。

可以把它看成是抽象的GDI,即用来画图。在windows平台下,可使用Aspect_WindowDriver

的子类WNT_WDriver。构造这个对象只需要一个WNT_Window对象。它是Aspect_Window的子类。

WNT_Window是一个被包装的窗口。传入父窗体句柄,然后调用CreateWindow的API,创建一个Windows OS

的窗口。New 一个WNT_Window需要父窗口句柄和WNT_GraphicDevice对象。它的父类是

Aspect_GraphicDevice,是一个颜色管理类。在Windows,X-Window ,及各种显卡,它们显

示颜色方式不统一,OCC为是可移植到其它系统上,创建了这个颜色管理类。

WNT_GraphicDevice是它的子类,针对Windows NT平台。只要new 一个

WNT_GraphicDevice就可以用了。


好了,我们用代码描述创建一个OCC窗口的过程。

device = new WNT_GraphicDevice;

 win = new WNT_Window(device, 父窗口句柄);

Driver = new WNT_WDriver(win);

View = newV2d_View(driver,已先创建的Viewer对象);

创建Viewer对象,需要一个WNT_GraphicDevice对象。

下面的例子,显示了一个金黄色的窗口。

附加包含目录 $(CASROOT)\inc

附加依赖项 TKernel.lib TKService.lib TKV2d.lib

代码如下

//mfc.h
#include <Handle_V2d_View.hxx>class CMFCApp : public CWinApp
{
public:virtual BOOL InitInstance();};class CMainWindow : public CFrameWnd
{
public:CMainWindow();
protected:Handle_V2d_View  pV2dView;	
protected:afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);DECLARE_MESSAGE_MAP ()
};//MFC.cpp
#include <afxwin.h>
#include "resource.h"
#include "MFC.H"
#include "OCCMgr.h"
#include <Quantity_Color.hxx>
#include <V2d_View.hxx>CMFCApp theApp;BOOL CMFCApp::InitInstance()
{m_pMainWnd = new CMainWindow; m_pMainWnd->ShowWindow(m_nCmdShow);m_pMainWnd->UpdateWindow();return TRUE;
}BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)//ON_WM_PAINT ()ON_WM_CREATE()
END_MESSAGE_MAP ()CMainWindow::CMainWindow()
{Create(NULL,_T("A Simple MFC Program!"));
}int CMainWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
{pV2dView = OCCMgr::Get()->CreatView(this->m_hWnd);pV2dView->SetBackground(Quantity_Color(Quantity_NOC_GOLD));return 0;
}//OCCMgr.h
#pragma once
#include <v2d_viewer.hxx>
#include <Handle_WNT_GraphicDevice.hxx>
#include <Handle_V2d_View.hxx>
#include <Handle_WNT_WDriver.hxx>
#include <Handle_WNT_Window.hxx>class OCCMgr
{
public:static OCCMgr * Get();Handle_V2d_View CreatView(HWND parentHwnd);
protected:OCCMgr();
protected:Handle_V2d_Viewer m_pViewer;Handle_WNT_GraphicDevice m_pGraphicDevice;Handle_V2d_View m_pView;};//OCCMgr.cpp
#include "afxwin.h"
#include "OCCMgr.h"
#include <WNT_WClass.hxx>
#include <WNT_Window.hxx>
#include <WNT_WDriver.hxx>
#include <V2d_View.hxx>
#include <WNT_GraphicDevice.hxx>OCCMgr * OCCMgr::Get()
{static OCCMgr mgr;return & mgr;
}OCCMgr::OCCMgr()
{try{m_pGraphicDevice = new WNT_GraphicDevice();}catch(Standard_Failure){AfxMessageBox("Fatal error during graphic initialization",MB_ICONSTOP);ExitProcess(1);}TCollection_ExtendedString Name("Viewer 2D");TCollection_AsciiString Domain("My Domain");m_pViewer = new V2d_Viewer(m_pGraphicDevice,Name.ToExtString(),Domain.ToCString());
}Handle_V2d_View OCCMgr::CreatView(HWND parentHwnd)
{Handle_WNT_Window pWin = new WNT_Window(m_pGraphicDevice, parentHwnd);Handle_WNT_WDriver pDriver = new WNT_WDriver(pWin);m_pView = new V2d_View(pDriver, m_pViewer);return m_pView;
}





这篇关于OCC之HelloWorld的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/850244

相关文章

创建一个Spring的HelloWorld程序

Spring IOC IOC指的是控制反转,把对象的创建、初始化、销毁等工作都交给Spring容器。由spring容器来控制对象的生命周期。下图可以说明我们传统创建类的方式和使用Spring之后的区别: 创建Java类: package com.yihai.springioc;//IOC指的是控制反转,把对象的创建、初始化、销毁等工作都//交给Spring容器。由spring容器来

ELK日志分析平台之helloworld

1.1  软件环境说明 本次安装部署所用的软件均为官网上目前的最新版本。 操作系统软件Java环境Centos 7 (服务器)logstash-6.2.4 .tar.gz openjdk 1.8.0_161elasticsearch-6.2.4.tar.gzkibana-6.2.4-linux-x86_64.tar.gzredis-4.0.9.tar.gzWindows 7logstash-6

OCC显示渲染结构剖析

1.Display显示 2.Drawer 3.Graphics 4.InteractiveContext 5.Render 6.Selection 7.View

Spring MVC HelloWorld入门例子

本例子为你讲解在spring3中如何使用基于注解的mvc框架.  例子中使用到的工具:  MyEclipse 9.1  jdk 1.6  1.添加Jar包引用   由于使用了Maven管理项目,所以,第一步就是添加引用.(没有使用Maven怎么办?那你直接下载Spring3的压缩包,添加相应的Jar文件就可以了。)  Java代码   <d

scala ide + helloworld

http://blog.csdn.net/asongoficeandfire/article/details/21490101 简介 在上一篇文章中,我们阐述了Coursera使用Scala的理由,以及Scala的优缺点。说多不如少练,我们今天就开始练习如何使用Scala编程。 虽然Scala是一门比较新的语言,但是很多机构都为其开发了IDE或者集成插件,比较流行的有Eclip

第2讲:pixi.js 绘制HelloWorld

基于第0讲和第1讲,我们增添了vite.config.ts文件。并配置了其他的http端口。 此时,我们删除掉没用的东西。 删除 conter.ts、typescript.svg 在main.ts中改成如下内容: import {Application, Text} from 'pixi.js'import './style.css'// 指明Application的类型是一个HTML的Ca

使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序

/// 服务器端程序的编译 gcc -o multi_thread_server multi_thread_server -lpthread 客户端程序的编译 gcc -o multi_thread_client multi_thread_client.c -lpthread 服务器程序和客户端程应当分别运行在2台计算机上. 服务器端程序的运行,在一个计算机的终

Intel8086处理器使用NASM汇编语言实现操作系统03-实模式-屏幕显示HelloWorld(mov,jmp,time,dd,dw,$$)

本文涉及到的汇编指令及关键字mov,jmp,times(独有),dd(独有),dw (独有),db(独有),$,$$,byte,word dd/dw times 10 db 0 ;db在8086下占用1个字节times 10 dw 0 ;dd表示一个字,在8086下占用2个字节times 10 dd 0 ;dd表示一个双字,在8086下占用4个字节,这句话是编译器编译的时候

DriveWorld:一个预训练模型大幅提升检测+地图+跟踪+运动预测+Occ多个任务性能

1. 写在前面 以视觉为中心的自动驾驶技术近期因其较低的成本而引起了广泛关注,而预训练对于提取通用表示至关重要。然而,当前的以视觉为中心的预训练通常依赖于2D或3D预训练任务,忽视了自动驾驶作为4D场景理解任务的时序特征。这里通过引入一个基于世界模型的自动驾驶4D表示学习框架“DriveWorld”来解决这一挑战,该框架能够从多摄像头驾驶视频中以时空方式进行预训练。具体来说,提出了一个用于时空建

JFreeChart| 图解JFreeChart(HelloWorld)

前言相关资源一.创建图表步骤二.具体代码分析三.示例效果图 前言 JFreeChart是一款免费的java图形开发类库。 主要用来在application/ applets/ servlets/jsp/上生成各种图表. JFreeChart是完全开源,并且严格遵循GNU的通用公共许可证,力保JFreeChart用户对源代码的自由修改与使用。 JFreeChart能产生饼图(