透明窗口

【MFC】进度条:Progress Control控件 01、目录 文章目录01、目录02、Progress Control介绍03、Progress Control相关函数04、Progress Control示例4.1 功能:按照固定步长一次增加14.2 功能:按固定步长增加,并动态更新百分比4.3 功能:搭配定时器,动态更新显示进度条05、小结 02、Progress Control介绍 进度条对于我们而言,想必都很熟悉了,安装软件、游戏加载都会有进度条的身影。 今天我们就来学习学习:Progress Control控件——进度条。 如下所示: 关于 阅读详情
    最近做了一个透明窗口,实现这样的功能:一个窗体完全透明,上面有几个图标,每个图标可以点击,但是透明窗体必须挡住后面的窗体,即禁止后面的窗体激活。此时必须使用两个窗体实现,一个为主窗体(TransparencyDlg),100%透明(采用LWA_COLORKEY过滤白色),上面有图标。另外一个窗体(CoverDlg)盖在它上面,99%透明(采用LWA_ALPHA实现),防止背后窗体激活。核心代码如下:

BOOL CTransparencyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
//  执行此操作
SetIcon(m_hIcon, TRUE);   // 设置大图标
SetIcon(m_hIcon, FALSE);  // 设置小图标
// TODO: 在此添加额外的初始化代码
CCoverDlg *pDlg = new CCoverDlg();
pDlg->m_hTargetWnd = GetSafeHwnd();
pDlg->Create(IDD_DLGCOVER);
pDlg->ShowWindow(SW_SHOW);

HWND hWnd = GetSafeHwnd();
::SetWindowLong(hWnd, GWL_EXSTYLE, ::GetWindowLong(hWnd, GWL_EXSTYLE)|WS_EX_LAYERED|WS_EX_TOOLWINDOW);
::SetLayeredWindowAttributes(hWnd, RGB(255,255,255), 0, LWA_COLORKEY);

return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CTransparencyDlg::OnPaint()
{
if (!IsIconic())
{
  CDialog::OnPaint();

  RECT rect;
  ::GetWindowRect(::GetDesktopWindow(), &rect);
  ::MoveWindow(GetSafeHwnd(), 0, 0, rect.right-rect.left
   , (UINT32)((rect.bottom-rect.top)*0.04), TRUE);
}
}

HBRUSH CTransparencyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO:  在此更改 DC 的任何属性
if (nCtlColor==CTLCOLOR_DLG || nCtlColor==CTLCOLOR_STATIC)
{
  return CreateSolidBrush(RGB(255, 255, 255));
}

// TODO:  如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}

void CTransparencyDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
TRACE2("CTransparencyDlg::OnLButtonDown(%d,%d)/r/n", point.x, point.y);

RECT rect;
HWND hFather = GetSafeHwnd();
HWND hNextChild = ::GetWindow(hFather, GW_CHILD);
while (::IsWindow(hNextChild))
{
  if (::GetParent(hNextChild) == hFather
   && (::GetWindowLong(hNextChild, GWL_STYLE)&WS_VISIBLE) != NULL)  //子窗体有效且可见
  {
   ::GetWindowRect(hNextChild, &rect);
   if(::PtInRect(&rect, point))
   {
    ::SendMessage(hNextChild, WM_LBUTTONDOWN, (WPARAM)nFlags, MAKELPARAM(point.x, point.y));
    break;
   }
  }
  hNextChild = ::GetWindow(hNextChild, GW_HWNDNEXT);
}

CDialog::OnLButtonDown(nFlags, point);
}

void CTransparencyDlg::OnStnClickedPicture()
{
// TODO: 在此添加控件通知处理程序代码
TRACE("CTransparencyDlg::OnStnClickedPicture/r/n");
}

BOOL CCoverDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: 在此添加额外的初始化代码
HWND hWnd = GetSafeHwnd();
::SetWindowLong(hWnd, GWL_EXSTYLE, ::GetWindowLong(hWnd, GWL_EXSTYLE)|WS_EX_LAYERED|WS_EX_TOOLWINDOW);
::SetLayeredWindowAttributes(hWnd, 0, 1, LWA_ALPHA);

