不规则对话框的又一实现

VC++实现不规则窗体界面(对话框窗口) 前面的博文我已经讲了如何实现自绘制的窗口,这一篇也是接上前面的主体继续讲讲如何通过图片+自绘制的方式实现不规则窗体界面。其实现方式有两种,一种是准备两张位图,一张显示用的主图片,另一个张是将周围区域去除的蒙板图片。另一种是只准备一张图片,需要去除部分用同一种颜色,如黑色(不能与主体部分颜色相同,如果相同则会导致其他部分也会去除掉),图片加载绘制时把需要透明的像素去掉即可,其实现方式的步骤如下: ... 阅读详情

不规则对话框的又一实现
作者:
代码运行效果图如下:



此不规则对话框的实现应用了一个重要的位图对话框类——CBitmapDialog ,通过灵活运用,可以实现任意形状的对话框。

一、CBitmapDialog 简介:

CBitmapDialog从CDialog派生并封装了根据位图形成任意形状对话框的功能,类的实现也非常简单,主要是一些加载位图、设置透明色等操作,最关键的函数是MakeWindowRgn, 它根据位图生成所需的区域对象, 然后调用SetWindowRgn将窗口设置成需要的形状,MakeWindowRgn函数的具体代码请参考本文配套的代码。

二、CBitmapDialog类的使用

下面介绍CBitmapDialog类的使用过程:
1. 运行VC,建立基于对话框的应用程序 BitmapDlg。设置对话框的属性,去掉边框和标题栏。
2. 插入位图。(在插入->资源->选 Bitmap)
3. 在CBitmapDialogDlg 的BOOL CBmpDlgDlg::OnInitDialog() 中添加如下代码:

LoadBitmap(IDB_BITMAP1);//加载位图
SetTransparent (TRUE);
SetTransColor (RGB(0,0,0));//去掉形状的颜色设置
SetStaticTransparent (TRUE);
SetClickAnywhereMove (TRUE);//鼠标是否能拖动窗体。

4. 将 CBitmapDialogDlg 的基类改为 CBitmapDialog,并将更改相应的消息映射。

请大家都来试一试吧!

VC++ MFC不规则窗体实战:气泡对话框实现与优化指南 在桌面应用开发中,用户界面(UI)的视觉体验直接影响软件的专业度和用户友好性。传统的矩形窗口虽然功能完整,但往往显得呆板。通过Windows GDI(图形设备接口)和窗口消息机制,开发者可以突破系统默认框架,实现不规则窗体,从而创建更具个性和吸引力的界面形态。这项技术的核心价值在于提升品牌辨识度和用户体验,尤其适用于需要突出显示或引导用户注意力的场景,如提示框、聊天窗口和新手引导。本文以经典的VC++ MFC框架为例,深入探讨实现气泡对话框这一具体应用。通过对比区域法和分层窗口法两种主流方案,详细解析了如何 阅读详情

相关推荐

ENVI不规则裁剪和植被覆盖度估算

ENVI实现不规则裁剪 **方法:**将不规则的Shp面状数据在ENVI中打开,然后转成ENVI自己的格式,然后转成ROI最后执行裁剪。 步骤: 1、打开栅格数据:通过File——OPEN IMAGE 2、打开矢量数据:通过FILE——OPEN VECTOR或者VECTOR——OPEN VECTOR,选择文件类型SHAPEFILE,选择矢量文件,注意在弹出的IMPORT VECTOR FILES ...

啦噜啦噜 2919

QT编码问题之不规则对话框的实现

qt中实现不规则对话框有两种简单方式,一种是调用绘图函数自行绘制,一种是用qt的style sheet实现。

cuglifangzheng的专栏 839

MFC 不规则窗口 SetWindowRgn

有时候,我们需要使用到不规则窗口,比如一个圆形的对话框,或者一个三角形的对话框,这个时候,我们就可以通过使用SetWindowRgn来设置对话框的形状。 其实,当我们不设置窗口形状的时候,windows默认设置窗口形状为矩形了。 可以再OnInlitDialog中添加下列代码: CRgn rgn;     //建立一个CRgn  rgn.CreateEllipticRgn(50,50,20

曾伟的专栏 2411

VC中实现不规则对话框(窗口)

这里说的不规则窗口指的是,在一般的矩形窗口的内部扣掉一片(如矩形),剩下的部分成为一个新的窗口。 当然,新的窗口不包括已扣掉的部分。   在对话框的OnInitDialog() 或 CWnd派生类的OnCreate 中添加代码    CRect rect1;  Get

