请教一个创建分层窗口 易语言的截不出来的问题

查看: 1757|回复: 5
请教大家一个问题,关于快照截图的
阅读权限165
在线时间 小时
签到天数:29 天结帖率: (17/29)
xp系统,有个窗口,上面有个超文本浏览框,我想用快照截超文本浏览框上面的图,试了很多方法发现只能把窗口放在桌面可以看到的地方才能用快照截图,但是那个超文本浏览框占的地方很大,电脑几乎不能操作其他东西了,我想把窗口隐藏起来再截图,可以吗?就请教一下,我把窗口拖到桌面边缘,隐藏起来,但是快照截图就变成黑色的了,我想问一下,有没有解决的办法呢,最好还是用快照的命令,可以把窗口整个移到桌面边栏里面还能截图
谢谢大家了
源码给你 最佳给我
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至
可获得加分喔。友情提醒:本版被采纳的主题可在
帖子申请荣誉值,获得 1点 荣誉值,荣誉值可兑换终身vip用户组哦。快捷通道: →
阅读权限70
在线时间 小时
结帖率: (6/6)
源码给你 最佳给我
(3.89 KB, 下载次数: 74)
18:21 上传
点击文件名下载附件
热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻
您可以选择打赏方式支持他
阅读权限90
在线时间 小时
结帖率: (2/2)
占个沙发,其实我也想知道这怎么搞
您可以选择打赏方式支持他
阅读权限10
在线时间 小时
结帖率: (2/2)
偷个便,可不可以截图的瞬间让窗口还原,截图后又最小化?
您可以选择打赏方式支持他
阅读权限120
在线时间 小时
签到天数: 22 天结帖率: (65/87)
&& 额,别看我&&我只是路过
您可以选择打赏方式支持他
阅读权限90
在线时间 小时
结帖率: (2/4)
高大上手机用户
百度 编程网页完整截图
您可以选择打赏方式支持他
精易论坛 - 有你更精彩 /1
由于老师个人时间问题,这是最后一期,明年没有时间再继续教学了!
我们在开发软件的时候往往需要用到多线程,加入多线程学习班,解决各种多线程问题,快速学习,少走弯路!
元旦活动,现在只需699即可参加培训班,老司机开末班车,还不快上车?
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
防范网络诈骗,远离网络犯罪
违法和不良信息举报电话,企业QQ: ,邮箱:
Powered by
粤公网安备 25EXUI开了分层透明,子窗口在别的电脑不能显示,请问大神_易语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:129,927贴子:
EXUI开了分层透明,子窗口在别的电脑不能显示,请问大神收藏
问题的这样的:神不知太无奈,用的EX UI做的界面。因为软件功能太多,我就分了4个子窗口,然后通过他们官方例子,按照哪种模式,让子窗口置父给父窗口。因为父窗口有一个动画效果,所以我就开启了分层透明,那么问题来了,静态编译可以通过。在本机WIN10环境下运行也是没有任何问题的。但是给我朋友做测试的时候,大问题来了。那些子窗口根本显示不出来,找问题找半天没有找出来,后来我把父窗口分层透明关掉,那样之后要显示的子窗口出来了,但是太丑了。。子窗口显示是黑色的。所以请教大神,具体是什么原因,为什么开启了分层透明,在别的电脑运行子窗口不能显示出来!
3D双端东方魔幻网游「大青云」勾魂公测,穿越逆转,封神故事,全新演绎!
低级无人权
字太多不看,帮顶
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或如何解决弹出窗口屏蔽的问题
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
本地安装的拦截工具或者配置将Interwise 弹出窗口拦截,使您无法顺利进入相关事件,怎么办?
&您的电脑中若有以上相关的工具栏,但在地址栏的旁边没有任何的显示。这时,您应该在菜单栏的附近单击鼠标右键,会显示您的电脑中都有哪些工具栏,如下图所示:
您可以取消您不需要运行的工具栏前面的对勾来禁止相关工具的运行。&
如果有上网助手,需要把上网助手中的广告窗口拦截功能取消,如下图所示。
&&(广告拦截-图1)
(取消广告拦截-图2)
“”“”“”
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
XP系统本身自带广告窗口拦截功能,该功能开启状态下,单击网上栏目的时候,会出现如上图的提示,“阻止了一个弹出窗口。要查看此弹出窗口或其他选项,请单击此处…”的提示,您需要单击此处,会有下图中的提示:
您需要单击此处,会有下图中的提示:
选择“总是允许来自此站点的弹出窗口”选项,会弹出如图所示的窗口:使用 Direct2D 绘制分层窗口 - 技术翻译 - 开源中国社区
使用 Direct2D 绘制分层窗口
【已翻译100%】
英文原文:
推荐于 3年前 (共 22 段, 翻译完成于 01-21)
参与翻译&(1人)&:
这是我关于Direct2D的第三篇介绍了,今天主要讲下其无可比拟的互操作性。为了避免繁缛末节的讲述,我们从一个实例入手:层级窗口。相对于windows的其它众多功能。层级窗口并未做相应的更新,因此使用现代图像处理技术时要特别注意,以有效发挥其功效。
本文假定读者具有一定的Direct2D 开发基础。如若不然,请参考本人六月和九月发表的Direct2D开发和绘图的文章 (
&翻译得不错哦!
层次窗口原本只有一些简单的用途。其中最有用的是有效地生成平滑的视觉效果。在只有GDI主导图像生成的时代,这确实是个很好的补充。但在硬件速度已大幅提升的当下,依然在32位的GDI模式中,至今没有显著功能升级来应用微软高性能高质量图像生成平台工具DirectX,使层级窗口不再具有优势。
在用windowSDK生成基于像素的 窗体方面,层次窗口确实独一无二。
&翻译得不错哦!
有两种类型的层次窗口,其区别在于你是否需要基于像素的节点控制或是窗口整体的把控。本文是基于第一种状况的,如果需要基于窗体的控制,只需要在创建窗体后调用SetLayeredWindowAttributes 来设置alpha 值。
Verify(SetLayeredWindowAttributes(
&&windowHandle,
&&0,&//&no&color&key
&&180,&//&alpha&value
&&LWA_ALPHA));
上述代码假定创建窗体可以通过在SetWindowLong 方法调用中设置WS_EX_LAYERED来实现其可扩展性。Figure 1为示例。这样做的好处显而易见,你无须做出任何的更改而由DWM桌面窗体管理器来自动绘制窗体。如果不这样做,所有实现都需要代码实现。如果你现在就在使用Direct2D 或其他什么最新的解析技术,也不会有上述问题!
Figure 1 Window with Alpha Value
&翻译得不错哦!
好的,那现在该怎么继续呢?从基础层面来说,都很直观。首先,完善结构体UPDATELAYEREDWINDOWINFO在其当中完成层次窗体的位置大小以及GDI设置文本内容以完成窗体的展示设置-问题随之而来。DC只是GDI中的概念,对于速度已大幅提升的硬件和DirectX技术来说还是很滞后。等会再详细讨论这个问题。
UPDATELAYEREDWINDOWINFO结构体在WindowsSDK中的文档说明并不完整,想象了它的易用性更别说需要通过一堆指针来定位当前位置。共有五个结构体来完成定位工作。定位要从DC拷贝的bitmap的资源位置。 定位当窗体更新后的新位置。需要拷贝的bitmap 文件大小以及操作窗体的大小:
POINT&sourcePosition&=&{};
POINT&windowPosition&=&{};
SIZE&size&=&{&600,&400&};
&翻译得不错哦!
接下来是BLENDFUNCTION结构体来定义层次窗口如何与桌面互溶。这块虽有很多不同实现的结构体,但通常都是以下模式:
BLENDFUNCTION&blend&=&{};
blend.SourceConstantAlpha&=&255;
blend.AlphaFormat&=&AC_SRC_ALPHA;
AC_SRC_ALPHA常量仅仅表明源位图文件可以支持alpha值设定。
通过设置Alpha值可以完成和SetLayeredWindowAttributes 方法同样的设置窗体透明度的功能。当设置为255时,层次窗体将使用基于像素的alpha 数值,但是还是能够更改到0从而变成全透明窗体,进而实现窗体渐进显示而无需重新绘制窗体。至于为什么将这个结构体命名为BLENDFUNCTION也显而易见了:结构体的结果就反映了可透明化窗体的透明度。
&翻译得不错哦!
最终UPDATELAYEREDWINDOWINFO结构体将所有的信息统一起来:
UPDATELAYEREDWINDOWINFO&info&=&{};
info.cbSize&=&sizeof(UPDATELAYEREDWINDOWINFO);
info.pptSrc&=&&sourceP
info.pptDst&=&&windowP
info.psize&=&&
info.pblend&=&&
info.dwFlags&=&ULW_ALPHA;
除了dwFlags 变量没有在文档中说明外,这段代码的意图应该很直观。如果以前使用过UpdateLayeredWindow 方法那对ULW_ALPHA应该也很熟悉,就是标识混合功能将被启用。
最后,需要向DC提供操作句柄并调用UpdateLayeredWindowIndirect方法来更新窗体:
info.hdcSrc&=&sourceDC;
Verify(UpdateLayeredWindowIndirect(
&&windowHandle,&&info));
搞定。窗体本身不会受到任何WM_PAINT消息。当需要更新或显示窗体时只需要调用UpdateLayeredWindowIndirect方法即可。为了使这部分铺垫代码更方便的使用,在后续文中我将使用图2中的LayeredWindowInfo类将其包装一下.
&翻译得不错哦!
Figure 2 LayeredWindowInfo Wrapper Class
class&LayeredWindowInfo&{
&&const&POINT&m_sourceP
&&POINT&m_windowP
&&CSize&m_
&&BLENDFUNCTION&m_
&&UPDATELAYEREDWINDOWINFO&m_
&&LayeredWindowInfo(
&&&&__in&UINT&width,
&&&&__in&UINT&height)&:
&&&&m_sourcePosition(),
&&&&m_windowPosition(),
&&&&m_size(width,&height),
&&&&m_blend(),
&&&&m_info()&{
&&&&&&m_info.cbSize&=&sizeof(UPDATELAYEREDWINDOWINFO);
&&&&&&m_info.pptSrc&=&&m_sourceP
&&&&&&m_info.pptDst&=&&m_windowP
&&&&&&m_info.psize&=&&m_
&&&&&&m_info.pblend&=&&m_
&&&&&&m_info.dwFlags&=&ULW_ALPHA;
&&&&&&m_blend.SourceConstantAlpha&=&255;
&&&&&&m_blend.AlphaFormat&=&AC_SRC_ALPHA;
&&void&Update(
&&&&__in&HWND&window,
&&&&__in&HDC&source)&{
&&&&m_info.hdcSrc&=&
&&&&Verify(UpdateLayeredWindowIndirect(window,&&m_info));
&&UINT&GetWidth()&const&{&return&m_size.&}
&&UINT&GetHeight()&const&{&return&m_size.&}
表三展示了使用图二中LayeredWindowInfo包装类 和ATL/WTL创建层次窗体的基本结构。需要注意的是,代码中并没有WM_PAINT值所以无需调用UpdateWindow方法。他将会直接调用Render方法进而触发绘图功能并传递DC信息到LayeredWindowInfo当中以完成一次动作。如何完成绘图又从哪里获取到所需的DC信息是比较有意思的地方。
Figure 3 Layered Window Skeleton
class&LayeredWindow&:
&&public&CWindowImpl&LayeredWindow,&
&&CWindow,&CWinTraits&WS_POPUP,&WS_EX_LAYERED&&&{
&&LayeredWindowInfo&m_
&&BEGIN_MSG_MAP(LayeredWindow)
&&&&MSG_WM_DESTROY(OnDestroy)
&&END_MSG_MAP()
&&LayeredWindow()&:
&&&&m_info(600,&400)&{
&&&&Verify(0&!=&__super::Create(0));&//&parent
&&&&ShowWindow(SW_SHOW);
&&&&Render();
&&void&Render()&{
&&&&//&Do&some&drawing&here
&&&&m_info.Update(m_hWnd,
&&&&&&/*&source&DC&goes&here&*/);
&&void&OnDestroy()&{
&&&&PostQuitMessage(1);
&翻译得不错哦!
使用GDI/GDI+
先来看下如何使用GDI/GDI+来实现。首先创建一个使用蓝-绿-红alpha字节顺序模式计算好的32位像素的位图文件。预先计算好的意味着所有的数值都已经乘上了alpha 的值。这对于提高支持alpha 混合现实的图像性能很有帮助,但如果想获取图像初始值就需要逆向操作除去alpha值才行。
用GDI 的术语来说就是32-bpp device-independent bitmap (DIB) 是通过完善BITMAPINFO 结构体后调用CreateDIBSection 方法来实现的(见图表4)
Figure 4 Creating a DIB
BITMAPINFO&bitmapInfo&=&{};
bitmapInfo.bmiHeader.biSize&=&
&&sizeof(bitmapInfo.bmiHeader);
bitmapInfo.bmiHeader.biWidth&=&
&&m_info.GetWidth();
bitmapInfo.bmiHeader.biHeight&=&
&&0&–&m_info.GetHeight();
bitmapInfo.bmiHeader.biPlanes&=&1;
bitmapInfo.bmiHeader.biBitCount&=&32;
bitmapInfo.bmiHeader.biCompression&=&
void*&bits&=&0;
CBitmap&bitmap(CreateDIBSection(
&&0,&//&no&DC&palette
&&&bitmapInfo,
&&DIB_RGB_COLORS,
&&0,&//&no&file&mapping&object
&&0));&//&no&file&offset
&翻译得不错哦!
这里面有很多细节,但和现在的主题没什么关系。这个API的功能历史悠久,但请注意我设置的那个bitmap的高度值是负数。BITMAPINFOHEADER结构体展示的是自顶向下还是自底向上的位图。高度为正数则是自底向上,负数为自顶向下。自顶向下位图的原点在左上角,自底向上的原点在左下角。&
虽不是成文的规定,但在本例中我使用自顶向下的位图模式,这是主流图像处理模式,因此会有较好的互操作性。这样做也会得到正数模式的步展值。计算方法如下:
UINT&stride&=&(width&*&32&+&31)&/&32&*&4;
这会你完全可以通过bits指针来绘制位图了。除非脑子有病,否者总得有一些方法调用去完成绘制功能。但目前GDI提供的方法中并不支持alpha计算模式,因此出现了GDI+.
&翻译得不错哦!
尽管可以直接给GDI+传递位图数据,咱们还是通过创建一个DC来实现该功能,反正在调用UpdateLayeredWindowIndirect方法时还是会用到。通过调用CreateCompatibleDC方法来创建基于桌面的DC内存空间。然后调用SelectObject将位图数据传给DC.图表5中的GdiBitmap包装类实现了上述过程并优化.
Figure 5 DIB Wrapper Class
class&GdiBitmap&{
&&const&UINT&m_
&&const&UINT&m_
&&const&UINT&m_
&&void*&m_
&&HBITMAP&m_oldB
&&CBitmap&m_
&&GdiBitmap(__in&UINT&width,
&&&&&&&&&&&&__in&UINT&height)&:
&&&&m_width(width),
&&&&m_height(height),
&&&&m_stride((width&*&32&+&31)&/&32&*&4),
&&&&m_bits(0),
&&&&m_oldBitmap(0)&{
&&&&BITMAPINFO&bitmapInfo&=&{&};
&&&&bitmapInfo.bmiHeader.biSize&=&
&&&&&&sizeof(bitmapInfo.bmiHeader);
&&&&bitmapInfo.bmiHeader.biWidth&=&
&&&&bitmapInfo.bmiHeader.biHeight&=&
&&&&&&0&-&
&&&&bitmapInfo.bmiHeader.biPlanes&=&1;
&&&&bitmapInfo.bmiHeader.biBitCount&=&32;
&&&&bitmapInfo.bmiHeader.biCompression&=&
&&&&&&BI_RGB;
&&&&m_bitmap.Attach(CreateDIBSection(
&&&&&&0,&//&device&context
&&&&&&&bitmapInfo,
&&&&&&DIB_RGB_COLORS,
&&&&&&&m_bits,
&&&&&&0,&//&file&mapping&object
&&&&&&0));&//&file&offset
&&&&if&(0&==&m_bits)&{
&&&&&&throw&bad_alloc();
&&&&if&(0&==&m_dc.CreateCompatibleDC())&{
&&&&&&throw&bad_alloc();
&&&&m_oldBitmap&=&m_dc.SelectBitmap(m_bitmap);
&&~GdiBitmap()&{
&&&&m_dc.SelectBitmap(m_oldBitmap);
&&UINT&GetWidth()&const&{
&&&&return&m_
&&UINT&GetHeight()&const&{
&&&&return&m_
&&UINT&GetStride()&const&{
&&&&return&m_
&&void*&GetBits()&const&{
&&&&return&m_
&&HDC&GetDC()&const&{
&&&&return&m_
&翻译得不错哦!
我们的翻译工作遵照 ,如果我们的工作有侵犯到您的权益,请及时联系我们
虽然我是 linux 支持者,但实话说,linux 的 xlib 结构比这个复杂百倍. 而且要用对不能只看看 API 文档,必须深入理解 x 的运作机制才行.2005 年 jon smirl 写过一篇 The state of Linux graphics, 基本就是各种互相不兼容的 API 在一个热气腾腾的大锅里熬.我因为深有感触, 所以曾经动手把它翻译成中文, 底层是架构问题,很难搞.上层库好一点点.现在重新搞基于 OpenGL/ES 的底层, wayland 什么的, 顺利的话应该能够和 Win/Mac 匹敌了.总的来说, linux 的图形, 目前就是渣, 但是希望在前!
有 opengl 和 compositor 一切都很简单
有 opengl 和 compositor 一切都很简单waylang 使用的的是 opengl 吧?
有 opengl 和 compositor 一切都很简单waylang 使用的的是 opengl 吧?wayland 不使用 opengl, wayland compositor 使用 opengl es现开发的项目,持久层:hibernate业务层:spring表现层:没有使用什么struts框架,使用了本公司的一个框架,并且JSP中使用的C标签。现在拿页面数据的保存和显示,来说一下我所要请教的问题。一、背景环境:(一)保存1& 利用公司的框架,会自动把页面数据绑定到formbean(formbean中的数据对应于多个表中的数据)2& 利用公司的框架,会执行相应的业务类,把formbean中的值分到所对应的各个PO中,并把这些PO存放到list列表中。3& 然后调用业务服务类,把list列表中的各个PO,调用DAO的相应方法持久化。(二)显示1& 利用公司框架,执行相应的业务类调用DAO中相应的方法,进行数据查询。假如是通过userid查询获得用户信息,方法返回为User对象(即PO),并把此对象存在request的attribute中(以便通过页面的C标签获得)。2& 通过C标签获得User对象的各个属性值显示在JSP页面上。二、请教问题公司前一个小项目的工作形式,如上面所说的保存和显示。现感觉有点问题,请指点:A& 数据显示:在页面显示时通过C标签直接获得PO对象,并显示其各个属性值是否合适?是否应在业务类中把查询得到的PO对象进行封装,把PO对象的数据对应封装到Formbean中,然后把此Formbean对象存在request的attribute中,最后通过C标签显示在页面上。B& 数据保存:我现在采用的这种方式是否有问题?现在想,无论是保存还是显示,是否都不应直接操作对应于数据库的PO?如果不应该,我是否应在业务层加入BO,查看了一些资料,感觉BO和PO没有什么区别,那我要怎么做呢?为了使项目针对需求的改动(如表中加入一字段、页面显示格式变化等),能有更大的适应性,也就是最少的代码改动,并且只在一层做改动即可。由于项目经验不足,所以不知如何做,请banq指点。十分感谢!!
你这个框架可以说比数据库驱动框架要前进一步,应该说处于数据库和对象模型之间的中间道路,你的PO实际是数据库的影子,只不过以对象形式存在,必须先有数据库设计才会有PO,这实际还是数据库驱动设计思路,比较符合那些传统过程思维的人使用。对象PO还是服从于数据库,数据库设计是父母,PO对象是儿子,是这样先后关系。现在真正的系统应该是PO是父母,数据库才是儿子,应该倒过来。那么问题来了,数据库做父母时,我们知道如何先创造数据库,这可以凭我们所谓的直觉和经验(还有一些号称理论的数据库建模);现在改为必须先设计对象,如何从需求中将对象找出来,这方面就需要对象建模,如本站介绍的图 Evans 纲举目张,当你将PO作为主要纲抓起来以后,它在各层实现以及关系就自然解决,这方面实际案例可以看看基于jdonFramework的Jivejdon3[该贴被banq于日 09:53修改过]
首先谢谢banq的回复,最近也一直在看你的关于领域驱动设计的文章。现在,还是有一些不太明的的地方,请赐教: 1& 假如我现在是以对象建模的方式工作,那么我在前台是否可以获得查询所得到的Model对象?这种方式是否合适? 2& 你所提供的案例Jivejdon3 中Model会实现或是继承com.jdon.controller.model包中的接中和类,而com.jdon.controller.model下的内容是保密的,所以我不能完全理解这个思想。你能发一个小的案例给我吗,利用此思想从设计建模的图到最后的代码,不知我的要求是否过分,十分感谢。请发到我的邮箱: ,对于你的指点我不胜感激。
建议增加BO层,BO和PO是具有本质区别的,前者是面向对象分析的结果产物,后者是基于数据库分析结果的产物,虽然他们的表现形式可能类似。
如果你的系统达到一定复杂程度,你就会发现BO和PO开始不一样了,BO更接近抽象层次,PO只是具体存储实现的载体,比如一个BO(抽象业务概念)可能有多种存储的设计方式,不同的方式可能导致PO设计不同,如果只是单表,那么BO和PO样子确实很类似,但是最好预留这层,否则后面系统的模型复杂时,到后面PO就和真正的抽象概念越来越远,一个相同的抽象概念,可能客户不同,需求不同造成Po设计不同,造成系统复用性减低。
当然,系统还不是特别复杂的情况下,可以考虑把PO层和BO层结合,放到一个层次,复杂的BO通过组合多个PO实现,但是概念上一定要清楚,他们有本质区别。
to leadyu :谢谢你的答复,还有一些不太明白的地方,请指点。1& 我们系统中的PO是利用MyEclipse针对数据库中的表自动生成的。你所说的“比如一个BO(抽象业务概念)可能有多种存储的设计方式,不同的方式可能导致PO设计不同”具体是什么意思,PO难道不是和库表对应的吗?能举个更具体的例子吗?2& “复杂的BO通过组合多个PO实现”,你能举个复杂BO的例子的源码吗?非常感谢。
最佳分辨率
OpenSource
Code & 2002-20

我要回帖

更多关于 易语言 窗口分层 的文章

 

随机推荐