知识大全 椭圆窗体的实现
Posted 知
篇首语:追风赶月莫停留,平芜尽处是春山。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 椭圆窗体的实现相关的知识,希望对你有一定的参考价值。
椭圆窗体的实现
. 生成椭圆形图形界面 并在上面写斜体带颜色的子 在VC集成编译环境中 选择 文件 新建 然后选择 工程 选项卡 在左侧的工程选择项中选取 MFC AppWizard[exe] 在右侧工程标题下的编辑框中输入 EllipseWindow 单击 确定 按钮 进入 MFC AppWizard step 选择页 选中 D基本对话框 左侧的单选按钮 将应用程序的类型设为基本对话框 然后点击 完成 按钮后点击 确定 即可
在自动生成的 IDD_ELLIPSEWINDOW_DIALOG 对话框资源中删除 取消 确定 按钮和标题为 TODO:在这里设置对话框 的文本框 此时 编译运行这个程序 应该能在窗口弹出一个空的对话框
椭圆窗体的实现主要是靠CRgn类来实现的 . 生成椭圆窗体 在类CEllipseWindowDlg的定义中填加CRgn m_rgnWnd的protected型变量 在CEllipseWindowDlg::OnInitDialog()中加入如下代码
CRect rc;GetClientRect(rc);m_rgnWnd CreateEllipticRgn(rc left+ rc top+ rc Width() rc Height() );SetWindowRgn((HRGN)m_rgnWnd TRUE);
此时运行这个程序 将出现一个灰色的椭圆窗体 如果不能关闭这个应用程序 可用Alt+F 关闭这个程序. 按下鼠标左键后 用鼠标拖动椭圆的实现方法 使用类向导 添加CEllipseWindowDlg的WM_MOUSEMOVE的处理函数CEllipseWindowDlg::OnMouseMove(UINT nFlags CPoint point) 代码如下
static CPoint p;ClientToScreen(&point);if(nFlags & MK_LBUTTON) SetCursor(LoadCursor(NULL IDC_CROSS)); CRect rc; GetWindowRect(rc); MoveWindow(rc left+point x p x rc top+point y p y rc Width() rc Height());p=point;
此时运行程序 按下鼠标左键 就可以拖动椭圆窗体了 . 为这个窗体添加渐变的背景颜色 在CEllipseWindowApp增加public成员函数void CEllipseWindowApp::SetBkColor() 代码为static BYTE x= y= z= ;static BOOL flagx=TRUE flagy=FALSE flagz=TRUE;if(flagx) x++; if(x> ) flagx=FALSE;else x ; if(x< ) flagx=TRUE;if(flagy) y+= ; if(y> ) flagy=FALSE;else y = ; if(y< ) flagy=TRUE;if(flagz) z+= ; if(z> ) flagz=FALSE;else z = ; if(z< ) flagz=TRUE;SetDialogBkColor(RGB(x y z) RGB(x+ y+ ));
此时运行程序 椭圆界面的颜色就会自动发生渐变 在EllipseWindowDlg cpp中加入代码extern CEllipseWindowApp theApp;
在CEllipseWindosDlg中加入定时器void CEllipseWindowDlg::OnTimer(UINT nIDEvent) 其中的实现代码为:theApp SetBkColor();Invalidate();
在BOOL CEllipseWindowDlg::OnInitDialog()中加入对初始化定时器代码SetTimer( NULL);
. 在窗体上显示欢迎词 enjoy!!! 添加CEllipseWindowDlg的protected数据成员 CFont m_font; 在BOOL CEllipseWindowDlg::OnInitDialog()中创建字体 代码如下LOGFONT lf;SystemParametersInfo(SPI_GETICONTITLELOGFONT sizeof(LOGFONT) &lf SPIF_SENDWININICHANGE);lf lfHeight= ;lf lfEscapement= ;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()/ rc Height()/ "enjoy!!!");dc SelectObject(oldfont);
好了 第一步完成了 也累了 have a rest : ) 检查一下我们的成果 程序运行 显示椭圆窗体 显示 enjoy!!! 并且背景颜色在不停的改变 按下鼠标左键后可以拖动. 增加鼠标右键菜单 并实现总在前面和其他程序自动覆蓋的功能 . 增加鼠标右键菜单 添加资源中添加菜单资
cha138/Article/program/c/201401/30252相关参考
Swing增加透明窗体及不规则窗体 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 支持透明和不规
1窗体建立的时机问题 由于窗体属于比较占系统内存的对象所以在应用程序中何时建立窗体就变得比较重要窗体的建立时机有一下几种 ()在主窗体建立时自动建立窗体 ()在需要的时候才建立窗体然后窗体关
设置C#子窗体在主窗体中居中显示 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 问题的开始是由C
当我们想让一个窗体保留在桌面的最上面时可以定义窗体的FormStyle属性使窗体保持在最上面但是使用这种方法后在切换窗体的模式时窗体将闪烁为了避免切换窗体模式时的闪烁可以使用WindowsAPI函
子窗体与父窗体之见互相传值实现使用中很频繁本文以一个小示例抛砖引玉希望大家可以举一反三 复制代码代码如下:cha138/Article/program/Java/JSP/20131
这个功能在VB中需要借助于API函数才能实现而在中凭自己的功能就能实现首先设置窗体的FormBorderStyle属性为none以去掉窗体的边框然后在窗体上添加一个按钮窗体中的代码如下 Publ
有很多软件为了实现特殊的显示效果采用非矩形的窗体而这些窗体往往没有标题栏想要移动一个没有标题栏的窗口是不那么容易的下面我介绍两种在VB中采取不同原理的方法移动一个没有标题栏的窗口 方法一 这种
ASP.Net:基于窗体的身份验证 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 基于窗体的验证
C#窗体的应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在做Winform窗体程序的时候遇
以下程序将教你如何制作一个窗体窗体一旦运行将在屏幕上不断抖动cha138/Article/program/Delphi/201311/8406