SDK实现真彩工具栏

本文介绍了如何在SDK环境下,不使用MFC类库,而是通过SDK函数自行实现真彩工具栏的过程。作者在搜索现有资源未能满意后,详细阐述了自己的实现步骤和代码示例。
摘要由CSDN通过智能技术生成

    如果是采用MFC工程的话,要实现真彩工具栏是一件简单的事,网上都提供了封装好的类来实现,例如:TrueColorToolBar。可是采用SDK实现真彩工具栏就需要自己去实现,在网络上搜索了很多关于这方面的资料,都没有称心如意的,最后自己一步一步的使用SDK函数来实现这一功能,代码如下:

void	CreateToolBar(const HWND hWndParent)
{
	RGBTRIPLE	*rgb;
	COLORREF	rgbMask;
	HIMAGELIST	himl;
	HBITMAP		hBitmap;
	BITMAP		bmBitmap;

	HWND m_hToolbar= CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
		WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT |TBSTYLE_AUTOSIZE,
		0, 0, 0, 0,hWndParent, (HMENU)IDR_TOOLBAR, GetModuleHandle(NULL), NULL);

	himl=ImageList_Create(48, 48, ILC_COLOR24 | ILC_MASK, 0, 0);
	hBitmap= (HBITMAP)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP1)
			,IMAGE_BITMAP, 0, 0,LR_DEFAULTSIZE|LR_CREATEDIBSECTION);

	GetObject(hBitmap, sizeof(BITMAP), &bmBitmap);
	rgb	= (RGBTRIPLE*)(bmBitmap.bmBits);
	rgbMask	= RGB(rgb[0].rgbtRed, rgb[0].rgbtGreen, rgb[0].rgbtBlue);
	ImageList_AddMasked(himl, hBitmap, rgbMask);
	SendMessage(m_hToolbar, TB_SETIMAGELIST, 0, (LPARAM)himl);
	DeleteObject (hBitmap);

	hBitmap= (HBITMAP)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP2)
	,IMAGE_BITMAP, 0, 0,LR_DEFAULTSIZE|LR_CREATEDIBSECTION);

	GetObject(hBitmap, sizeof(BITMAP), &bmBitmap);
	rgb	= (RGBTRIPLE*)(bmBitmap.bmBits);
	rgbMask	= RGB(rgb[0].rgbtRed, rgb[0].rgbtGreen, rgb[0].rgbtBlue);
	ImageList_AddMasked(himl, hBitmap, rgbMask);
	SendMessage(m_hToolbar, TB_SETDISABLEDIMAGELIST, 0, (LPARAM)himl);
	DeleteObject (hBitmap);

	TBBUTTON tbb[5];
	ZeroMemory(tbb, sizeof(tbb));
	SendMessage(m_hToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);

	tbb[0].iBitmap= -1;
	tbb[0].fsState = TBSTATE_ENABLED;
	tbb[0].fsStyle = TBSTYLE_SEP ;
	tbb[0].idCommand = 0;

	tbb[1].iBitmap= MAKELONG(0,0);
	tbb[1].fsState = TBSTATE_ENABLED;
	tbb[1].fsStyle = TBSTYLE_BUTTON ;
	tbb[1].idCommand = IDC_Btn_Start;
	tbb[1].iString=(INT_PTR)("Start"); 

	tbb[2].iBitmap =MAKELONG(1,0);
	//tbb[1].fsState = TBSTATE_ENABLED;
	tbb[2].fsStyle = TBSTYLE_BUTTON;
	tbb[2].idCommand = IDC_Btn_Stop; 
	tbb[2].iString=(INT_PTR)("Stop"); 

	tbb[3].iBitmap= -1;
	tbb[3].fsState = TBSTATE_ENABLED;
	tbb[3].fsStyle = TBSTYLE_SEP ;
	tbb[3].idCommand = 0;

	tbb[4].iBitmap =MAKELONG(2,0);
	tbb[4].fsState = TBSTATE_ENABLED;
	tbb[4].fsStyle = TBSTYLE_BUTTON;
	tbb[4].idCommand = IDC_Btn_Login; 
	tbb[4].iString=(INT_PTR)("Login"); 

	SendMessage(m_hToolbar, TB_ADDBUTTONS, sizeof(tbb)/sizeof(TBBUTTON), (LPARAM)&tbb);
	SendMessage(m_hToolbar, TB_AUTOSIZE, 0, 0);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值