• 大小: 187KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: 其他
  • 标签: UG  NX  Opengl  hook  

资源简介

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个文件信息

评论

共有 条评论