Welcome

首页 / 软件开发 / C++ / 椭圆窗体的实现

椭圆窗体的实现2010-05-12张建明代码运行效果图如下:

我将分三部分介绍这一程序的实现过程:

1.生成椭圆形图形界面,并在上面写斜体带颜色的子和鼠标拖动功能。

2.增加鼠标右键菜单,并实现总在前面和其他程序自动覆盖的功能。

3.生成鼠标的全局钩子,截获鼠标事件,返回****的值。

1.生成椭圆形图形界面,并在上面写斜体带颜色的子。

在VC集成编译环境中,选择“文件”,“新建”,然后选择“工程”选项卡。在左侧的工程选择项中选取“MFC AppWizard[exe]”,在右侧工程标题下的编辑框中输入“EllipseWindow”。

单击“确定”按钮,进入“MFC AppWizard step-1”选择页,选中“D基本对话框”左侧的单选按钮,将应用程序的类型设为基本对话框,然后点击“完成”按钮后点击“确定”即可。

在自动生成的“IDD_ELLIPSEWINDOW_DIALOG”对话框资源中删除“取消”,“确定”按钮和标题为“TODO:在这里设置对话框”的文本框。此时,编译运行这个程序,应该能在窗口弹出一个空的对话框。

椭圆窗体的实现主要是靠CRgn类来实现的。

1.1 生成椭圆窗体

在类CEllipseWindowDlg的定义中填加CRgn m_rgnWnd的protected型变量。在CEllipseWindowDlg::OnInitDialog()中加入如下代码:

CRect rc;
GetClientRect(rc);
m_rgnWnd.CreateEllipticRgn(rc.left+32,rc.top+32,rc.Width()-64,rc.Height()-20);
SetWindowRgn((HRGN)m_rgnWnd,TRUE);

此时运行这个程序,将出现一个灰色的椭圆窗体。如果不能关闭这个应用程序,可用Alt+F4关闭这个程序。