`
ihuashao
  • 浏览: 4744540 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

类似qq的窗体停靠效果(未果)

阅读更多

是我前不久问的一个帖子,功能都实现了,可是客户变态,还要来点"花"的.

以下是我的初步尝试.

怎样实现类似qq的窗口顶部停靠效果?
当窗体在屏幕上方某个区域时,窗体上移,只留一小部分在屏幕显示
当鼠标移入这一小部分的时候,窗体下移
当鼠标移出时,窗体又上移.
我想了一下:主要有两个技术点:
1:怎么得到窗体的移动结束事件?我想应该是截获WM_MOVE消息
2:怎么得到鼠标移入,移出窗体的事件,我想应该可以用到
CM_MOUSEENTER,CM_MOUSELEAVE消息
下面是我初步实现的效果:
Unit1.h
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:// IDE-managed Components
TEdit *Edit1;
private:// User declarations
bool in; //标识鼠标是否进入窗体
void __fastcall MouseEnter(Messages::TMessage &Message);
void __fastcall MouseLeave(Messages::TMessage &Message);
void __fastcall FormMoveEnd(Messages::TMessage &Message);

public:// User declarations
__fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(CM_MOUSEENTER,Messages::TMessage,MouseEnter)
VCL_MESSAGE_HANDLER(CM_MOUSELEAVE,Messages::TMessage,MouseLeave)

VCL_MESSAGE_HANDLER(WM_MOVE,Messages::TMessage,FormMoveEnd)
END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Unit1.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
in = false;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::MouseEnter(Messages::TMessage &Message)
{
if(in)
exit;
in = true;
Edit1->Text = "enter";
if(Form1->Top < 0)
Form1->Top = 10;
}
void __fastcall TForm1::MouseLeave(Messages::TMessage &Message)
{
in = false;
Edit1->Text = "leave";
if(Form1->Top == 10)
{
Form1->Top = -(Form1->Height -15);
}
}

//---------------------------------------------------------------------------
void __fastcall TForm1::FormMoveEnd(Messages::TMessage &Message)
{
if(Form1->Top < 10)
{
Form1->Top = -(Form1->Height - 15);
}

}

以上程序初步实现了类似效果.但有点问题,就是我的鼠标移动到屏幕最上方时候,窗体会不间断的闪烁.
好像是连续激发了鼠标离开窗体和进入窗体的事件.
有点苦恼,请高手指点一下

分享到:
评论

相关推荐

    C#窗体停靠控件 类似于QQ窗体停靠

    在C#编程中,"C#窗体停靠控件 类似于QQ窗体停靠"这个主题涉及...掌握这些知识点,开发者可以创建出具有类似QQ停靠功能的窗体,提供更佳的用户界面交互体验。在实际开发中,还要注意代码的可读性、可维护性和性能优化。

    vb.net实现类似QQ的窗体停靠自动隐藏效果

    在VB.NET编程环境中,开发一个类似QQ的窗体停靠自动隐藏效果是一项常见的需求,它为用户提供了便捷的界面交互体验。这个效果主要是指当窗口边缘靠近屏幕边缘时,窗体会自动吸附到屏幕边缘并隐藏,再次经过时则会显示...

    C# 实现类似于QQ的窗体停靠功能

    这时,可以通过重写OnPaint方法,或者使用GDI+绘制函数来实现自定义的停靠效果。 5. **多窗体管理**:在QQ等多窗口应用中,还需要处理多个窗体的停靠逻辑。可以创建一个窗体管理类,维护所有窗体的停靠状态,并提供...

    C#模仿QQ靠边停靠效果源代码

    总的来说,实现C#的QQ靠边停靠效果涉及到对Windows API的深入理解,尤其是窗体操作相关的部分。通过这样的实践,不仅可以提高C#编程技巧,还可以增强对用户界面设计和交互的理解。希望这篇文章能帮助你更好地理解和...

    delphi实现类似QQ窗体伸缩效果

    在Delphi中实现类似QQ窗体的伸缩效果,涉及到窗口动态布局、皮肤处理和动画效果等技术。这里我们将深入探讨这些关键知识点,并提供实现这一功能的步骤。 1. **窗口动态布局**: - Delphi 提供了 TLayout 控件,...

    C#开发的模拟QQ窗体停靠和驻留系统托盘程序

    总结来说,通过C#的Windows Forms库,我们可以方便地实现窗体停靠、最小化到系统托盘以及右键菜单功能,从而创建出一个与QQ类似的用户体验。这个基础框架可以作为一个起点,开发者可以根据需要添加更多的功能和...

    C#模仿QQ窗体抖动效果

    在C#编程环境中,模拟QQ窗体抖动效果是一项常见的任务,这主要涉及到Windows Forms应用程序中的用户界面(UI)交互设计。QQ的窗体抖动功能通常用于吸引用户的注意力,例如当有新消息到来时。以下是一些关于如何在C#...

    类似QQ窗体隐藏的功能

    在压缩包文件"QQ窗体效果2"中,可能包含了实现这些功能的源代码示例、库文件或者相关的资源文件。通过研究这些内容,开发者可以学习到如何在自己的项目中实现类似的窗体隐藏和磁性功能,提升应用的用户友好性和功能...

    vc编程:自动停靠窗体,吸附窗体,类似千千静听的窗体

    在VC++编程环境中,创建一个具有自动停靠和吸附功能的窗体,是实现类似千千静听(QQ Music)那样的界面效果的关键步骤。这样的功能可以让用户自由调整窗口的位置,使其能够贴合主窗口或其他子窗口,提供更好的用户...

    C# winform 类似QQ窗体的贴边隐藏

    在C# WinForm开发中,实现类似QQ窗体的贴边隐藏功能是一项常见的需求,它可以使用户更加便捷地管理窗口,提升用户体验。QQ窗体的贴边隐藏特性是指当窗体靠近屏幕边缘时,窗体会自动吸附并隐藏,只显示标题栏或者一个...

    具有停靠效果的简单浏览器(类似QQ效果)

    【标题】"具有停靠效果的简单浏览器(类似QQ效果)"所指的是一款特别设计的浏览器应用,其特色在于模仿了QQ软件的停靠功能。这种停靠效果使得用户在浏览网页时能够享受到更加便捷的操作体验。浏览器的停靠功能意味着...

    WPF 仿QQ吸附窗体

    本篇将详细讲解如何使用WPF的`Storyboard`实现类似QQ窗体的吸附功能,即窗体能够根据用户的鼠标操作吸附到屏幕边缘,并通过动画效果呈现窗体的隐藏与出现。 首先,我们来理解`Storyboard`。`Storyboard`是WPF中用于...

    QQ窗体.zip

    QQ窗体.zip是一个压缩包,其中包含了一个关于在Windows Forms(winform)平台上实现类似QQ应用的窗体效果的示例项目。这个项目是用C#编程语言编写的,因此,我们将深入探讨如何使用C#和Windows Forms来创建具有QQ...

    类似QQ的自动停靠对话框

    4. 动画优化:可能使用定时器来逐步改变窗口位置和大小,以实现平滑的停靠效果。 此外,为了确保程序的兼容性和跨平台性,开发者可能还需要考虑不同操作系统下的实现差异,并使用适当的库或框架来简化这部分工作,...

    C#实现一个类似QQ窗体自动上卷的程序

    ### C# 实现类似QQ窗体自动上卷的程序 #### 概述 本文将详细介绍如何使用C#语言实现一个类似QQ窗体自动上卷的功能。这种效果在很多即时通讯软件中都有应用,例如当鼠标指针离开窗体时,窗体会自动向上滚动并隐藏在...

    类似QQ隐藏的隐藏窗体

    本示例“类似QQ隐藏的隐藏窗体”旨在模仿QQ聊天软件的功能,即当用户将窗体拖动到屏幕顶部时,窗体会自动缩小并隐藏在屏幕顶部,以节省屏幕空间并保持桌面整洁。这种设计在多任务处理时特别有用,让用户可以快速切换...

    C#WinForm仿qq窗体拖到windows窗体边上时,自动隐藏C#WinForm

    在本篇文章中,我们将探讨如何使用 C# 和 WinForms 技术来实现一个类似 QQ 的窗口效果:当用户将窗口拖拽至屏幕边缘时,窗口会自动隐藏(即缩入屏幕边缘)。这种效果通常用于即时通讯软件或工具提示等场景,能够提供...

    C#制作类似QQ窗口的隐式窗体

     C#制作类似QQ窗口的隐式窗体,内加一个进度条效果,类似QQ的窗体,可以伸缩隐藏到屏幕顶部,当鼠标放上去的时候它就立即向下展开了,通过本源码可以很好的掌握如何判断窗体的某一边缘接近了屏幕的边缘,并定义函数...

    窗体自動停靠

    5. **自定义布局**:对于更复杂的停靠需求,可能需要编写自定义的布局算法,比如实现类似QQ的分栏布局,允许用户自由拖放窗体到不同的停靠位置。 6. **用户交互**:提供直观的UI元素让用户选择停靠位置,比如边框上...

    C# Winform开发实现类似QQ窗体

    C# Winform开发实现类似QQ窗体

Global site tag (gtag.js) - Google Analytics