
第一种方法:
MFC中,应用CBitmapButton就可以实现图形按钮。CBitmapButton类继承自CButton类。你可以为图形按钮指定四张,分别对应按钮的四种不同状态:
正常显示(Up),鼠标按下(Down),获得焦点(Focused),不可用(Disabled)。
正常显示(Up)状态的是必须的,其他三张是可选的。
还有,按钮的Style必须指定为BS_OWNERDRAW。
第二种方法:GDI+中贴图的技术
stdafxh:
#include <gdiplush>
using namespace
Gdiplus;
#pragma comment( lib, "gdipluslib"
)
TestButtonPngh:
protected:
GdiplusStartupInput
m_gdiplusStartupInput;
ULONG_PTR gdiplusToken;
public:
virtual int
ExitInstance();
TestButtonPngcpp:
BOOL
CTestButtonPngApp::InitInstance()
{
GdiplusStartupInput
gdiplusStartupInput;
GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL);
INITCOMMONCONTROLSEX
InitCtrls;
InitCtrlsdwSize = sizeof(InitCtrls);
//
将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrlsdwICC =
ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
}
int
CTestButtonPngApp::ExitInstance()
{
// TODO:
在此添加专用代码和/或调用基类
GdiplusShutdown(gdiplusToken);
return
CWinApp::ExitInstance();
}
BOOL CMyButton::LoadStpImage(LPCWSTR normal, LPCTSTR mask, LPCTSTR
pType)
{
m_pStdImage = new CGdiPlusBitmapResource;
bool ret =
m_pStdImage->LoadFromFile(normal);//,
pType);
m_bMaskDeleteObject();
if(mask != "")
{
HBITMAP
hBitmap=
(HBITMAP)::LoadImage(NULL,mask,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
if
(hBitmap == NULL)
{
return
FALSE;
}
m_bMaskAttach(hBitmap);
if (hClipRgn)
DeleteObject(hClipRgn);
hClipRgn = CreateRgnFromBitmap(m_bMask,
RGB(255,255,255));
if (hClipRgn)
{
SetWindowRgn(hClipRgn,
TRUE);
SelectClipRgn((HDC)GetDC(),hClipRgn);
SetWindowPos(NULL,0,0,GetBitmapWidth(m_bMask),GetBitmapHeight(m_bMask),SWP_NOZORDER|SWP_NOMOVE);//设置按钮大小
}
}
return
ret;
}
调用的时候这样写
CString nomp;//png路径
CString
headp;//bmp路径
LPCWSTR pChar = 0;
USES_CONVERSION;
pChar =
A2CW((LPCSTR)nomp);
m_MyButton->LoadStpImage(pChar, headp,
_T("PNG"));
m_MyButton->ShowWindow(SW_SHOW);
这个,你要看看OnTimer定时器了。
在界面中双击按钮,可以进入编辑状态,在里面些代码。
利用定时器,实现流水灯的控制。
而灯的闪烁状态,可能你就要使用了。每个灯对应2张,闪烁就是不停的切换这两张,达到闪烁效果。切换的时间间隔利用定时器实现。
以上就是关于MFC切换图片会有闪烁全部的内容,包括:MFC切换图片会有闪烁、使MFC界面上有八个灯,流水闪烁,用按钮控制开始结束。本人菜鸟,求 *** 作详细步骤。、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)