资源简介
xusir98开发的程序,很值得学习。
程序主要过程:
找出NX视图的显示窗口
HOOK NX视图的鼠标操作
在HOOK的回调函数中利用OPENGL的换算得出点在视窗的位置
移动窗口
代码片段和文件信息
// CreateNxWnd.cpp: implementation of the CCreateNxWnd class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “CreateNxWndCls.h“
#include “CreateNxWnd.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CCreateNxWnd::CCreateNxWnd()
{
}
CCreateNxWnd::~CCreateNxWnd()
{
}
BOOL CCreateNxWnd::AddDlg(stuPointWnd PtWnd)
{
m_List.AddTail(PtWnd);
return TRUE;
}
BOOL CCreateNxWnd::MoveWnd()
{
GLdouble fPoint[3] = {0};
GLdouble fModelMatrix[16] = {0};
GLdouble fProjMatrix[16] = {0};
GLint nViewport[4] = {0};
GLdouble fOutPt[3] = {0};
//获取OPENGL的模型矩阵
glGetDoublev(GL_MODELVIEW_MATRIXfModelMatrix);
//获取OPENGL的投影矩阵
glGetDoublev(GL_PROJECTION_MATRIXfProjMatrix);
//获取OPENGL的视窗大小
glGetIntegerv(GL_VIEWPORTnViewport);
//用迭代器循环访问存放跟随窗口的对象
POSITION pos = m_List.GetHeadPosition();
for (int i=0; i {
stuPointWnd pWnd = m_List.GetNext(pos);
UF_CURVE_ask_point_data(pWnd.m_ObjTagfPoint);
//获取点投影到视窗的坐标
gluProject(fPoint[0]fPoint[1]fPoint[2]
fModelMatrixfProjMatrixnViewport
&fOutPt[0]&fOutPt[1]&fOutPt[2]);
//有的时候钩子进来的情况获得矩阵不正确
//存在问题:用他来排除也不知道对不对?
if (fOutPt[2] < 0)
{
continue;
}
//获取跟随窗口的原始坐标
RECT WndRect;
pWnd.m_pWndDlg->GetWindowRect(&WndRect);
//获取视窗窗口的原始坐标
//存在问题:这里获取的矩形大小和获取的视窗大小有差异?
RECT PartRect;
::GetWindowRect(m_hPartWnd&PartRect);
//新的跟随窗口的坐标和长宽
LONG lNewX = PartRect.left + fOutPt[0];
LONG lNewY = PartRect.top + nViewport[3] - fOutPt[1];
LONG lHeight = WndRect.bottom - WndRect.top;
LONG lWidth = WndRect.right - WndRect.left;
//向右下偏移10个像素可以看到创建的点
LONG lOffSet = 10;
WndRect.left = lNewX + lOffSet;
WndRect.top = lNewY + lOffSet;
WndRect.right = WndRect.left + lWidth ;
WndRect.bottom = WndRect.top + lHeight;
//重新设置跟随窗口的位置
CRect NewRect(WndRect);
pWnd.m_pWndDlg->MoveWindow(NewRect);
//设置跟随窗口的文本
pWnd.m_pWndDlg->SetDlgItemText(MYTEXTpWnd.m_ObjName.GetBuffer(0));
}
return TRUE;
}
char g_szPartName[256+1] = {0};
HWND g_hWnd = NULL;
BOOL CALLBACK EnumChildProc(HWND hWndLPARAM lParam)
{
char szWndName[512] = {0};
::GetWindowText(hWndszWndNamesizeof(szWndName));
CString csWndName(szWndName);
int nEnd = csWndName.Find(“.prt“);
CString csName;
csName = csWndName.Mid(0nEnd);
strcpy(szWndNamecs
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3931 2010-06-06 11:30 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWnd.cpp
文件 923 2010-06-06 10:06 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWnd.h
文件 39184 2010-06-05 08:54 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.aps
文件 836 2010-06-06 11:30 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.clw
文件 3922 2010-06-06 10:47 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.cpp
文件 208 2010-06-02 13:29 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.def
文件 4885 2010-06-03 14:22 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.dsp
文件 551 2010-06-02 13:29 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.dsw
文件 1705 2010-06-02 13:29 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.h
文件 189440 2010-06-06 11:30 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.ncb
文件 56832 2010-06-06 11:30 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.opt
文件 1240 2010-06-06 11:16 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.plg
文件 14557 2010-06-05 08:54 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\CreateNxWndCls.rc
文件 21440 1998-08-18 16:24 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\glut.h
文件 169984 1998-08-18 16:25 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\glut32.dll
文件 79898 1998-08-18 16:25 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\glut32.lib
文件 90619 2009-11-11 10:00 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\msado15.tlh
文件 76614 2009-11-11 10:00 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\msado15.tli
文件 38011 2009-11-11 10:00 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\Msadox.tlh
文件 30916 2009-11-11 10:00 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\Msadox.tli
文件 9792 2009-11-11 10:00 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\MSJRO.tlh
文件 8075 2009-11-11 10:00 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\MSJRO.tli
文件 1250 2010-06-03 12:22 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\MyDlg.cpp
文件 1205 2010-06-03 12:21 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\MyDlg.h
文件 2668 2010-06-02 13:29 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\ReadMe.txt
文件 406 2010-06-02 13:29 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\res\chs\CreateNxWndCls.rc2
文件 406 2010-06-02 13:29 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\res\deu\CreateNxWndCls.rc2
文件 406 2010-06-02 13:29 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\res\enu\CreateNxWndCls.rc2
文件 406 2010-06-02 13:29 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\res\esp\CreateNxWndCls.rc2
文件 406 2010-06-02 13:29 关于NX3.0跟随点窗口的方法研究\CreateNxWndCls\CreateNxWndCls\res\fra\CreateNxWndCls.rc2
............此处省略18个文件信息
- 上一篇:小说阅读pc站页面模板
- 下一篇:基于STM32的医院点滴系统
相关资源
- register_vugen.bat
- DAC904采用xilinx的FPGA的DCM IP核进行开发
- OpenGL shader 代码,可正常编译,完美
- Notepad++ 64位 PluginManager
- opengl太阳系系统有贴图
- opengl 一个有光照效果带纹理会旋转的
- turbo debugger 5.5
- register_vugen.bat文件
- opengl系统开发案例代码 Chapter15
- glm.cpp、glm.h用于opengl读取obj文件
- OPENGL可一走动的人
- Unity UGUI中复用率最高的滚动列表,不
- Hdg Remote Debug
- SUSE_liunx_11_SP4.txt
- opengl实现多边形绘制删除和移动 有保
- NXPARM--ISP 软件 NXP_LPC_ISPV12 汉化
- psd2uGUI的AssetStore版本
- OpenGL实现3DS文件中的模型自由旋转
- opengl画球,递归细分
- OpenGL教室
- DDR3调试技巧
- xc7k325的FPGA板cadence原理图文件
- xilinx usb器驱动
- hough 变换提取椭圆内有代码
- XILINX SPARTAN-6 元件库 ALTIUM lib
- 3DS文件导入OpenGL并动态显示源码
- GStreamer插件开发指导带目录版
- OpenGL使用Window API绘制矢量字体非常简
- basic_excel excel开源读写库[修正bug]
- NppExport插件-64位
评论
共有 条评论