位置: 编程技术 - 正文

WinForm中UnityWebPlayer屏蔽右键菜单

编辑:rootadmin

推荐整理分享WinForm中UnityWebPlayer屏蔽右键菜单,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

百度到的解决方案: 鼠标右键的BUG 1).3D模型基本操作都是鼠标右键按下以后,拖动鼠标可以旋转模型视角,但是WPF加载后的UnityWebPlayer控件存在一个BUG:右键菜单。 2).网上有很多方法去除右键菜单的问题.但都是在网页中去除,UnityWebPlayer封装好的控件还是会携带右键菜单.经过几番周折,也没有直接在控件里去除右键菜单的问题.在网上,所有的方法都是在网页中修改JS代码解决右键菜单的问题.但是WPF是没有办法修改JS代码的.因为我们不需要用到Untiy3D发布后的html文件.那怎么解决这个问题呢?我的方式是截取鼠标右键的点击,抬起,按下三个事件,在截取的同时,向模型中发送鼠标消息. public override bool PreProcessMessage(ref Message msg) { switch (msg.Msg) { case 0 this.SendMessage("ThiredViewCamera", "RightMouseButtonDown", null); this.SendMessage("FirstViewCamera", "RightMouseButtonDown", null); this.SendMessage("Main Camera", "RightMouseButtonDown", null); this.Focus(); return true; case 0 this.SendMessage("ThiredViewCamera", "RightMouseButtonUp", null); this.SendMessage("FirstViewCamera", "RightMouseButtonUp", null); this.SendMessage("Main Camera", "RightMouseButtonUp", null); return true; case 0 return true; } return base.PreProcessMessage(ref msg); } }

经试验失败,无法拦截鼠标消息。而且要修改场景,不知道怎么修改。 原本是想在AxUnityWebPlayer以及其父类AxHost身上找到突破口的,网页中有个disableContextMenu属性可以设置,想找到对应的代码。经过一番尝试,没有任何成果。

换换思路。

WinForm中UnityWebPlayer屏蔽右键菜单

思路是用Api控制使右键菜单隐藏。

通过观察消息,发现左右键单击时都有个WM_PARENTNOTIFY消息,其字符串表示中有个“WM_RBUTTONDOWN”以及“WM_LBUTTONDOWN”来区分左右键。用Spy&#;&#; ,发现右键单击后会有个 Unity.ContextSubMenu 窗口。API 函数 ShowWindow有点效果,但不理想,Minisize无法完全隐藏。用MoveWindow(0, 0, 0, 0, true); 可以完全隐藏掉,但是会留下一个透明的阴影。为了解决这个阴影花了点时间,无论Invalidate,Refresh,UpdateWindow都没有效果。

因为鼠标点击后阴影就消失了,尝试用api模拟鼠标点击事件,但是MouseDown和MouseUp的中间必须有个间隔时间,不然会导致主界面卡一下的bug(这个没找到原因)。这会导致闪一下,最好是能马上消失,而且没副作用。

总之就是让界面刷新,用MoveWindow修改主界面位置,之间修改主界面的Width,尝试无果。

也不知怎么就加了个MoveWindow(0, 0, , , true);居然就好了。

/// <summary> /// 封装U3d WebPlayer控件,屏蔽ocx中的鼠标右键显示菜单功能 /// </summary>

public class UnityWebPlayer : AxUnityWebPlayer { [DllImport("user.dll", CharSet = CharSet.Auto)] public static extern int MoveWindow(IntPtr hwnd, int x, int y, int nWidth, int nHeight, bool bRepaint); [DllImport("user")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); private const int WM_PARENTNOTIFY = 0x; protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_PARENTNOTIFY: HideContextMenu(m); break; } base.WndProc(ref m); } /// <summary> /// 是否隐藏右键菜单,默认还是要显示的,new出来后要设置一下 /// </summary> public bool DisableContextMenu { get; set; } private bool _menuHided; private void HideContextMenu(Message m) { if (_menuHided) return; if (DisableContextMenu == false) return; if (m.ToString().Contains("WM_RBUTTONDOWN")) { if (_menuHided == false) { new Thread(() => { while (_menuHided == false) { HideContextMenu(); } }).Start(); } } } private void HideContextMenu() { IntPtr handle = FindWindow("Unity.ContextSubmenu", null); if (handle != IntPtr.Zero) { MoveWindow(handle, 0, 0, , , true); //这个必须要,不然会有阴影,而且怎么Refresh(),Inalidate()都没法去掉 MoveWindow(handle, 0, 0, 0, 0, true); _menuHided = true; } } }

