用VC++制作变形窗体
来源:互联网 发布:湖北十堰网络贩毒 编辑:程序博客网 时间:2024/05/11 16:00
首先,我们要建立一个基于对话框的工程distort,这样生成了三个类,即CAboutDlg , CDistort , CDistortDlg ,我们将要进行大改动的是CDistortDlg类,因此我们给出此文件的原代码,有改动的地方 我们用粉色字表出,并加人注释。
// distortDlg.h : header file // #if !defined(AFX_DISTORTDLG_H__B21CDC69_5A48_11D7_A464_00055DE445C1__INCLUDED_) #if _MSC_VER > 1000
class CDistortDlg : public CDialog // Dialog Data // ClassWizard generated virtual function overrides // Implementation // Generated message map functions
private: //窗体初始的矩形对象 {{AFX_INSERT_LOCATION}} #endif // !defined(AFX_DISTORTDLG_H__B21CDC69_5A48_11D7_A464_00055DE445C1 |
下一步,我们先将对话框的属性中的stype设为popup ,而Border设为none,如图:
在此类的实现文件中,我们就将系统自动生成的函数略去了,只写出有改动的地方
// distortDlg.cpp : implementation file // #include "stdafx.h" #if def _DEBUG /////////////////////////////////////////////////////////////// class CAboutDlg : public CDialog ON_WM_NCHITTEST()
BOOL CDistortDlg::OnInitDialog() // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. CMenu* pSysMenu = GetSystemMenu(FALSE); // Set the icon for this dialog. The framework does this automatically // TODO: Add extra initialization here //-------------------------set time---------------------------- |
其中椭圆效果是通过 int SetWindowRgn(HRGN hRgn,BOOL bRedraw);
而参数 hRgn 是窗体区的句柄, 参数 bRedraw 是决定是否要重画窗体,在本例中Windows 向窗体发送 WM_PAINT消息,从而调用 OnPaint()函数,
下面我们来修改此函数
void CDistortDlg::OnPaint() { CPaintDC dc(this); if (IsIconic()) { // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle // Draw the icon //获得客户区的尺寸 CBrush *pBrushOld; //定义画刷,在此你可以更改颜色 //下面编写实现窗体任意托动的函数 HCURSOR CDistortDlg::OnQueryDragIcon() UINT CDistortDlg::OnNcHitTest(CPoint point) //下面编写定时器实数 //若想结果n次变化后正好便为圆形,则设此值为 1.035 void CDistortDlg::OnTimer(UINT nIDEvent) CRect rectWnd; //确定窗体区域中心 //分情况处理各种定时事件 //确定窗体的矩形大小 //释放对象 //创建椭圆区域 SetWindowRgn((HRGN)m_rgn,TRUE); if(nCount==10)//设置变化次数,此为10次 |
希望大家通过对本例的实践,初步了解 MFC 的对话框机制 (细节请参见《Vicual c++ 高级编程》)
- 用VC++制作变形窗体
- vc制作不规则窗体
- VC 制作透明窗体
- 用API制作图形窗体
- 用GDI+制作不规则窗体
- 中式vc变形记
- 用C#.net轻松制作不规则窗体
- 用C#.net制作不规则窗体
- 用Borland C# Builder制作不规则窗体
- 用C#制作飘动的窗体效果
- 用C#制作飘动的窗体效果
- 用C#制作飘动的窗体效果
- 用C#.net轻松制作不规则窗体
- 用C# Builder制作不规则窗体
- 用C#制作 个性化窗体 winform 界面
- 用VB.NET轻松制作特效窗体
- 用VB.NET轻松制作特效窗体
- 用C#制作 个性化窗体 winform 界面
- C++的学习感想
- 很难见得到的一篇关于windows进程的说明书 (tommy521)系统进程
- vc++学习精髓(收集,整理)
- php.ini中文版
- ZT:一名江湖人的离职感悟
- 用VC++制作变形窗体
- VC实现在ListBox中选择背景位图
- 用VC++制作MSN、QQ 的消息提示窗口
- 剖析VC中的文件操作
- Lisp语言入门
- 猎狗的故事
- Remoting编程知识上篇
- test
- 因世俗的偏见--明明相爱,却不能走在一起