c# 退出 GetDesktopWindow() 返回的全屏

蕭笙默 2020-06-23 04:12:18
如题 有大佬知道的吗?
...全文
11247 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
蕭笙默 2020-06-28
  • 打赏
  • 举报
回复
引用 6 楼 wanghui0380 的回复:
既然大胆猜测了,那么我们在小心验证一下 单独搜索“ActiveView.Activate” 发现另外文章的代码是 //Activate MapControl. mapCtrl.ActiveView.Activate(mapCtrl.hWnd); 可见这里其实就是激活并将地图绘制在那个控件上
大哥 好像是 这样的 但是 我用的是Arcmap 加载项 Add-in 不知道怎么取获取mapCtrl 能帮我找找吗
蕭笙默 2020-06-28
  • 打赏
  • 举报
回复
引用 8 楼 wanghui0380 的回复:
因为我不玩acrmap,不过大体上查了一下这add-in方式。 相当于给acrmap写一个插件,那么还是基于程序员思维方式。既然是写插件,他们插件和主程序之间必然会有交互,他必然共享一些数据和接口。 查看一下acr的文档 http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#//00230000002w000000 说明他通过IApplication和你交互,这里就有 Read-only property hWnd The handle of the application's window. 即主窗体的句柄。(不过这个主窗体句柄释放就是绘制UI句柄我就不敢说了) 大概的方式为 ArcMap.Application.hwnd -----------arcmap主窗体句柄
谢谢 大哥 为我解答
wanghui0380 2020-06-28
  • 打赏
  • 举报
回复
因为我不玩acrmap,不过大体上查了一下这add-in方式。 相当于给acrmap写一个插件,那么还是基于程序员思维方式。既然是写插件,他们插件和主程序之间必然会有交互,他必然共享一些数据和接口。 查看一下acr的文档 http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#//00230000002w000000 说明他通过IApplication和你交互,这里就有 Read-only property hWnd The handle of the application's window. 即主窗体的句柄。(不过这个主窗体句柄释放就是绘制UI句柄我就不敢说了) 大概的方式为 ArcMap.Application.hwnd -----------arcmap主窗体句柄
wanghui0380 2020-06-24
  • 打赏
  • 举报
回复
既然大胆猜测了,那么我们在小心验证一下 单独搜索“ActiveView.Activate” 发现另外文章的代码是 //Activate MapControl. mapCtrl.ActiveView.Activate(mapCtrl.hWnd); 可见这里其实就是激活并将地图绘制在那个控件上
wanghui0380 2020-06-24
  • 打赏
  • 举报
回复
//因为我自己不玩argmap,所以大概从程序员的角度黑盒猜测这个代码含义 activeView.Activate(GetDesktopWindow()); 从一个程序员的思维来看,这个恐怕是强制重绘UI到某个UI 句柄上 所以我们可以大胆猜测一下,其实他不一定需要GetDesktopWindow(),你可以是你当前显示控件的句柄 GetDesktopWindow()是全屏桌面,自然他绘制到全屏了 如果这个句柄不是全屏桌面,而是你自己的控件句柄呢?
wanghui0380 2020-06-24
  • 打赏
  • 举报
回复
GetDesktopWindow理论上只是获取句柄,至于你说的卡,这应该是arcmap特有的东西 我不玩arc,所以现百度一下 https://www.bbsmax.com/A/mo5kgB7K5w/ 看得到这个个代码,后半部分在不停得强制切换焦点和刷新view,说明argmap内部实现恐怕有特殊的实现
蕭笙默 2020-06-24
  • 打赏
  • 举报
回复
引用 2 楼 wanghui0380 的回复:
GetDesktopWindow?? 这个是win32api,只是获取一个句柄。不需要退。(有你没你句柄都存在,你只是获取一下)
大佬 就是我在Arcmap里面做了个制图出图的加载项,然后就是保存不了MapScale ,网上说调用GetDesktopWindow(),就可以保存了,也确实可以,但就是出完图之后,在Arcmap软件页面滚动滚轮,就全屏显示地图了,一卡一卡得样子,不能移动啥的,试了好久才发现要先切换视图,Arcmap才会恢复原来得样子,不会出现全屏。大佬 有代码能将出现全屏的这个去掉吗?
wanghui0380 2020-06-24
  • 打赏
  • 举报
回复
GetDesktopWindow?? 这个是win32api,只是获取一个句柄。不需要退。(有你没你句柄都存在,你只是获取一下)
蕭笙默 2020-06-24
  • 打赏
  • 举报
回复
大佬们 人呢

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