return TRUE;  // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}

void CCoverDlg::OnPaint()
{
if (!IsIconic())
{
  CDialog::OnPaint();

  RECT rect;
  ::GetWindowRect(::GetDesktopWindow(), &rect);
  ::MoveWindow(GetSafeHwnd(), 0, 0, rect.right-rect.left
   , (UINT32)((rect.bottom-rect.top)*0.04), TRUE);
}
}

void CCoverDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
TRACE2("CCoverDlg::OnLButtonDown(%d,%d)/r/n", point.x, point.y);
::SendMessage(m_hTargetWnd, WM_LBUTTONDOWN, (WPARAM)nFlags, MAKELPARAM(point.x, point.y));

CDialog::OnLButtonDown(nFlags, point);
}
MFC总结(12) -- 在mfc中使用线程 更新Progress Control(1) 实现效果: 1、创建一个mfc工程,并添加Progress Control,将属性中的 Vetical 设置为True (这样Progress Ctrl是竖着 而不是横着),将ID修改为IDC_THRED_PROGRESS。 添加一个Static Text,ID设置为IDC_SHOETEXTSTATIC,Caption设置为0 2、给Progress Control绑定一个变 阅读详情

相关推荐

实例081 渐变颜色的进度条(MFC对话框)

(3)向对话框中添加一个进度条控件,设置控件的Border和Smooth属性,关联变量m_Progress,其类型为CColorProgress。(注意在dlg.cpp文件中引用相应头文件#include "ColorProgress.h")一个新进度条控件,设置控件的Border和Smooth属性,关联变量m_ProgressOriginal,其类型为CProgressCtrl。(5)处理主窗口的WM_TIMER消息,在该消息的处理函数中设置进度条的显示进度。根据本实例,读者可以:自绘进度条控件。

weixin_45794330的博客 2690

MFC_Process control 进度条

MFC class : CProgressCtrl 中文名:进度条 成员函数: GetPos() SetPos() GetRange32() SetRange32() 1.开始工作吧 添加控件:Progress ctrol button 2. 添加进度条的控件变量 3.对话框初始化函数,初始化进度条信息

hoppss 3016

WPF 透明窗口可以调整尺寸(通过拖拽窗口边缘)

WPF 透明窗口可以调整尺寸(通过拖拽窗口边缘) 本文遵循 CC 4.0 BY-SA 版权协议 作者:絮大王 通过这篇文章,我们可以实现: 让WPF的透明窗口可以通过拖拽窗口的边缘,自由的调整尺寸。 我们可以通过拖拽窗口的上方,来移动窗口。 我们可以禁止窗口拖到屏幕边缘时自动最大化。 还可以等比例的改变窗口的大小。 还可以等比例的改变窗口中控件的大小 ...

xu1295921025的博客 2695

MFC进度条编程控制

1. 进度条的主要功能    进度条控制(Progress Control)主要用来进行数据读写、文件拷贝和磁盘格式等操作时的工作进度提示情况,如安装程序等,伴随工作进度的进展,进度条的矩形区域从左到右利用当前活动窗口标题条的颜色来不断填充。   进度条控制在MFC类库中的封装类为CProgressCtrl,通常仅作为输出类控制,所以其操作主要是设置进度条的范围和当前位置,并不断地更

wangzhiyang925的专栏 1503

MFC设置透明窗口

在MFC中,通过设置透明窗口,可以得到有对应透明度的窗口: 如果是对话框,则在OnInitDialog中加上以下代码: SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,   GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0X80000);  HINSTANCE hInst = LoadLibrary

曾伟的专栏 2288

Qt透明窗口鼠标穿透问题及解决办法

让窗口上有东西即可解决这个问题。 本文仅作为一个思路,肯定还是有更好的解决办法的。

zy1551的博客 4046

QML透明窗口以及普通窗口(QML Window)

