MFC透明BUTTON、EDIT、STATIC控件
来源:互联网 发布:手机语音通话软件 编辑:程序博客网 时间:2024/06/18 05:21
一、先做透明的EDIT、STATIC,查看参考资料一,下载里面的文件,然后把“EditTrans.h" ”EditTrans.cpp"导入工程,把项目中的需要透明的EDIT改一下就可以了,
类似CEditTrans m_result; //原CEdit m_result 改为CEditTrans m_result就可以透明了。其他用法请查看资料1.
注:如果在vs2010创建项目的时候选择了公共控件清单,会造成edit背景变黑。需要注释掉stdafx.h里面的这段代码
- //#ifdef _UNICODE
- //#if defined _M_IX86
- //#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
- //#elif defined _M_X64
- //#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
- //#else
- //#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
- //#endif
- //#endif
二、png类型的BUTTON,查看参考资料二。
1.添加对应的4个文件
- GdipButton.h
- GdipButton.cpp
- MemDC.h
- CGdiPlusBitmap.h
如果在VS2010下,因为CMemDC的关系,请对源码进行相应的修改。在CMmeDC.h增加命名空间,
- namespace ns_gdiBtn
- {
- class CMemDC : public CDC {
- ..............................
- };
- };
3.添加对应的PNG资源,然后按钮做对应修改,CButton m_btnLogin 改为CGdipButton m_btnLogin;增加下面代码
- m_btnLogin.LoadStdImage(IDB_LOGINBTN, _T("PNG"));
- m_btnLogin.LoadAltImage(IDB_LOGINACTIVE, _T("PNG"));
- m_btnLogin.EnableToggle(TRUE);
效果图:
备注:因为背景图是png的,而LoadFromResource只能加载BMP图像,所以用函数转换一下。
- bool CTransEditDlg::LoadImageFromResource( CImage* pImage, UINT nResID, LPCWSTR lpTyp)
- {
- ASSERT(pImage);
- pImage->Destroy();
- HRSRC hrsrc=FindResource(AfxGetResourceHandle(),MAKEINTRESOURCE(nResID),lpTyp);
- if (hrsrc==NULL)
- {
- return false;
- }
- HGLOBAL hImageData=LoadResource(AfxGetResourceHandle(),hrsrc);
- if (hImageData==NULL)
- {
- FindResource(AfxGetResourceHandle(),MAKEINTRESOURCE(nResID),lpTyp);
- return false;
- }
- // 锁定内存中的指定资源
- LPVOID lpVoid = LockResource(hImageData);
- LPSTREAM pStream = NULL;
- DWORD dwSize = SizeofResource(AfxGetResourceHandle(), hrsrc);
- HGLOBAL hNew = GlobalAlloc(GHND, dwSize);
- LPBYTE lpByte = (LPBYTE)::GlobalLock(hNew);
- memcpy(lpByte, lpVoid, dwSize);
- // 解除内存中的指定资源
- GlobalUnlock(hNew);
- // 从指定内存创建流对象
- HRESULT ht = CreateStreamOnHGlobal(hNew, TRUE, &pStream);
- if ( ht != S_OK )
- {
- GlobalFree(hNew);
- }
- else
- {
- // 加载图片
- pImage->Load(pStream);
- GlobalFree(hNew);
- }
- // 释放资源
- FreeResource(hImageData);
- return true;
- }
然后构造函数里面添加
- CTransEditDlg::CTransEditDlg(CWnd* pParent /*=NULL*/)
- : CDialogEx(CTransEditDlg::IDD, pParent)
- {
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- //m_back.Load(_T("res/back.png"));外部加载
- //m_back.LoadFromResource(AfxGetInstanceHandle(), IDB_BACK);仅能加载BMP图像
- LoadImageFromResource(&m_back, IDB_BACK, _T("PNG"));//内部加载
- }
下载链接:http://www.kuaipan.cn/file/id_6251642726945338.html
参考资料:
1. (透明EDIT、STATIC控件)http://www.codeproject.com/Articles/1436/CEdit-CStatic-Transparency-Control?fid=2701&fr=1&df=90&mpp=25&noise=3&prof=False&sort=Position&view=Quick&spc=Relaxed#xx0xx
2.(透明BUTTON)http://www.codeproject.com/Articles/26887/A-user-draw-button-that-supports-PNG-files-with-tr
3.http://blog.sina.com.cn/s/blog_8406420b0100rz3u.html
本文来自:http://blog.csdn.net/hayyoung/article/details/8635989
- MFC透明BUTTON、EDIT、STATIC控件
- MFC透明BUTTON、EDIT、STATIC控件
- MFC透明BUTTON(按钮)控件
- 使static控件背景透明(MFC)
- MFC Static控件透明的效果
- mfc static,checkbox,groupbox,redio 控件透明
- MFC中实现Static控件背景透明
- MFC 使static控件背景透明
- MFC设置Static控件背景透明
- MFC 使static控件背景透明
- MFC的Button和Static控件
- MFC的Button和Static控件
- MFC透明Edit
- MFC中设置Edit Control 和 Static Text控件学习
- MFC对话框中改变对话框,Group Box, Static Text, Check Box, Edit Ctrl(disabled), Combo Box(disabled), Radio Button等控件背景色
- MFC实现透明button
- MFC中Static控件透明,重影,长度问题
- MFC Static控件背景透明时文本覆盖重影
- Win 32 多线程程序设计学习笔记之六:异步I/O(Overlapped I/O)
- 使用npm安装mysql包
- 新文件系统的通信机制
- [go]增加并发控制的并发ping
- Android之ListView优化(使用Lrucache,图片滑动时使用默认图片,停止时加载)
- MFC透明BUTTON、EDIT、STATIC控件
- android 图片压缩,自动旋转保存,查看照片信息,拍照设备类型等
- 统计学常用概念:T检验、F检验、卡方检验、P值、自由度
- GetStockObject 理解
- 使用POI进行EXCEL的解析以及创建工作
- 指针和引用的区别
- hdoj2151 Worm ( DP )
- Jboss运行JSP报各种编译错误 statements are only available if source level is 5.0
- Windows 获取当前系统时间函数(utc时间,本地时间,日历时间)总结