wowan1314 发表于 2013-4-7 11:48:19

【求助】 关于制作自己的全屏工具

本帖最后由 wowan1314 于 2013-4-7 11:58 编辑

喜欢全屏CAD作图。但已知的全屏工具均不太满意,所以有此想法.想要的全屏:无标题栏,无菜单栏,有工具栏,有状态栏,有系统任务栏。

已知的全屏工具缺点。
1.CAD自带的,仅无标题栏,但工具栏没了,系统任务栏没了
2.ET带的全屏,有工具栏,有系统任务栏,无标题,无菜单。但也没状态栏了!
3.有个外挂的全屏软件,什么都没了。


通过加载高飞鸟分享的那个VLX...可调用API函数。令我看到了希望。


但缺存在一点BUG.   故发帖求达人帮忙完善。
1、打开多个图纸的情况下。在图纸间切换一下,菜单栏就又出现了。
2、从CAD界面切换到其他文件夹,再切换回来时候,系统的任务栏也被遮挡了。。

;;; 隐藏CAD菜单栏和标题栏                                             
;;; ====================================================================
(defun C:Ccc (/ DWX app hwnd menu)
;; Create a DynamicWrapperX instance and register win32 API functions.
(setq DWX (vlax-create-object "DynamicWrapperX"))
(and (null DWX) (exit))
(vlax-invoke DWX 'Register "USER32" "SetWindowLong" "i=lll" "r=l") ;注册SetWindowLong函数
(vlax-invoke DWX 'Register "USER32" "GetWindowLong" "i=ll" "r=l") ;注册GetWindowLong函数
(vlax-invoke DWX 'Register "USER32" "SetMenu" "i=ll" "r=l");设置菜单
(vlax-invoke DWX 'Register "USER32" "GetMenu" "i=l" "r=l");取得当前菜单句柄
;;Hide the title and menubar
(setq app (vlax-get-acad-object))   ;当前CAD程序
(setq hwnd (vla-get-hwnd app))   ;CAD窗口句柄
(ShowTitle DWX hwnd nil)      ;隐藏标题栏
(setq menu (vlax-invoke DWX 'GetMenu hwnd))                           ;获得程序的菜单句柄
(and (/= menu 0) (setq hMenu menu))   ;此处应把hMenu设置为全局变量
(vlax-invoke DWX 'SetMenu hwnd 0)   ;(vlax-invoke DWX 'SetMenu hwnd hMenu) 恢复菜单栏
;; Release object
(vlax-release-object app)
(vlax-release-object DWX)
(princ)
)
(defun ShowTitle (DWX hwnd Show / oldStyle)    ;如果show 为t 那么显示,否则不显示
(setq oldStyle(vlax-invoke Dwx 'GetWindowLong hwnd -16))   ;GWL_STYLE -16
(if Show
    (if (zerop (logand oldstyle 12582912))    ;WS_CAPTION 12582912 C00000
      (vlax-invoke DWX 'SetWindowLong hwnd -16 (+ oldstyle 12582912))
    )
    (if (/= 0(logand oldstyle 12582912))    ;WS_CAPTION 12582912 C00000
      (vlax-invoke DWX 'SetWindowLong hwnd -16 (- oldstyle 12582912))
    )
)
)

wowan1314 发表于 2013-6-8 10:17:54

方案1、会api的朋友帮忙改改上面的代码。

方案2、窗口正常化。然后隐藏标题栏,通过vla-put-WindowTop改变窗口位置。
          比如据顶边-6.这样就到达隐藏菜单栏的作用。但是这个函数只能接受正整数,-6不接受。
         但是手动移动是可以移动成--负值的。

方案3、也是按照2的思路。CAD的界面在手动设置好后。以后打开都是默认的。
          那么是否说CAD窗口界面数据是保存在注册表中呢!
          找到窗口界面数据在注册表中的位置,看看能不能直接把它改成需要的数值。?

方案1已经不抱希望了,方案二 估计这个函数就是不接受负值,也没希望。

就剩下方案3了。   有谁知道的还请指导,指导。 感谢

注册 发表于 2013-6-9 07:45:33

wowan1314 发表于 2013-6-8 10:17 static/image/common/back.gif
方案1、会api的朋友帮忙改改上面的代码。

方案2、窗口正常化。然后隐藏标题栏,通过vla-put-WindowTop改 ...

你不是不倒腾lsp了吗,你这个我也需要啊,fullscreen不是太理想

GamIng 发表于 2016-6-17 09:05:04

wowan1314 发表于 2013-6-8 10:17 static/image/common/back.gif
方案1、会api的朋友帮忙改改上面的代码。

方案2、窗口正常化。然后隐藏标题栏,通过vla-put-WindowTop改 ...

居然还有大师不会!这么久了大师折腾出来了么?

xman00 发表于 2019-5-17 07:50:44

不知道大师有进展没,其实我个人比较关心系统任务栏的隐藏。

alexmai 发表于 2019-5-18 09:29:36

换个高分辨显示器,估计就不需要这个了:D

happy336 发表于 2019-10-27 08:29:19

谢谢分享,支持
页: [1]
查看完整版本: 【求助】 关于制作自己的全屏工具