李国帅 2011.12.8
在vc中为了界面美观经常使用皮肤,而皮肤控件很多,这里介绍一种曾经使用的皮肤插件。
头文件
#include <gdiplus.h> #pragma comment(lib, "gdiplus.lib") using namespace Gdiplus; #include "GdiManger.h" #include "GdipButton.h" #include "ReportCtrl.h" #include "TransparentStatic.h" #include "TGroupBox.h"
声明和初始化
ULONG_PTR m_gdiplusToken;// GdiplusStartupInput gdiplusStartupInput;//初始化BOOL CdemoApp::InitInstance() GdiplusStartup(&m_gdiplusToken,&gdiplusStartupInput,NULL); Gdiplus::GdiplusShutdown(m_gdiplusToken);//去初始化 Gdiplus::GdiplusShutdown(m_gdiplusToken);
对话框头文件中定义对象
CGdiManger m_oGdiManager;
CGdipButton m_btnCIFD1;
DDX_Control(pDX, IDC_BTN_D1, m_btnCIFD1);
初始化函数中
m_btnCIFD1.EnableWindow(bEnable); m_btnCIFD1.LoadStdImage(IDR_D1_BTN, "PNG"); m_btnCIFD1.MoveWindow(230+28+10, 7, 28, 27); strText.LoadString(IDS_TOOLBAR_STR_2); m_btnCIFD1.SetToolTipText(strText); m_btnCIFD1.ShowWindow(SW_HIDE);
刷新背景
BOOL CDeviceListDlg::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default char szmoduleDir[1024]; // module path without '\' at the end memset(szmoduleDir, 0, 1024); strcpy(szmoduleDir, GetModuleFileDirectory().c_str()); CString strFilePath; strFilePath.Format("%sImages\\DevlistBk.png", szmoduleDir); CRect rect; GetClientRect(&rect); m_oGdiManager.DrawBitMap(strFilePath, rect, pDC); m_btnCIFD1.SetBkGnd(pDC); return TRUE; //return CDialog::OnEraseBkgnd(pDC); }