pjl1119的专栏 2163

Qt不规则窗体的实现

关于使用Qt制作不规则窗体方法的文档,包含Qt3和Qt4两种实现方法的源码演示。感觉在Qt里便这种GUI特效比在MFC里要容易的多,大家可以对比看看哈,Qt的代码只需要几十行就搞定了,经试用过了,源码在Ubuntu里编译有效,但是在win7里不行,运行的程序会有一个很难看的边框,去不掉,Qt最终毕竟是Linux的产物吧。

NRF24L01模块的5个常见问题及解决方案:从信号干扰到功耗优化

本文深入探讨NRF24L01无线模块在STM32开发中的5大常见问题及解决方案,包括通信距离优化、数据丢失排查、电源噪声抑制、SPI通信故障处理以及低功耗设计。通过代码示例和电路图分析,提供实用的优化策略,帮助开发者提升无线通信的稳定性和效率。

weixin_28256233的博客 226

MFC 做不规则对话框

根据图片颜色值来做不规则对话框     外圈红色部分会被透掉,效果如下:       所以这张图片就不会显示了,越简单越好       声明一个成员变量:CBitmap   m_bmpDraw;  在OnInitDialog()加载图片:m_bmpDraw.LoadBitmap(IDB_BG_USERINFO);   //这个函数最好在OnInitDialog()调用

shaojiang216的专栏 1425

从零到一:龙芯杯参赛全攻略(含北理工学长经验PDF、B站培训视频与开源代码合集)

本文详细介绍了龙芯杯全国大学生计算机系统能力大赛的参赛全攻略,包括资源整合、技能树构建、团队协作和避坑指南。提供北理工学长经验PDF、B站培训视频与开源代码合集,帮助参赛者从零基础到站上领奖台。重点解析如何高效获取优质资源、避开新手常见陷阱及构建可落地的学习路径,助力普通学生系统学习CPU设计。

weixin_26802933的博客 542

CBitmapDialog 的使用

                      CBitmapDialog 的使用在所有步骤之前,先添加按钮各个状态所需的位图资源。 1   在对话框应用程序中添加Button1(ID为IDC_BUTTON1)。在属性的Style标签下选择Owner  draw即可,不需要选择Bitmap属性!  2  在程序中定义一个CBitmapButton成员变量bmButton。不能使用ClassWizard

Amoon100的专栏 2753

USB HID虚拟电池:Windows零驱动电源状态模拟方案

虚拟电池是一种在硬件测试与功耗分析中替代真实电池、实现可控电源状态注入的关键技术。其核心原理是通过标准USB HID协议(特别是UPS设备类)向操作系统上报可编程的AC/DC状态、剩余电量、容量参数等,绕过内核驱动限制,达成毫秒级响应与跨Windows版本兼容。该技术显著提升SoC能效验证、电池健康度校准及低电量行为触发等场景的可重复性与精度。本文基于CH554微控制器实现符合HID UPS规范的物理层虚拟电池设备,支持零驱动安装、USB原生识别与实时参数调控,适用于笔记本平台功耗建模、电源管理策略验证及自

weixin_35755188的博客 355

LM Studio 模型加载与转换实战指南:从GGUF格式到本地部署

本文提供了使用LM Studio加载与转换GGUF格式大语言模型的完整实战指南。详细阐述了为何GGUF格式是本地部署的最佳选择,并逐步指导用户如何将非GGUF模型(如Transformers格式)转换为GGUF格式,以及在LM Studio中进行加载、配置GPU卸载等关键优化,最终实现流畅的本地离线对话体验。

weixin_29061425的博客 924

部分透明,异形窗口

VC++使用CRgn 创建了一个部分透明的不规则窗体,编译并运行本例程序,右上角的小圆圈为透明部分。大致思路是:不显示窗体的某一部分区域,露出窗体下面对应的画面,这样就达到了该部分透明的效果。CRgn可以构造任意形状的一个窗体区域,包括在窗体中间挖一个洞。而SetWindowRgn(HWND hWnd,HRGNhRgn,BOOL bRedraw)函数将一个窗口区域hRgn 分配给窗口hWnd,系统

a3125504x的博客 881

python实现边缘检测Canny算子 (附完整源码)

python实现边缘检测Canny算子 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 457

VC不规则窗口实现—位图区域裁剪

