none
请问怎么使应用支持窗口拖动到桌面边缘时放大的特性? RRS feed

  • 问题

  • 现在使用wtl开发的应用,其窗口拖动到桌面边缘的时候,没有其他应用那样出现放大的特效。请问下这样需要怎样去支持?
    2017年1月9日 3:17

答案

  • >>从返回值上来看都是成功的,bEnable变量却一直都是FALSE,并没有产生作用。

    失败的话会返回0,成功的话会返回非零值。

    SystemParametersInfo函数的第三个参数是和第一个参数相关的。并不是简单的bool值。具体使用方法,可以参考下面的链接关于uiAction参数的介绍。

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms724947(v=vs.85).aspx

    >>我想我找到了问题的原因,因为想让窗口没有边框,去掉了WS_THICKFRAME或者WS_SIZEBOX属性,造成了以上问题。那么同时引入了新的问题,我又不想让窗口有厚厚的难看的边框。

    WS_THICKFRAME或者WS_SIZEBOX属性设置的是可调整的边框。可能会对你的最大化有影响。但是并不会影响边框厚度。你可以使用WS_BORDER属性设置细边框。具体关于Window的样式,可以参考以下文档。

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 F'R 2017年1月18日 5:52
    2017年1月11日 7:14

全部回复

  • Hi F'R,

    感谢在MSDN论坛发帖。

    >>现在使用wtl开发的应用,其窗口拖动到桌面边缘的时候,没有其他应用那样出现放大的特效。请问下这样需要怎样去支持?

    你可以尝试使用SystemParametersInfo函数在你的主函数中,或者初始化函数中。设置SPI_SETANIMATION,SPI_SETSNAPSIZING和SPI_SETWINARRANGING属性。

    具体关于系统属性的设置信息,请参考下面的文档。

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms724947(v=vs.85).aspx

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年1月9日 6:24
  • Hi Sera Yu:

    感谢你的回答,我是在应用启动后的主函数里这样调用的:

    BOOL bEnable = FALSE;
    BOOL bOK = SystemParametersInfo(SPI_GETWINARRANGING,0,(PVOID)&bEnable,0);
    bOK = SystemParametersInfo(SPI_GETSNAPSIZING,0,(PVOID)&bEnable,0);
    bOK = SystemParametersInfo(SPI_SETWINARRANGING,0,(PVOID)TRUE,0);
    bOK = SystemParametersInfo(SPI_SETSNAPSIZING,0,(PVOID)TRUE,0);
    bOK = SystemParametersInfo(SPI_GETWINARRANGING,0,(PVOID)&bEnable,0);
    SystemParametersInfo(SPI_GETSNAPSIZING,0,(PVOID)&bEnable,0);

    从返回值上来看都是成功的,bEnable变量却一直都是FALSE,并没有产生作用。

    2017年1月9日 7:38
  • 我想我找到了问题的原因,因为想让窗口没有边框,去掉了WS_THICKFRAME或者WS_SIZEBOX属性,造成了以上问题。那么同时引入了新的问题,我又不想让窗口有厚厚的难看的边框。
    2017年1月9日 8:18
  • >>从返回值上来看都是成功的,bEnable变量却一直都是FALSE,并没有产生作用。

    失败的话会返回0,成功的话会返回非零值。

    SystemParametersInfo函数的第三个参数是和第一个参数相关的。并不是简单的bool值。具体使用方法,可以参考下面的链接关于uiAction参数的介绍。

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms724947(v=vs.85).aspx

    >>我想我找到了问题的原因,因为想让窗口没有边框,去掉了WS_THICKFRAME或者WS_SIZEBOX属性,造成了以上问题。那么同时引入了新的问题,我又不想让窗口有厚厚的难看的边框。

    WS_THICKFRAME或者WS_SIZEBOX属性设置的是可调整的边框。可能会对你的最大化有影响。但是并不会影响边框厚度。你可以使用WS_BORDER属性设置细边框。具体关于Window的样式,可以参考以下文档。

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 F'R 2017年1月18日 5:52
    2017年1月11日 7:14