資源簡介
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的醫院點滴系統
評論
共有 條評論