百度网盘的登录界面是DirectUI,还是其他的技术做的?

yusong1987 2020-05-07 11:56:01
百度网盘的登录界面是DirectUI,还是其他的技术做的?
听说是用nwjs做的,但是没弄明白他是怎么输出文字的。
我最近在做一个测试,想通过HOOK API的形式获取这个登录界面的文字,看到这个界面会调用DrawTextW来输出文字到一个兼容DC上,但是后面不会拷贝到真实的窗口DC上面去,也就是说在兼容DC上输出完文字后没有通过BitBlt、StretchBlt、GdiTransparentBlt、PatBlt以及AlphaBlend来拷贝兼容DC的内容到真实的窗口DC上面去,请问他是怎么实现这个的呢?
...全文
446 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
利白 2020-05-07
  • 打赏
  • 举报
回复
DirectUI是可以实现的。 请关注SOUI和REDM这两个开源项目。 https://gitee.com/setoutsoft/soui https://gitee.com/hgy413/REDM
yusong1987 2020-05-07
  • 打赏
  • 举报
回复
然后还发现这种窗口使用 ::RedrawWindow(hwnd, &rc, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ALLCHILDREN | RDW_INTERNALPAINT); 无法强制刷新所有文字
yusong1987 2020-05-07
  • 打赏
  • 举报
回复
引用 6 楼 smwhotjay 的回复:
可以通过内存DC 输出文字,画图等,然后把图片贴到 窗口dc,实现绘制。
嗯,一般的情况应该是这样,但是问题就在于他是怎么样把内存DC贴到窗口DC上的呢? 我没看他调用BitBlt、StretchBlt、GdiTransparentBlt、PatBlt以及AlphaBlend 来拷贝内存DC到窗口DC上。
smwhotjay 2020-05-07
  • 打赏
  • 举报
回复
可以通过内存DC 输出文字,画图等,然后把图片贴到 窗口dc,实现绘制。
yusong1987 2020-05-07
  • 打赏
  • 举报
回复
引用 1 楼 libaineu2004 的回复:
DirectUI是可以实现的。 请关注SOUI和REDM这两个开源项目。 https://gitee.com/setoutsoft/soui https://gitee.com/hgy413/REDM
看了几个SOUI的例子,文字都是通过输出到兼容DC 然后 AlphaBlend 到窗口DC上的,跟百度网盘登录界面这个不一样 ,百度网盘没看到有拷贝兼容DC到窗口DC的动作,很费解。
yusong1987 2020-05-07
  • 打赏
  • 举报
回复
引用 1 楼 libaineu2004 的回复:
DirectUI是可以实现的。 请关注SOUI和REDM这两个开源项目。 https://gitee.com/setoutsoft/soui https://gitee.com/hgy413/REDM
我其实不是想实现这样的界面,我只是想知道他是怎么输出文字的,在兼容DC上输出的文字是怎么拷贝到真实的窗口DC上来的
yusong1987 2020-05-07
  • 打赏
  • 举报
回复
引用 2 楼 这不是鸭头 的回复:
duiengine 百度网盘文件夹中都有duiengine license.txt
你知道这个对于文字输出的工作机制吗? 谢谢,我先去看看了解一下
这不是鸭头 2020-05-07
  • 打赏
  • 举报
回复
duiengine 百度网盘文件夹中都有duiengine license.txt

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