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

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 09:37
    关注

    pos->flags &= ~SWP_DRAWFRAME;

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

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能