Unity3d shader之次表面散射(Subsurface Scattering) 次表面散射是一种非常常用的效果,可以用在很多材质上如皮肤,牛奶,奶油奶酪,番茄酱,土豆等等初衷是想做一个牛奶shader的,但后来就干脆研究

UV动画/纹理融合/法线贴图/过程纹理 让VS支持Shaderlab语法VS中并没有Shaderlab的语法高亮,好在网上已经有个插件来支持语法的高亮和拼写提示,从这里下载插件,双击安装就好了。Shaderlab

unity笔记 1.如果遇到一运行unity就暂停的情况,只要把Console面板的ErrorPause关闭就可以了2.如果我们想在场景中沿着世界坐标移动物体,可以点击如下按钮把本地坐

标签: WinForm中UnityWebPlayer屏蔽右键菜单

本文链接地址:https://www.jiuchutong.com/biancheng/380130.html 转载请保留说明!

上一篇:封装 UnityEngine.Debug.Log 为Dll ,游戏发布关闭 Log 减少性能消耗(封装是什么意思?)

下一篇:Unity3d shader之次表面散射(Subsurface Scattering)(unity的shader用法)

  • 印花税的应税凭证名称怎么填写
  • 一般纳税人注销库存需要补交税吗
  • 销售佣金计入什么会计科目
  • 企业出售商铺需要预缴增值税吗
  • 实缴资本需要存放多久
  • 食品增值税专用发票可以退税吗?
  • 维修企业主营项目有哪些
  • 有两种税率的如何填申报表
  • 增值税期末留抵退税政策实施力度
  • 非居民工资薪金个人所得税计算方法
  • 预缴增值税可以在电子税务局操作吗
  • 财付通支付备付金还到信用卡里怎么办
  • 建筑业暂估成本表
  • 收到免税发票怎么做账务处理
  • 电子承兑汇票没开通能接受吗
  • 今年补缴去年的税汇算清缴吗
  • 开了红字发票印花税怎么处理?
  • 城建税本月计提下月缴纳怎么算
  • 买入返售金融资产什么意思
  • 物流车辆挂靠账务怎么处理?
  • 支付给个人的小票怎么写
  • 企业收到政府补贴100000元业务题
  • 原始凭证日期大写要求
  • vmware11安装win10
  • 房租租赁公司,对方还没付租金,怎么挂帐
  • wifi网速太慢了怎么回事
  • cmos是bios参数设置的
  • 工业企业汽车发生费用处理
  • mtask.exe - mtask是什么进程 有什么用
  • flex布局使用
  • 延期收款利息如何缴税
  • php解析原理
  • 户外电源需要要充电吗
  • php 路由实现
  • 残保金的计费依据
  • wordpress修改数据库
  • 社保清算是怎么回事
  • 公司账本凭证保存期限
  • 酒店低值易耗品怎么摊销
  • 企业资本包括
  • 当月销售次月开票怎么做账
  • 增值税纳税申报类型有哪些
  • 酒店购买天然气开票的摘要写什么
  • 实收资本是什么科目
  • 坏账准备需要计提增值税吗
  • 制造费用主要包括哪些内容
  • 存货过期处理怎么做分录
  • 行政事业单位拨付给企业的财政补助款用交增值税吗
  • 固定资产出售账面价值计入什么科目
  • 房地产企业暂估成本所得税汇算
  • 现金折扣与商业折扣的计算
  • 小规模纳税人销售货物税率是多少
  • 以非货币形式出资应办理什么手续
  • 财务报表中预收账款
  • 所有进项增值税怎么申报
  • 工程款结清确认书模板
  • 已经做账发票退款怎么办
  • 不含税价格怎么算公式(1+3%)
  • 备查账簿有没有固定的格式
  • sqlserver数据库定时任务
  • win10系统如何添加扫描仪
  • winxp怎么打印
  • 服务器centos6.8安装教程
  • centos6.5如何安装
  • win7guest账户有密码吗
  • mac硬盘的常见问题及解决
  • 如何知道自己的邮箱号
  • win8 更改电脑设置
  • onenotewindows10
  • hc off line什么意思
  • unity unity3d
  • shell脚本 ftp
  • api/home/getmyregion
  • jquery导入
  • 电子税务局存款账户备案
  • 广东省国家税务局网上办税大厅
  • 湖南国税电子税务局网
  • 临时搭建的活动叫什么
  • 河北航天信息技术有限公司官网
  • 印尼贸易政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设