mfc界面美化之—异形窗口

标签:
异形窗口窗口美化mfcmfc界面美化mfc异形窗口 |
分类: MFC |
本博文,适用于具有中等VC水平的读者。读者最好具有以下VC基础:
1.
2.
3.
本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。
至少知道的操作:
*Bitmap Functions:位图操作
Coordinate Functions:坐标操作
Color and Color Palette Functions:颜色/调色板操作
Simple Drawing Functions:简单绘图操作,如:绘制矩形框
fillrect function 贴图操作
CBrush
三·
我们的任务是做一个360加速球http://s12/mw690/002tf7aDgy6JAXEFAin5b&690
我们先给这个加速球截图,使用ps 把图片扣出来,把背景色调为黑色RGB(0,0,0)http://s4/mw690/002tf7aDgy6JAXO7rYD23&690图片格式BMP
1.用类向导新建一个mfc关于对话框应用程序。
http://s2/mw690/002tf7aDgy6JAXuWPDj81&690
2.修改对话框的属性border 为none.
http://s2/mw690/002tf7aDgy6JAXuSUpP71&690
3.改变窗口大小。大致和我们的图片大小差不多就行了。
http://s8/mw690/002tf7aDgy6JAXzAlTN07&690
4.在对话框的消息响应中添加一个ON_WM_CTLCOLOR消息响应。
http://s8/mw690/002tf7aDgy6JAY9XpXx87&690
5.在这个对画框的类中添加一个CBrush m_brush;
6.把这张图片添加到资源目录,更改ID:
7.OnCtlColor消息响应函数如下:
HBRUSH CjixinckDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO:
CBitmap bitmap;
bitmap.LoadBitmapW(IDB_BITMAPBJ);
m_brush.CreatePatternBrush(&bitmap);
return m_brush;
// TODO:
//return hbr;
}
我们先运行一下,结果如下,我们改变窗口的大小,直到合适为止。
http://s16/mw690/002tf7aDgy6JAZkP4OHdf&690
http://s16/mw690/002tf7aDgy6JAZyzy1hbf&690
关键的来了
8.在OnInitDialog()函数中添加如下代码。
{
SetWindowLong(this->m_hWnd,
GWL_EXSTYLE, GetWindowLong(this->m_hWnd, GWL_EXSTYLE) |
WS_EX_LAYERED);
SetLayeredWindowAttribut
}
两个函数的使用介绍
SetWindowLong
SetLayeredWindowAttribut
9.我们在次运行一下。你看,奇迹发生了。http://s7/mw690/002tf7aDgy6JB027gjk96&690
现在我们的窗口还不能移动,我们添加一个OnLButtonDown消息响应函数
void ClechatDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
PostMessage( WM_SYSCOMMAND, SC_MOVE |
HTCAPTION, 0);
CDialog::OnLButtonDown(nFlags, point);
}
这个消息的
http://s6/mw690/002tf7aDgy6JB0z9C2Vf5&690这一次,这个加速球就可以移动了。
这样一个异形窗口就做好了。你可以做其他样式的异形窗口,随意发挥;
总结一下关键点:
1.图形要做一个纯色背景,以用来透明化
源码下载:
---兴趣是最好的老师————如果你爱好编程,请坚持下去,不要放弃