明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6082|回复: 6

VLISP如何调用API隐藏CAD标题栏(已解决)。

  [复制链接]
发表于 2012-8-20 18:34:33 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 wowan1314 于 2012-8-21 12:15 编辑

通过加载高飞鸟分享的那个VLX...可调用API函数。

不过对于API完全不了解,搞了一天没整明白,,

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=81335 这个是VB编的。

;;;;CAD标题栏、菜单栏 的隐藏与显示(不行)
|;
      (vlax-invoke wrap 'Register "USER32" "SetWindowLong" "i=lll" "r=l");注册SetWindowLong函数
      (vlax-invoke wrap 'Register "USER32" "GetWindowLong" "i=ll" "r=l");注册GetWindowLong函数
      (setq win_style (vlax-invoke wrap 'GetWindowLong hwnd -16))
      ;;(vlax-invoke wrap 'SetWindowLong hwnd -16 0000);隐藏标题栏。。
SetWindowPos 更新?


想做个隐藏标题栏与菜单栏的程序。求指导。

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-8-20 18:34:34 | 显示全部楼层
本帖最后由 highflybir 于 2012-8-21 02:17 编辑


  1. (vl-load-com)
  2. ;;; ====================================================================
  3. ;;; 隐藏CAD菜单栏和标题栏                                               
  4. ;;; ====================================================================
  5. (defun C:Ccc (/ DWX app hwnd menu)
  6.   ;; Create a DynamicWrapperX instance and register win32 API functions.
  7.   (setq DWX (vlax-create-object "DynamicWrapperX"))
  8.   (and (null DWX) (exit))
  9.   (vlax-invoke DWX 'Register "USER32" "SetWindowLong" "i=lll" "r=l") ;注册SetWindowLong函数
  10.   (vlax-invoke DWX 'Register "USER32" "GetWindowLong" "i=ll" "r=l") ;注册GetWindowLong函数
  11.   (vlax-invoke DWX 'Register "USER32" "SetMenu" "i=ll" "r=l")  ;设置菜单
  12.   (vlax-invoke DWX 'Register "USER32" "GetMenu" "i=l" "r=l")  ;取得当前菜单句柄
  13.   ;;Hide the title and menubar
  14.   (setq app (vlax-get-acad-object))     ;当前CAD程序
  15.   (setq hwnd (vla-get-hwnd app))     ;CAD窗口句柄
  16.   (ShowTitle DWX hwnd nil)      ;隐藏标题栏
  17.   (setq menu (vlax-invoke DWX 'GetMenu hwnd))                           ;获得程序的菜单句柄
  18.   (and (/= menu 0) (setq hMenu menu))     ;此处应把hMenu设置为全局变量
  19.   (vlax-invoke DWX 'SetMenu hwnd 0)     ;(vlax-invoke DWX 'SetMenu hwnd hMenu) 恢复菜单栏
  20.   ;; Release object
  21.   (vlax-release-object app)
  22.   (vlax-release-object DWX)
  23.   (princ)
  24. )
  25. (defun ShowTitle (DWX hwnd Show / oldStyle)    ;如果show 为t 那么显示,否则不显示
  26.   (setq oldStyle  (vlax-invoke Dwx 'GetWindowLong hwnd -16))   ;GWL_STYLE -16
  27.   (if Show
  28.     (if (zerop (logand oldstyle 12582912))    ;WS_CAPTION 12582912 C00000
  29.       (vlax-invoke DWX 'SetWindowLong hwnd -16 (+ oldstyle 12582912))
  30.     )
  31.     (if (/= 0  (logand oldstyle 12582912))    ;WS_CAPTION 12582912 C00000
  32.       (vlax-invoke DWX 'SetWindowLong hwnd -16 (- oldstyle 12582912))
  33.     )
  34.   )
  35. )


点评

隐藏后,切换几下,发现连下面的系统的任务栏也覆盖了。。。。。??  发表于 2012-8-21 12:36

评分

参与人数 1明经币 +1 收起 理由
wowan1314 + 1 很帅气,我自己弄的都头大了。

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-8-22 12:09:03 | 显示全部楼层
本帖最后由 wowan1314 于 2013-4-6 20:36 编辑
highflybir 发表于 2012-8-20 18:34

发现问题了。。
1、打开多个图纸的情况下。  在图纸间切换一下,菜单栏就又出现了。
2、从CAD界面切换到其他文件夹,再切换回来时候,系统的任务栏也被遮挡了。。
  请高飞鸟有时间再帮忙调整下。。
回复

使用道具 举报

发表于 2013-4-3 16:33:57 | 显示全部楼层
highflybir 发表于 2012-8-20 18:34

向highflybir学习
回复

使用道具 举报

发表于 2013-4-23 23:46:03 | 显示全部楼层
发现这个调用api的方法好多了。。。就是要注册个控件麻烦了点
回复

使用道具 举报

发表于 2013-4-24 00:06:34 | 显示全部楼层
这种方法对高版本的CAD是改不了的
回复

使用道具 举报

发表于 2014-12-9 14:38:03 | 显示全部楼层
一直想找这么个通用函数,对cAD界面进行设置,让二次开发显得更专业,顶起来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 00:55 , Processed in 0.190787 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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