椭圆窗体的实现
2010-05-12 20:35:14 来源:WEB开发网3.生成鼠标的全局钩子,截获鼠标事件,返回****的值
在VC集成开发环境中,选择“文件”、“新建”,选中“工程”选项卡中的“Win32 Dynamic-link Library”选项。工程的名称为“finder”,点击“下一步”按钮。 在“win32 Dynamic-Link Library step 1 of 1”中,选择创建“A simple Dll project”,然后单击“完成”按钮。
3.1 创建finder.h文件。
选择“文件”、“新建”,在“文件”选项卡中选中“c\c++ header file”选项,文件名为finder。
#ifndef __FINDER_H__
#define __FINDER_H__
#ifdef FINDER_EXPORTS
#define FINDER_API __declspec(dllexport)
#else
#define FINDER_API __declspec(dllimport)
#endif
HHOOK FINDER_API start();
#endif __FINDER_H__
3.2 在finder.cpp中加入鼠标处理代码,详见finder.cpp文件。
编译程序,生成finder.dll动态连接软件。将finder.h和编译生成的finder.dll,finder.lib程序拷贝到EllipseWindow文件夹。
3.3 在EllipseWindow的EllipseWindowDlg.cpp中加入开始和终止鼠标钩子的代码(使用想到,可简化操作),代码如下。
void CEllipseWindowDlg::OnStart()
{
// TODO: Add your command handler code here
m_hMouse=start();
pMenu->EnableMenuItem(ID_START,MF_BYCOMMAND|MF_GRAYED);
pMenu->EnableMenuItem(ID_STOP,MF_BYCOMMAND|MF_ENABLED);
}
void CEllipseWindowDlg::OnStop()
{
// TODO: Add your command handler code here
CloseHandle(m_hMouse);
pMenu->EnableMenuItem(ID_STOP,MF_BYCOMMAND|MF_GRAYED);
pMenu->EnableMenuItem(ID_START,MF_BYCOMMAND|MF_ENABLED);
}
编译程序,完成应用程序。
备注:如果出现问题,请仔细阅读源代码或参照MSDN。不当之处或改进的地方敬请指点,如怎样除去颜色渐变过程中的闪烁问题,请发mail到jianming_zhang@163.com,谢谢。
本文配套源码
更多精彩
赞助商链接