最近在研究桌面精灵,遇到许多问题,以下是源代码下载地址
http://u.115.com/file/t7babfaacc
基本上问题都在说明和代码里了
对桌面精灵有兴趣或有经验的看下吧
目前的目的是:
1、透明客户区窗体(已实现)
2、显示精灵动画(已实现)
3、精灵可随意拖动(?)
4、精灵自己会走动(?)
5、精灵移动转身自然平滑(未实现)3和4单独实现都没有问题,但是同时实现的时候就做不到了。
精灵的移动使用movewindow()实现
现在只用了一个模拟的办法勉强达到,代价就是即使点击精灵精灵的位置也会发生变化,而别人做的明显不会,原谅我看不懂MFC....
之前使用向窗口发送拖动消息实现拖动,效果不错,但是此时wm_lbuttonup就不会有,而我的思路是拖动的时候精灵不走动,放开后继续在放开的地方走动,如果没有lbuttonup消息,我不知道改怎么做,我挨个看了WINDOWS消息也不知道该用什么方法解决这个问题
http://u.115.com/file/t7babfaacc
基本上问题都在说明和代码里了
对桌面精灵有兴趣或有经验的看下吧
目前的目的是:
1、透明客户区窗体(已实现)
2、显示精灵动画(已实现)
3、精灵可随意拖动(?)
4、精灵自己会走动(?)
5、精灵移动转身自然平滑(未实现)3和4单独实现都没有问题,但是同时实现的时候就做不到了。
精灵的移动使用movewindow()实现
现在只用了一个模拟的办法勉强达到,代价就是即使点击精灵精灵的位置也会发生变化,而别人做的明显不会,原谅我看不懂MFC....
之前使用向窗口发送拖动消息实现拖动,效果不错,但是此时wm_lbuttonup就不会有,而我的思路是拖动的时候精灵不走动,放开后继续在放开的地方走动,如果没有lbuttonup消息,我不知道改怎么做,我挨个看了WINDOWS消息也不知道该用什么方法解决这个问题
解决方案 »
- CreateProcess函数返回的进程ID和任务管理器的不同
- 鼠标停留检测问题
- 问个::FindFirstFile()的小问题 第一次用 最初级的 在线等
- BSTR转化为char*时的链接库问题
- 郁闷,难道ATL控件的效率这么低吗?
- 救救我,给100分
- 如何在单文档程序启动后自动调用函数?
- 在文件夹里,文件和文件夹都是以大图标的形式出现,请问如何改成列表???
- 那位哥门比较熟悉钱龙(熟悉它的目录结构就行)?
- “高分”请教:……俺是高中生,今年想参加水平考试的高程考试,请问各位大哥应该怎样做好考前准备呢?……………………………………………………………………
- 封装时怎么拷资源?
- MFC对话框程序点击任务栏图标最大化无效
精灵拖动,可以发送消息模拟拖动标题栏实现,代码:
case WM_LBUTTONDOWN:
PostMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, lParam);
在拖动时停止动画可以通过对WM_LBUTTONDOWN、WM_LBUTTONUP的响应来实现。
http://msdn.microsoft.com/en-us/library/ms695784%28v=vs.85%29.aspx
需要的工具:
Agent Character Editor
Linguistic Sound Editing Tool
对与三楼那个,我比较想自己实现,因为现在我已经接近目标了
这些是连图,游戏里经常用到,不过现在D3D基本上不用这些了,D3D直接使用PNG了,这些资源在RPG制作大师里带有,游戏资源网也有下载关于动作问题我已经想到了解决办法,但还没加入代码当中,理论上可行现在着力解决拖拽问题不会产生WM_LBUTTONUP是什么意思啊?就是不会产生WM_LBUTTONUP这个消息,所以不知道改用什么办法判断鼠标右键是否弹起,不知道鼠标什么时候弹起,如何做停止拖拽后的自行走动呢?现在的思路:精灵在普通状态下会自己走动,当精灵被拖拽,精灵停止自身走动,跟着鼠标走,当右键弹起,恢复最初的状态。所以我的问题集中在右键上这是最新的源代码:http://u.115.com/file/f7edf6bbaf
解决了之前的问题,但又产生了新的问题,不过还是关于鼠标右键的处理另外里面带了几张连图
建议在压缩包里加入编译后的exe文件,因为不是所有人机器上都装着VC.NET
之前没有考虑详细楼主遇到的问题。之前的PostMessage方法还是可行的。方法是把PostMessage改为SendMessage,目的是不让它立即返回,在这个语句后面就可以判断左键弹起了。即:
case WM_LBUTTONDOWN:
SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, lParam);
//左键弹起响应代码