类似flashget的浮动窗口的实现

 作者:苍竹先生下载源代码一、简介:象flashget、迅雷、BT等都有浮动窗口,能详细地显示下载的详细信息,该类型的窗口有一下几个特点:1、窗口无标题栏,窗口的大小跟位图一样大。2、前端显示。3、在客户区内按下鼠标左键可以随意拖动窗口的位置。4、可以改变窗口的透明度。5、双击可以将主窗口激活,并显示。下面就该类型窗口的各个功能实现予以说明。二、代码的详细说明:1、窗口无标题栏,窗口的大小跟位图一样大。建立一个对话框资源,设置为POPUP类型,并取消Title Bar属性。在上面插入一个图片控件,设置为导入的位图。//得到位图CBitmap m_Bitmap;HBITMAP hBitmap = m_Logo.GetBitmap();ASSERT(hBitmap);//得到位图的信息m_Bitmap.Attach(hBitmap);BITMAP bmp;m_Bitmap.GetBitmap(&bmp);//得到位图的大小int nX = bmp.bmWidth;int nY = bmp.bmHeight;//根据位图的大小移动窗口MoveWindow(0,0,nX,nY);m_Logo.MoveWindow(0,0,nX,nY);CenterWindow();2、前端显示。//通过SetWindowsPos函数将窗口前端显示。::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);	3、在客户区内按下鼠标左键可以随意拖动窗口的位置。响应WM_HITTEST函数,当鼠标左键按下并在客户区内,返回HTCAPTION,欺骗Windows,达到跟在标题栏拖动窗口一样的效果。UINT CFloatWnd::OnNcHitTest(CPoint pt)
{UINT nHitTest = CDialog::OnNcHitTest(pt);if (nHitTest == HTCLIENT && ::GetAsyncKeyState(MK_LBUTTON) < 0) // 如果鼠标左键按下,GetAsyncKeyState函数的返回值小于0nHitTest = HTCAPTION;return nHitTest;
}4、改变窗口的透明度。将窗口样式设置为WS_EX_LAYERED,并调用SetLayeredWindowAttributes函数来改变窗口的透明度。WS_EX_LAYERED可能没定义,我们可以直接取值0x80000。//加入WS_EX_LAYERED扩展属性SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);BOOL SetLayeredWindowAttributes(HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags);
hwnd是要改变的窗口,当dwFlags为LWA_ALPHA(0x2)时,crKey参数没用,bAlpha为透明度,取值在0~255之间。该函数要从User.dll中载入。//更新窗口透明度的代码,其中iTransparent为透明度。
void CFloatWnd::OnUpdateTransparent(int iTransparent)
{HINSTANCE hInst = LoadLibrary("User32.DLL");if(hInst){typedef BOOL (WINAPI *SLWA)(HWND,COLORREF,BYTE,DWORD);SLWA pFun = NULL;//取得SetLayeredWindowAttributes函数指针 pFun = (SLWA)GetProcAddress(hInst,"SetLayeredWindowAttributes");if(pFun){pFun(m_hWnd,0,iTransparent,2);}FreeLibrary(hInst); }
}5、双击可以将主窗口激活并显示。由于WM_HITTEST消息的影响,我们双击鼠标的时候产生的是WM_NCLBUTTONDBLCLK消息,而不是WM_LBUTTONDBLCLK消息。void CFloatWnd::OnNcLButtonDblClk(UINT nFlags, CPoint point) 
{// TODO: Add your message handler code here and/or call default	CWnd *pParent = GetParent();ASSERT(pParent);//显示窗口if(!pParent->IsWindowVisible())pParent->ShowWindow(SW_SHOW);//置窗口到最前面pParent->SetForegroundWindow();CDialog::OnNcLButtonDblClk(nFlags, point);
}关于调节透明度的Slider使用,也写了一些代码,一并贴出来,供大家参考。void CMainDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{// TODO: Add your message handler code here and/or call default//得到Slider的位置int iCurPos = m_Slider.GetPos();	//得到最大值、最小值,及页大小int nMax = m_Slider.GetRangeMax();int nMin = m_Slider.GetRangeMin();int nPageSize = m_Slider.GetPageSize();switch(nSBCode){case SB_LINELEFT:if(iCurPos > nMin)iCurPos --;break;case SB_LINERIGHT:if(iCurPos < nMax)iCurPos ++;break;case SB_PAGELEFT:if(iCurPos > nMin)iCurPos = max(nMin,iCurPos - nPageSize);break;case SB_PAGERIGHT:if(iCurPos < nMax)iCurPos = min(nMax,iCurPos + nPageSize);break;case SB_THUMBTRACK:iCurPos = nPos;break;case SB_THUMBPOSITION:iCurPos = nPos;break;		}//设置Slider位置m_Slider.SetPos(iCurPos);//更新透明度pFloatWnd->OnUpdateTransparent(iCurPos);CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}至于该窗口的右键菜单,窗口的显示与隐藏,程序的退出等简单代码我就不多介绍了。三、该程序在Windows xp sp2和Visual C++6.0下编译调试成功。 

转载于:https://www.cnblogs.com/65876951/articles/vc1.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html笔记(二)html4+css2.0(元素类型、css精灵、宽度自适应、BFC、浏览器相关概述、css统筹)

大标题小节一、元素类型1. 元素分类2. 置换和非置换元素3. 元素类型转换二、css精灵三、宽高自适应1. 宽度自适应2. 高度自适应3. 最小高度自适应4. 高度塌陷及解决办法5. 元素的高度自适应屏幕的高度四、BEC概念应用1. 常见定位方案2. 触发BFC3. BFC特性及应用4. BFC概念五、浏…

25.C# 异步调用Web服务

1.创建Web服务 1.1VS新建ASP.Net空Web应用程序 1.2添加Web服务新建项 1.3添加GetWeather方法和相关类 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.EnterpriseServices;namespace WebServ…

css中单位的使用

css中许多的属性都需要添加长度&#xff0c;而长度一般由数字和单位构成&#xff0c;如1px,1.5em,2vh&#xff1b;也可以省略单位&#xff0c;如line-height:1.5,表示行高为字体大小的1.5倍&#xff1b; 长度单位一般也分为相对长度和绝对长度。 &#xff08;一&#xff09;绝…

Office开发程序集版本及部署问题

Office 开发遇到了OFFICE 2003和OFFICE 2007程序集兼容性的问题&#xff0c;使用OFFICE 11.DLL只能适应OFFICE 2003,Office 12.dll 能够兼容Office 2003和Office 2007。 以前部署时&#xff0c;是建议客户安装Office 2003。 今天看到《开发Office的一些应用部署后出现找不到程序…

OSGi:进入微服务架构的门户

在构建可扩展&#xff0c;可靠的分布式系统的背景下&#xff0c;“模块化”和“微服务体系结构”这两个术语如今经常出现。 众所周知&#xff0c;Java平台本身在模块化方面很弱&#xff08; Java 9将通过交付Jigsaw项目来解决这一问题&#xff09;&#xff0c;从而为OSGi和JBos…

新闻实时分析系统-Kafka分布式集群部署

Kafka是由LinkedIn开发的一个分布式的消息系统&#xff0c;使用Scala编写&#xff0c;它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。 1.下载Kafka并安装 1&#xff09;下载Apache版本的Kafka。 …

html笔记(五)2D、3D、3D动画

大标题小节一、2D1. css3 渐变的语法及应用2. 动画过渡&#xff1a;transition3. 2D转换属性&#xff1a;transform二、3D1. 3D转换2. 3D视距3. 3D翻转方法4. 3D位置移动5. 3D缩放三、3D动画1. keyframes2. 动画属性animation一、2D 1. css3 渐变的语法及应用&#xff1b; &a…

微信内置浏览器点击“返回”关闭窗口

场景&#xff1a;开发微信内的H5活动&#xff0c;需要进行微信授权&#xff0c;我们采用的是在一个静态页面&#xff08;只有js&#xff0c;所以是个空白页面&#xff09;内进行授权&#xff0c;授权后再跳转到活动主页。 客户需求&#xff1a;从活动主页返回时不显示这个授权…

dhl:mvc用户登陆身份验证

登录&#xff1a;[HttpPost]public ActionResult LoginSuccess() {bool rememberMe Request["rememberMe"].Contains("true"); UserAccount account ia.GetUserAccountByUserName(brief.UserName);//验证成功string usercookie account.UIN ",&qu…

基于上下文的访问控制

拓扑图 配置步骤 1配置端口ip地址&#xff0c;并检测连通性 服务器 ping pc端 服务器 telnet R3 2配置命令 R3(config)# ip access-list extended go R3(config-ext-nacl)# deny ip any any //此ACL目的是隔绝外网流量 R3(config-ext-nacl)# exit R3(config)# interface s0…

使用Gradle将JAR工件发布到Artifactory

因此&#xff0c;我浪费了一两天&#xff08;投资&#xff09;只是为了了解如何使用Gradle将JAR发布到本地运行的Artifactory服务器。 我使用Gradle Artifactory插件进行发布。 我迷失了无穷循环&#xff0c;包括各种版本的各种插件和执行各种任务。 是的&#xff0c;我之前阅读…

js 基础

1.注释 css: /* 这是一行单行注释 *//* 这个注释分散 在了多个物理 行上面 */  html: <!-- 注释内容 -->  JS: // 2.<a>标签中导航到同一个界面的不同位置  <p><a href"#C4">查看 Chapter 4。</a></p> <h2><…

Combox使用的一些技巧

这些天做一个小型的CMS&#xff0c;也就几张表&#xff0c;用WCFLINQ2SQLSilverlight这种方式开发的&#xff0c;对最常用的控件如DataGrid,DataForm以及Toolkit里其它一些控件的用法有了一定的了解&#xff0c;同时参照JV9的教程&#xff0c;把Silverlight里的验证机制仔细的学…

HTML+css实现的效果

一、鼠标划过效果 1. 类似电子书的图书效果2. 绝对定位实用案例 二、锚点的应用 三、css精灵&#xff08;图片整合&#xff09; 用一张图片写出一串电话号码用一张图片写出导航栏的滑动效果 四、后台管理布局 单飞布局双飞布局后台页面管理布局 五、css3部分 在一个div…

[LeetCode] Longest Substring Without Repeating Characters 最长无重复字符的子串 C++实现java实现...

最长无重复字符的子串 Given a string, find the length of the longest substring without repeating characters. Example 1: Input: "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3. Example 2: Input: "bbbbb&qu…

限制input 内部字数

当输入字数多于限定值后&#xff0c;输入框显示不出来多出的字符 对于input来说&#xff0c;innerHTML 不能查询和更改&#xff0c;只能用value 来 size 属性规定输入字段的宽度 size 属性定义的是可见的字符数 <html> <body> <input type"text" on…

使用自动机的Lucene新的邻近查询

最简单的Apache Lucene查询TermQuery匹配包含指定术语的任何文档&#xff0c;无论该术语出现在每个文档中的何处 。 使用BooleanQuery可以将多个TermQuery组合在一起&#xff0c;并完全控制哪些术语是可选的&#xff08; SHOULD &#xff09;和哪些是必需的&#xff08; MUST &…

很口语blood-aholic

很口语blood-aholic blood-aholic 嗜血。aholic可译为&#xff1a;工作狂posted on 2010-10-22 22:32 Johnny_Z 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/Johnny_Z/archive/2010/10/22/1858752.html

关于HTML的面试题-html4/css2篇

1. 什么是HTML&#xff1f;2. 用过什么调试器&#xff08;浏览器&#xff09;&#xff0c;编辑器&#xff1f;3. HTML4.0 和 HTML5.0 的区别&#xff1f;4. 手写 HTML 代码5. 元素类型有哪些&#xff08;display有哪些属性&#xff09;&#xff1f;块元素、行元素和行内块元素的…

二阶段冲刺(五)

昨天通过查询fragment&#xff0c;得到另一种使用方法&#xff0c;那就是一旦图表初始化之后就不再重新加载。但自己画的饼状图太麻烦了&#xff0c;我决定换一种思路。 今天我要使用github上开源的Android画图工具&#xff1a;MPAndroidChart。 转载于:https://www.cnblogs.co…