WEB开发网
开发学院软件开发VC 椭圆窗体的实现 阅读

椭圆窗体的实现

 2010-05-12 20:35:14 来源:WEB开发网   
核心提示:1.4 在窗体上显示欢迎词“enjoy!!!”添加CEllipseWindowDlg的protected数据成员 CFont m_font;在BOOL CEllipseWindowDlg::OnInitDialog()中创建字体,代码如下:LOGFONT lf;SystemParametersI

1.4 在窗体上显示欢迎词“enjoy!!!”

添加CEllipseWindowDlg的protected数据成员 CFont m_font;

在BOOL CEllipseWindowDlg::OnInitDialog()中创建字体,代码如下:

LOGFONT lf;
SystemParametersInfo(SPI_GETICONTITLELOGFONT,sizeof(LOGFONT),&lf,SPIF_SENDWININICHANGE);
lf.lfHeight=60;
lf.lfEscapement=100;
lf.lfItalic=TRUE;
lf.lfQuality=DRAFT_QUALITY;
m_font.CreateFontIndirect(&lf);

在void CEllipseWindowDlg::OnPaint()中加入显示代码:

CPaintDC dc(this);
dc.SetBkMode(TRANSPARENT);
dc.SetTextAlign(TA_BASELINE|TA_CENTER);
CRect rc;
GetClientRect(rc);
CFont *oldfont=dc.SelectObject(&m_font);
dc.TextOut(rc.Width()/2,rc.Height()/2,"enjoy!!!");
dc.SelectObject(oldfont);

好了,第一步完成了,也累了,have a rest :-)

检查一下我们的成果:程序运行,显示椭圆窗体,显示 “enjoy!!!”,并且背景颜色在不停的改变,按下鼠标左键后可以拖动。

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

2.1 增加鼠标右键菜单

添加资源中添加菜单资源,添加后的结果如下:

MENUITEM "关闭",            IDCANCEL
MENUITEM "关于...",           ID_APP_ABOUT
MENUITEM SEPARATOR
MENUITEM "开始识别密码",        ID_START
MENUITEM "终止识别密码",        ID_STOP, GRAYED
MENUITEM SEPARATOR
MENUITEM "总在前面",          ID_TOPMOST
MENUITEM "自动隐藏",          ID_ZORDER, GRAYED

在CEllipseWindowDlg中加入鼠标右键按下的处理,是按下鼠标左键后弹出异彩单,实现代码为:

ClientToScreen(&point);
pMenu->TrackPopupMenu(TPM_LEFTBUTTON,point.x,point.y,this);

2.2 加入椭圆窗口界面总在前面和自动隐藏的处理。

在BOOL CEllipseWindowDlg::OnInitDialog()中加在菜单项,代码如下:

m_menu.LoadMenu(IDR_RIGHT_CLICK);
pMenu=m_menu.GetSubMenu(0);

使用类向导生成菜单项的处理函数,对于ID_TOPMOST中的处理世界面总是显示在最前面,而且是该菜单选项变灰,处理代码为:

CRect rc;
GetWindowRect(rc);
SetWindowPos(&wndTopMost,rc.left,rc.top,rc.Width(),rc.Height(),SWP_SHOWWINDOW);
pMenu->EnableMenuItem(ID_TOPMOST,MF_BYCOMMAND|MF_GRAYED);
pMenu->EnableMenuItem(ID_ZORDER,MF_BYCOMMAND|MF_ENABLED);

相应的,自动隐藏的代码为:

CRect rc;
GetWindowRect(rc);
SetWindowPos(&wndBottom,rc.left,rc.top,rc.Width(),rc.Height(),SWP_SHOWWINDOW);
SetWindowPos(&wndTop,rc.left,rc.top,rc.Width(),rc.Height(),SWP_SHOWWINDOW);  pMenu->EnableMenuItem(ID_ZORDER,MF_BYCOMMAND|MF_GRAYED);
pMenu->EnableMenuItem(ID_TOPMOST,MF_BYCOMMAND|MF_ENABLED);

上一页  1 2 3 4  下一页

Tags:椭圆 窗体 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接