「已注销」 2019-05-30 01:32 采纳率: 0%
浏览 619
已采纳

WM_WINDOWPOSCHANGING消息中的WINDOWPOS->flags成员怎么清除相应位SWP_DRAWFRAME???

WM_WINDOWPOSCHANGING消息备注:

对于具有WS_OVERLAPPED或WS_THICKFRAME样式的窗口,DefWindowProc函数将WM_GETMINMAXINFO消息发送到窗口。

这样做是为了验证窗口的新大小和位置,并强制执行CS_BYTEALIGNCLIENT和CS_BYTEALIGNWINDOW客户端样式。

通过不将WM_WINDOWPOSCHANGING消息传递给DefWindowProc函数,应用程序可以覆盖这些默认值。

在处理此消息时,修改WINDOWPOS中的任何值会影响窗口在Z顺序中的新大小,位置或位置。应用程序可以通过设置或清除WINDOWPOS的flags成员中的相应位来阻止对窗口的更改。

WINDOWPOS结构成员flags描述

flags 类型:UINT

该成员可以是以下一个或多个值。

值 含义

SWP_DRAWFRAME
0×0020

在窗口周围绘制一个框架(在窗口的类描述中定义)。与SWP_FRAMECHANGED标志相同。

SWP_FRAMECHANGED 0×0020

即使窗口的大小未更改,也会向窗口 发送WM_NCCALCSIZE消息。如果未指定此标志,则仅在更改窗口大小时发送WM_NCCALCSIZE。

    case WM_NCCALCSIZE:return 0;
    case WM_WINDOWPOSCHANGING:
    {
        WINDOWPOS *pos = (LPWINDOWPOS)lParam;
        pos->flags;//怎么清除相应位SWP_DRAWFRAME???
        return 0;
    }

WM_NCCALCSIZE消息返回0后可以无边框,但是最大化时会发生位移

不正常(-8, -8)-(1374, 776), 1382x784 (最大化)

正常(0,0)-(1366,768)(最大化)

清除相应位SWP_DRAWFRAME后应该就可以实现正常,但怎么实现???

  • 写回答

2条回答 默认 最新

  • Eleven 2019-05-30 01:37
    关注

    pos->flags &= ~SWP_DRAWFRAME;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 matlab中频率调制法代码的解读
  • ¥15 ceph的对象、块、文件相关问题求解答
  • ¥50 如果使用python进行ERA5 10米风场预报检验
  • ¥15 navicat解析mysql密码
  • ¥15 SDAPI(关键词-table)
  • ¥15 unity安卓打包出现问题
  • ¥20 安装catkin时遇到了如下问题请问该如何解决呢
  • ¥15 VAE模型如何输出结果
  • ¥15 编译python程序为pyd文件报错:{"source code string cannot contain null bytes"
  • ¥20 关于#r语言#的问题:广义加行模型拟合曲线后如何求拐点
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部