明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6158|回复: 10

[图形系统] 如何将CAD窗口显示在VB.NET窗体下呀?

  [复制链接]
发表于 2009-6-28 23:31 | 显示全部楼层 |阅读模式

看到http://www.objectarx.net/bbs/viewthread.php?tid=1754论坛发布的CAD窗体显示在C#窗体下,

如何将其显示在VB.NET下呀?

网上有关于CAD窗体显示在VB窗体下的代码,但是在VB.NET中无法正常显示,

望高手给予帮助,谢谢!

发表于 2009-6-29 12:54 | 显示全部楼层

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Runtime.InteropServices;

using Autodesk.AutoCAD.Interop;

namespace WindowsFormsApplication1
{
   

   

    public partial class Form1 : Form
    {
        AcadApplication app;

        public Form1()
        {
            InitializeComponent();
        }


        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr SetParent(IntPtr child, IntPtr newParent);

        [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
        public static extern IntPtr GetParent(IntPtr hWnd);


        private void Form1_Load(object sender, EventArgs e)
        {
            app = (AcadApplication)Marshal.GetActiveObject("AutoCad.Application");
            SetParent(new IntPtr(app.HWND), this.Handle);
        }
    }
}

 楼主| 发表于 2009-6-29 13:51 | 显示全部楼层

这是C#的,

有没有VB.NET的呀??

谢谢了

发表于 2009-6-29 14:26 | 显示全部楼层
  1. Imports System
  2. Imports System.Runtime.InteropServices
  3. Imports Autodesk.AutoCAD.Interop
  4. Public Class Form1
  5.     Dim app As AcadApplication
  6.     <DllImport("user32.dll")> _
  7.     Friend Shared Function SetParent(ByVal hWndChild As Integer, ByVal hWndNewParent As Integer) As Integer
  8.     End Function
  9.     <DllImport("user32.dll")> _
  10.     Friend Shared Function GetParent(ByVal hWnd As Integer) As Integer
  11.     End Function
  12.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  13.         app = CreateObject("AutoCad.Application.17.1")
  14.         SetParent(New IntPtr(app.HWND), Me.Handle)
  15.         app.Visible = True
  16.     End Sub
  17.     Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
  18.         SetParent(New IntPtr(app.HWND), IntPtr.Zero)
  19.     End Sub
  20. End Class

 楼主| 发表于 2009-6-29 17:51 | 显示全部楼层

哈哈,谢谢LZH741206老兄

另,怎么联系您呀?

希望能够跟您合作,进行技术指导,有报酬的。哈哈

谢谢了

我的QQ:75003956

MSN:xwjljh@hotmail.com

发表于 2011-7-16 19:22 | 显示全部楼层
本帖最后由 zhangzhenxin197 于 2011-7-16 19:25 编辑

复制了版主的代码到vb.net里,
第三行有错误,说   “ 未定义类型  AcadApplication”
第五行  Imports Autodesk.AutoCAD.Interop  也显示错误。

请教怎么解决啊?
我用的是cad2007.     vb.net2008   。
是不是要引用什么啊?

急切盼望版主和各位高人的解答,
万分感谢!

发表于 2011-7-17 12:27 | 显示全部楼层
zhangzhenxin197 发表于 2011-7-16 19:22
复制了版主的代码到vb.net里,
第三行有错误,说   “ 未定义类型  AcadApplication”
第五行  Imports A ...

好像是要引用acax17enu
在C:\Program Files\Common Files\Autodesk Shared
資料夾下
发表于 2011-7-17 12:31 | 显示全部楼层
引用 AutoCAD 2007 Type Library 之后,
上面2个问题解决了,
但是又出现  “无法创建 ActiveX 组件”错误
如何解决?急盼大侠帮忙解答
发表于 2011-7-17 12:36 | 显示全部楼层
刚才又试了下,把第13行   app = CreateObject("AutoCad.Application.17.1")
改成   app = CreateObject("AutoCad.Application.17")
就解决了。把解决的过程也贴上来,希望和我一样的初学者少走弯路。
哎,我们这些菜鸟,一个小小的问题自己要摸索好几天。
希望高手来指导下啊。

发表于 2011-7-17 12:40 | 显示全部楼层
然后,又如何让cad窗体在vb.net窗体下缩放呢?以及如何把cad放进vb窗体中的容器中呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 12:42 , Processed in 0.846337 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表