要做这么一个功能:鼠标左键单击一个窗体,然后这个窗体从屏幕的左边滑到右边,其实就是一个窗体滑动的动画。这个窗体在被单击的时候,会调用一个.exe文件,现在就是要求作这个exe。
已知条件:被控制窗体的句柄。
限制:最好使用SendMessage和PostMessage来控制窗体,当然其他的API也可以使用。只能使用C#编写这个exe。MSDN读了3天也没有解决,对Windows的API实在没有天赋,求教~
已知条件:被控制窗体的句柄。
限制:最好使用SendMessage和PostMessage来控制窗体,当然其他的API也可以使用。只能使用C#编写这个exe。MSDN读了3天也没有解决,对Windows的API实在没有天赋,求教~
解决方案 »
- 输入框文本转换问int类型不断提示字符串格式不正确
- 不能执行已释放的Script的代码,在线等高手解决
- c#如何接收oracle包中返回的cursor类型数据?
- 正则表达式 a.(bb)
- 前台页面如何多次调用后台方法
- 讨论一下吧,如何清晰组织页面数据和页面方法?
- 【求助】关于Activex的问题。
- c#中如何每隔一段时间产生一个随机数并将其放入数据库中,随机数的变化范围不能太大
- 请问用c#开发网页脚本,如果不懂asp是不是很麻烦
- 分页问题:翻页之后再进行查询则不成功
- 常见也常用的两个语句,突然发现自己不是很理解,这里问下各位高人:Application.Run(new frmMain());和new frmMain().Show();之间有什么
- 真心求教C#常连接
2.启动这个exe, 拦截鼠标消息
3.检测到wm_mouseleftdown|wm_mouseleftup消息以后,获取foregroudwindow的handle
4.将这个window位置由左滑动至右边
其实你直接调用user32.dll里面的SetWindowPos就行了.如果你非得要用SendMessage,那么就是发WM_WindowPosChanging这个消息.
下面是一个在桌面绘制虚线框的例子,你自己稍加改动即可.using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Drawing;public class MyClass
{
[DllImport("user32.dll")]
public static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
public static extern IntPtr GetWindowDC(IntPtr hwnd);
[DllImport("user32.dll")]
public static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc); public static void Main()
{
IntPtr desktop = GetForegroundWindow();
IntPtr hDC=GetWindowDC(desktop);
using (Pen pen = new Pen(Color.DarkGray, 1))
{
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
using (Graphics g=Graphics.FromHdc(hDC))
{
g.DrawRectangle(pen, 100,100,100,100);
}
}
ReleaseDC(desktop, hDC);
}
}
你不是滑动嘛?movewindow这个函数就能解决你的问题了关于postmessage和sendmessage两个函数,如果想了解的更详细,我可以教你.他们作用是一样的,本质却不同.
2,使用PostMessage/sendMessage发送这个消息
3,定义该私有消息的处理方法,在该方法中实现窗体移动