如何给无标题栏窗口加上标题栏(例如给某些无标题栏游戏加上 包括最小化 最大化 关闭按钮)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何给无标题栏窗口加上标题栏(例如给某些无标题栏游戏加上 包括最小化 最大化 关闭按钮)相关的知识,希望对你有一定的参考价值。

用VB能实现吗?

刚用setwindowlong setwindowpos对某游戏(本身已经是窗口化,但就是没有标题栏)进行调试未果。
希望高人们指点一二。回答含有如何实现,从哪些方面入手,不一定需要详细代码(当然越详细越好啦)都可加分。
1楼的朋友,我指的不是VB本身的FORM窗体,恩。是指给其他的窗体加上标题栏,如给扫雷,纸牌。

参考技术A form 的属性里面 做更改即可 改变窗口风格。设置是否存在标题栏
最大化按钮 属性 maxbutton =true ,minbutton =true 控制最大化最小化按钮。标题可以再在caption属性里面键入 亦可以用代码写,如form2.caption=“楼主你好”
参考技术B 可以肯定的说:"不一定",你要先确定知道你的这个程序是引用什么语言编写的.如果你说的能实现,那么那QQ的那个宠物,和OFFICE助手也同样有标题栏了..哈..
可以使用DF或是C来编写...这些在操作内存比VB提供更好的方法与灵活性...并且有些程序是引用的内存显示图片的技术.根本就没有标题栏..如果没有标题栏..那么这个句柄捕捉就难了...本回答被提问者采纳

在WPF中,当在无边框窗口中拖动自定义的标题栏时,窗口会恢复,如何实现呢?

【中文标题】在WPF中,当在无边框窗口中拖动自定义的标题栏时,窗口会恢复,如何实现呢?【英文标题】:In WPF, when drag the customized titlebar in the no-border window, the window will be restored, how to implement it? 【发布时间】:2013-09-22 14:51:30 【问题描述】:

我已经定制了一个无边框窗口,它是no styleno borderAllowsTransparency="True",在这个窗口的顶部有一个矩形功能,而不是内置的标题栏。

一般情况下,拖动最大化窗口的标题栏即可恢复窗口,但在我自定义的无边框窗口中,我不知道如何实现。谁能帮帮我?

这是简单的代码:

<Window x:Class="WpfApplication24.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        WindowStyle="None"
        AllowsTransparency="True">
    <DockPanel LastChildFill="False">
        <Rectangle DockPanel.Dock="Top" x:Name="DragRectangle" Height="30" Fill="#FF123456" MouseLeftButtonDown="DragRectangle_MouseLeftButtonDown"/>
        <Button x:Name="ToMaxButton" Content="ToMaxButton" Click="ToMaxButton_Click" Height="30" Margin="5"/>
        <Button x:Name="ToNormalButton" Content="ToNormalButton" Click="ToNormalButton_Click" Height="30" Margin="5"/>
        <Button x:Name="CloseButton" Content="CloseButton" Click="CloseButton_Click" Height="30" Margin="5"/>
    </DockPanel>
</Window>

namespace WpfApplication24

    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    
        public MainWindow()
        
            InitializeComponent();
        

        private void DragRectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        
            this.DragMove();
        

        private void ToMaxButton_Click(object sender, RoutedEventArgs e)
        
            this.WindowState = System.Windows.WindowState.Maximized;
        

        private void CloseButton_Click(object sender, RoutedEventArgs e)
        
            this.Close();
        

        private void ToNormalButton_Click(object sender, RoutedEventArgs e)
        
            this.WindowState = System.Windows.WindowState.Normal;
        
    

已编辑:

通过拖动原来的Window,我们会发现我们需要拖动一点距离然后改变window.state,那么窗口的位置就会和光标的坐标差不多了。

【问题讨论】:

【参考方案1】:

您可以添加 MouseUp 和 MouseMove 处理程序

    private bool _isMouseDown = false;

    private void DragRectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    
        _isMouseDown = true;
        this.DragMove();
    

    private void DragRectangle_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    
        _isMouseDown = false;
    

    private void DragRectangle_MouseMove(object sender, MouseEventArgs e)
    
        // if we are dragging and Maximized, retore window
        if (_isMouseDown && this.WindowState == System.Windows.WindowState.Maximized)
        
            _isMouseDown = false;
            this.WindowState = System.Windows.WindowState.Normal;
        
    

【讨论】:

请参阅编辑。如果简单地设置_isMouseDownWindowState,位置将被恢复,而不是保持光标位置几乎相同。现在,我正在阅读“archive.msdn.microsoft.com/WPFShell”,也许它会给我一些启发。

以上是关于如何给无标题栏窗口加上标题栏(例如给某些无标题栏游戏加上 包括最小化 最大化 关闭按钮)的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有任务栏条目的情况下获得无父 QWindow

在WPF中,当在无边框窗口中拖动自定义的标题栏时,窗口会恢复,如何实现呢?

如何让winform有边框但没有标题栏?

cef3嵌入win32无标题栏窗口,怎么来移动这个cef窗口

如何在QT中实现自己的标题栏

无法将 onTap 字段传递给无状态小部件