博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF疑难杂症之二(全屏幕窗口)
阅读量:4615 次
发布时间:2019-06-09

本文共 1813 字,大约阅读时间需要 6 分钟。

原文:

近日的学习中遇到一个非常奇怪的问题:用XAML文件创建了一个全屏幕窗口,然后,在窗口中建立了一个非常简单的动画。一切都在我的掌控之中,实现非常的顺利。

WPF中用XAML创建全屏幕窗口非常简单,只需要简单地设置Window元素的一些属性即可:

<Window x:Class="WindowsApp.Window1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    WindowState="Maximized"

    Topmost="True"    

    WindowStyle="None"

    AllowsTransparency="true"

    >

    <Grid>

      <!--忽略建立动画的代码-->  

    </Grid>

</Window>

 

最后程序的运行结果却出乎所料,在调用Storyboard.Begin之前,一切都很正常,但是一旦启动动画,程序运行及很慢,鼠标的运动很慢很慢。有兴趣的朋友可以自己尝试一下。

 

如果把窗口Style稍微修改,问题就得到了解决,把WindowStyleNone修改为其它的值似乎都可以正常运行。动画的效率得到了极大的提高。

 

但是我们要的就是全屏幕,那怎么办呢?时间比较紧急,咱就曲线救国绕过去吧!在XAMLWindow属性中WindowStyle保留其默认值,在窗口的加载响应函数里直接用了Win32 API函数来修改窗口的Style。现在可以几乎可以肯定这不像是正统的方法,或者还有其它的还没有了解的知识。修改后的代码如下:

 

<Window x:Class="WindowsApp.Window1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    WindowState="Maximized"

    Topmost="True"    

    Loaded="OnMainLoad"

    >

    <Grid>

      <!--忽略建立动画的代码-->  

    </Grid>

</Window>

 

private void OnMainLoad(object sender, RoutedEventArgs e)

{

int nStyle = Win32API.GetWindowLong(new WindowInteropHelper(this).Handle;,Win32API.GWL_STYLE);

nStyle &= ~Win32API.WS_CAPTION;

Win32API.SetWindowLong(new WindowInteropHelper(this).Handle;, Win32API.GWL_STYLE, nStyle);

}

 

public class Win32API

{

     [DllImport("user32.dll")]

     public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int New);

       

     [DllImport("user32.dll")]

     public  static extern int GetWindowLong(IntPtr hWnd, int nIndex);

}

 

public const int GWL_STYLE = -16;

public const int GWL_EXSTYLE = -20;       

public const int WS_CAPTION = 0x00C00000;

 

代码中使用的
WindowInteropHelper
类将在后续的随笔中介绍。至于用
C#
调用
Win32 API
函数应该不需要进一步的介绍,不熟悉
C#
的朋友可以参考
MSDN
中的
Interoperability
相关内容。
posted on
2019-05-01 10:11 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/10799244.html

你可能感兴趣的文章
python 序列:列表
查看>>
web移动端
查看>>
pythonchallenge闯关 第13题
查看>>
个人介绍
查看>>
使用python动态特性时,让pycharm自动补全
查看>>
MySQL数据库免安装版配置
查看>>
你必知必会的SQL面试题
查看>>
html5 Canvas绘制时钟以及绘制运动的圆
查看>>
云推送注意(MSDN链接)
查看>>
Metro Style app :浏览器扩展
查看>>
linux的kernel是怎样工作的(TI_DM36X_ARM系统)(1)
查看>>
[luogu4310] 绝世好题 (递推)
查看>>
[luogu3203 HNOI2010] 弹飞绵羊 (分块)
查看>>
mui搜索框 搜索点击事件
查看>>
2016012003+陈琦+散列函数的应用及其安全性
查看>>
Android 状态栏通知Notification、NotificationManager详解
查看>>
UIApplicationDelegate协议
查看>>
Jmeter测试dubbo接口填坑
查看>>
[zz]GDB调试精粹及使用实例
查看>>
数据库的创建和删除
查看>>