网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月25日
漏签
0
天
vb吧
关注:
156,154
贴子:
1,166,079
看贴
图片
吧主推荐
游戏
30
回复贴,共
1
页
<<返回vb吧
>0< 加载中...
分享:利用CreateWindowEx创建子窗体来设计UI
只看楼主
收藏
回复
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
利用CreateWindowEx创建子窗体来设计UI,嗯......算是对学习Windows消息机制的一个回顾。
当然,现在Win已经换成Fluent Design的UI设计了,题外话。
以及用SetProcessDpiAwareness后为高DPI屏幕手动设置布局
如图,为最终效果
//最左侧为旧UI,风格一致,处理逻辑不同,以及没有为高DPI优化
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
一般使用高分辨率屏幕时,都会屏幕缩放,所以看起来都一样,但如果屏幕缩放设为100%呢?就会出现如下情况:
云范文科技
果子办公-在线资料分享平台,
vb
教案全套.doc任意下载,内容涉及教育资料、行业资源、办公文书、合同文档等,内容齐全,专业编写,可任意编辑打印,更多优质文档点击下载使用!
2025-04-25 04:04
广告
立即查看
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好了话不多说,代码如下(图片):
创建子窗体
//en......hInst是应用实例,用的全局变量,忘了考虑传入参数的因素了
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
第一步:更改窗体风格,设置DPI缩放,获取窗口大小,计算窗体基础元素大小以及布局,重设窗体状态
//其中,计算窗体基础元素大小以及布局看个人经验以及对UI设计的看法
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
第五步:创建子窗体并刷新(字面意义)
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
第六步:初始化功能代码
第七步:消息循环(不必要,IsExit那句调试代码,忘了注释了)
第八步:程序结束前清理资源、释放句柄、释放内存(接管消息循环在消息循环里面,未接管在窗体的Unload事件里面)
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
子类化窗体过程(不必要,但推荐)
追踪鼠标是否在子窗体上,以及当鼠标不在子窗体上时向子窗体发送消息
//这里我应该用PostMessage或者SendMessage的,但我忘了
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
处理标题栏//毕竟窗体风格设为POPUP|BORDER后窗体移动代码就得自己来写了不是
青岛瑞呈创林科技服务
热销:月相/日志/水鬼/橡树/气球/马克/海马/纵横四海/名仕/坦克/rm/葡计/柏涛菲诺/理查德/伍陆之型/五十寻/月亮美人/议员/碟飞/复仇者/大爆炸/刺青等系列!
2025-04-25 04:04
广告
立即查看
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
功能按钮的代码//不赘述
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
文本显示的代码//更加简单
余思培
网络通信
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
//被吞了,可能是因为图片有16进制数字原因,所以我就不发图了
第二步:设置UI颜色方案
第三步:子类化WndProc(推荐,但不完全必要)
第四步:更改已有控件位置
(比如说有什么控件你不想重写,直接用就是了)
//中间被忽略的代码用于追踪鼠标,这一部分可以直接用TrackMouseEvent来实现,但个人觉得直接接管消息循环方便一点(虽然说效果不如TrackMouseEvent),所以直接强制显示并更新窗体,然后子类化后直接用Do...Loop循环加GetMessage组合加鼠标追踪代码来替代消息循环。
隨風
缒夢
子类化
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
既然用CreateWindow来创建主窗口了,再用CreateWindow创建子窗口我觉得就没有什么必要了(否则和VB的控件拖拉没什么区别),最好可以往DirectUI方面做,就是现在QQ、迅雷等采用的UI方案(优点是子控件想怎么透明就怎么透明,还有其他的优点等等),DirectUI即只有一个主窗口,界面上的UI都是用GDI函数在指定区域绘制出来的,响应鼠标及键盘事件
目前DirectUI方案,我也只有在游戏内的设计,没有真正用到应用软件上,主要是工程量大,不是这样做过也是有点心得,以后可以设计一个真正用到应用软件上的DirectUI
广州聚力汇体育
递归爆栈
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
虽然看不懂 但是感觉很厉害
yjryym
多线程
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
个人建议,最好不要用 SetProcessDpiAwareness 这个API来处理DPI适配,而是用 manifest 清单来配置,SetProcessDpiAwareness 在低版本系统上没有,用 manifest 清单则不存在这个问题。
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示