QML 透明窗口以及普通窗口的应用 Window(窗体) 透明窗口 Window { title: qsTr("一个完全透明的窗口") //窗口标题 width: 640 //宽度 height: 480 //高度 visible: true //是否可见 color: "#00000000" //窗口背景色 //#00000000 为窗口透明 //QML支持black 等颜色样式(没有#) //QML支持#11cfff 等颜色样式 /

zeor0的博客 3907

易语言实现透明窗口的完整源码解析

透明窗口技术是用户界面设计中的高级技巧,它能够创造性的解决用户在界面显示上的诸多需求。这种技术的实现方式能够让窗口背景呈现出半透明或者全透明的效果,使得窗口底下的内容能够被部分或完全透出。这种技术在许多场景中都有广泛的应用,例如在Windows操作系统中,任务管理器的窗口就是利用透明窗口技术实现的。透明窗口技术不仅提升了软件界面的美观度,还增强了用户体验,使得应用程序能够更加直观地与用户交互。透明窗口技术的实现涉及到编程语言、图形用户界面库以及操作系统的API调用等多方面的知识。

weixin_34456923的博客 1323

C/C++实现透明窗口程序

本文介绍几种在Windows环境下通过C/C++使用WIN32API实现透明窗口的方法。如有问题,请私信或者在评论区评论。

QQVQQ的博客 8095

创建透明窗口API示例:Linux和Windows

本文还有配套的精品资源,点击获取 简介:API在软件交互中扮演关键角色,特别是在创建透明窗口以提升用户界面美观性和沉浸感方面。本文将分别介绍在Linux和Windows操作系统下利用API创建透明窗口的技术和方法。Linux系统使用Xlib和X11相关函数实现透明效果,而Windows则依赖于SetLayeredWindowAttributes和CreateWindowEx...

weixin_36078669的博客 1675

基于MFC的透明窗口实现完整教程

在Windows图形界面开发中,实现窗口的透明效果是提升用户体验和界面美观度的重要手段。MFC(Microsoft Foundation Classes)作为封装了Windows API的C++类库,提供了对窗口透明效果的支持。本章将从Windows窗口机制的基本原理入手,深入解析MFC中实现透明窗口的关键技术,包括窗口样式、扩展样式以及GDI绘图机制等。通过本章学习,读者将掌握透明窗口的核心概念,为后续动手实践打下坚实基础。

weixin_36078669的博客 1115

Qt 视频窗口的鼠标操作,使用透明窗口覆盖视频窗口,可在透明窗口上使用鼠标做类似区域截屏操作。

使用Qt控件(例如QWidget或QLabel)做视频播放,当需要在视频上画框或者画点线做标记时,一般无法直接在播放的控件上画出。在正在播放的视频窗口,画一个小于视频窗口的区域,然后截取该区域保存至图片,是一个很常见的抓拍需求。 这个时候的思路是在正在播放视频的窗口叠加一层窗口,将该叠加窗口设置为透明,设置一些基本窗口属性,重写其paintEvent()事件。当鼠标进入视频窗口后,显示这个透明窗...

explorer114的专栏 4790

精通WPF:实现透明窗口与透明边框设计

透明边框是指窗口边框部分不仅允许光线穿透,而且在视觉上不显示实线边框,而是一种模糊或半透明的视觉效果。不同于传统边框以固定颜色和样式展示,透明边框可以和窗口背景相融合,提供一种视觉上的过渡效果。在用户界面设计中,透明对话框经常被用于提示用户输入或是显示额外信息。通过WPF,我们可以利用透明窗口技术来实现这一效果。首先,创建一个新的WPF窗口,然后按照以下步骤进行配置:设置窗口背景色为透明(Background属性设为null在窗口XAML中添加属性,允许窗口透明。

weixin_42476987的博客 1463

Gtk透明窗口全攻略

引用自: http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1256.entry Gtk透明窗口全攻略         如图所示,左边是普通的 ubuntu 桌面,右边是我建立的三个 gtk 特殊窗口,其中包含了:异形窗口(上),透明窗体(中),不同区域不同透明度的窗口(下)。基本包括...

Linux Job 890

EDEM在农业机械设计中的实战应用:以谷物收割机优化为例

本文以谷物收割机优化为例,详细阐述了EDEM离散元仿真软件在农业机械设计中的实战应用。通过构建精准的“数字谷物”模型与农机部件动态界面,利用GPU加速完成大规模颗粒系统仿真,有效诊断并解决了籽粒夹带损失与清选负荷不均等田间难题,实现了从仿真分析到田间验证的设计优化闭环。

weixin_29256771的博客 110

SAP前台处理:业务伙伴维护(客户主数据和供应商主数据)之基础视图 <BP>

这里主要讲解BP业务伙伴主数据中和财务相关的一些内容,包括基础视图数据,采购视图数据,销售视图数据,公司代码视图数据; S4统一了供应商和客户,从事务代码上:不再使用FD01和FK01进行维护,而使用事务代码BP统一维护;

SAP.David.Gao的博客 3462

Qt视频播放窗口叠加透明窗口

本人在做一个视频监控项目时,遇到了透明窗口无法透明的问题,特记录下解决过程

秦时小 3677

LM Studio中文版零基础入门:从安装到模型下载的保姆级教程(附国内镜像源配置)

本文提供LM Studio中文版的零基础入门教程,涵盖从软件安装、中文界面切换到国内镜像源配置的全流程。特别针对模型下载速度慢的问题,详细介绍了如何通过修改配置文件使用国内镜像站,并推荐适合新手的入门模型及硬件配置建议,帮助用户快速上手本地大模型运行。

pz890123456的博客 2611

win32 创建一个透明窗口

#pragma once #include "stdafx.h" #include "resource.h" class TransparentWnd { public: TransparentWnd(); ~TransparentWnd(); BOOL Create(__in DWORD dwExStyle, __in_opt LPCWSTR lpWindowName, __in DWORD dwStyle, __in int X, __in int Y, __in int nWidth.

liyuye的专栏 3549

官网下载STM32系列芯片的产品选型手册

官方提供了产品选型手册,便于工程师们进行产品选型。 那么,在哪下载"产品选型手册"呢?请看下文。

Weber Zhou 的博客 1万+

2026华为OD机试真题 11月4日 新系统 【汽车出行路线重复检测】

华为OD机试真题 新系统【汽车出行路线重复检测】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【汽车出行路线重复检测】多语言题解。

qq_45776114的博客 397

与大家讨论一下在视频上叠加透明窗口后闪烁的问题,求指导!

公司作了限制,代码和图片都发不出来,请大家耐心往下看。       RT,当视频处于播放状态时,在视频上画一些图案,如多边形,矩形等,对画出的图形还要实现拖动操作。所以需要响应BUTTONUP,BUTTONDOWN 消息来画图,MOUSEMOVE消息来进行图像拖动。   既定的方案是在录像上叠加一个完全透明的窗口,把鼠标画图的操作在内存设备中响应,完了再画到透明窗口上去,透明窗口只画了多

andy41020955的专栏 2423

3.1 5分钟搞定!Claude Code接入国产大模型完整教程(附代码)

摘要 本文提供了一份5分钟快速为Claude Code接入国产大模型的完整教程。首先介绍了系统环境要求(Windows/macOS/Linux、Node.js 18+、Python 3.8+),然后详细说明了三种安装Claude Code的方式(npm/yarn/pnpm)。重点讲解了两种国产大模型接入方案:通义千问(推荐)和文心一言,包括获取API密钥、安装SDK、创建MCP服务器、配置Claude Code等步骤。文中提供了详细的代码示例和配置文件模板,确保开发者能快速完成国产大模型的接入,降低使用成本

yonggeit的博客 7926
上一篇: Vmware上的使用管道接收串口输出
下一篇: 根据def编译lib
Matrix_Designer
博客等级 码龄16年 58粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值