既然默认创建的窗口是矩形区域,只要把不想显示的区域透明化,剩下的不就是不规则窗口了吗?!接下来所谓的窗口透明化,我们直接使用CRgn类来实现创建、裁剪和合并区域的功能,然后再使用SetWindowRgn函数来进行整个窗体的区域绘制。     不规则窗口,顾名思义,就是窗口的形状不是长方形、正方形或者圆形,而是一些不规则的图形。例如我们常常看到的一些可设置皮肤的窗口,机器人形状,五角星图形窗口一样等等

沉森心与思考同行 2240

计算机视觉与深度学习 | Matlab实现ORBSLAM2(附完整代码)

================================================ 博主github:https://github.com/MichaelBeechan 博主优快云:https://blog.youkuaiyun.com/u011344545 ================================================ 代码阅览 效果图 代码 imdsLeft = imageDatastore('C:\MichaelSpace\matlabworks

尘世冰封的专栏 1525

基于STM32、HAL库的IP5356M快充协议芯片简介及驱动程序设计

@param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。

corlin6688的博客 1223

Qt实现不规则窗体

Qt实现不规则窗体

m0_60440984的博客 1578

物联网通信中NB-IoT、Cat.1、LTE-M该如何选择?

首先我们要确定我们产品的关键需求,例如:我们的设备是否对数据传输速率有较高的要求,有较高要求我们就需要选择较高传输速率的Cat.1来开发我们的产品。同时关于产品性能方面,我们对功耗、延迟、可靠性也会有所要求,例如我们的产品为移动端产品,不方便布线以及安装电源,那我们就会采用电池供电的方式,所以在选择时可以优先考虑低功耗产品,最终结合其他需求选择出合适的协议。首先,我们需求的产品是不同的,我们需要根据产品需求或项目需求来进行选择,NB-IoT、Cat.1、Cat.M都有属于自己的优势。

a1809032425的博客 1216

css 对话框阴影,科技常识:css实现不规则图形的阴影(如对话框)

今天小编跟大家讲解下有关css实现不规则图形的阴影(如对话框) ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关css实现不规则图形的阴影(如对话框) 的相关资料,希望小伙伴们看了有所帮助。在日常开发中会使用带箭头的弹出对话框,有时为了美观或者突出,会添加一个阴影。由于图形不规则且可能是由多个元素拼接而成的,这样box-shadow属性可能不能满足需求。这里推荐一个类似的属性,filte...

weixin_39816946的博客 594

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

QT基础之不规则窗体

介绍了如何使用setMask函数实现不规则窗体

墨1024 1041

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

不规则对话框的制造

用VC++实现异形窗口.   大连铁道学院(116028)李文辉   随着Microsoft凭借Windows在操作系统上取得的巨大成绩,Windows用户界面也日益成为业界标准。统一的界面给广大用户对应用软件的学习与使用带来了很大方便。但每天都面对同一副面孔,日久天长难免会产生一些厌倦,开发一些“离经叛道”,一改Windows应用程序千篇一律的“标准”界面,一定会给你带来一种清新的感觉。

ChampionLai 3391

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

不规则窗体实现

      异形窗口的实现一般有两种方法:1、SetWindowRgn() 2、UpdateLayeredWindow()。第一种方法很通用,但是由于计算机表达Rgn的局限,做出的界面时常有毛边而影响效果。UpdateLayeredWindow只实用于32位带alpha通道的图片,由于Windows直接拿图片与桌面进行叠加透明处理,所以窗口边缘的毛边一般可通过阴影消除掉。使用UpdateL

潜行 6728

CSS3绘制不规则图形(一)

由于近期的项目中出现了不规则的边框和图形, 所以只好提前先温习一下,以前收集的一些CSS3绘制的图形。。。样式绘制的图形比图片的性能要好,体验更佳。废话不多说,我们直接看效果:1、三角形系列(三角形、倒三角、左三角、右三角、左上三角、右上三角、左下三角、右下三角)    主要用到的是:宽度高度设置为0, border的各个边的设置(各个边的透明或不透明);                 .tri...

suwyer的博客 3万+

QT基本对话框(基本对话框、工具盒类、进度条、调色板与电子钟、可扩展对话框、程序启动画面)

文章介绍QT基本对话框、工具合类、进度条、调色板与电子钟、可扩展对话框、程序启动画面的相关使用方法

weixin_42369301的博客 1045
上一篇: 用线程实现动态改变图标
下一篇: VC启动窗口画面制作方法研究
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值