当前位置: 首页>>代码示例>>C++>>正文


C++ StringFormat::SetHotkeyPrefix方法代码示例

本文整理汇总了C++中gdiplus::StringFormat::SetHotkeyPrefix方法的典型用法代码示例。如果您正苦于以下问题:C++ StringFormat::SetHotkeyPrefix方法的具体用法?C++ StringFormat::SetHotkeyPrefix怎么用?C++ StringFormat::SetHotkeyPrefix使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在gdiplus::StringFormat的用法示例。


在下文中一共展示了StringFormat::SetHotkeyPrefix方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: OnPaint

void CSectionCon::OnPaint()///////////////////////
{
	CPaintDC dc(this); // device context for painting
					   // TODO: Add your message handler code here
					   // Do not call CRichEditCtrl::OnPaint() for painting messages
	Graphics gra(dc);
	CRect clientRect;
	CRect abstractRect;
	GetClientRect(clientRect);
	dc.FillSolidRect(clientRect, RGB(255, 255, 255));

	Gdiplus::FontFamily ff(_T("微软雅黑"));
	Gdiplus::Font font(&ff,15,FontStyle::FontStyleUnderline|FontStyleBold);
	SolidBrush brush(Color(255,20, 10, 90));
	Gdiplus::StringFormat sf;
	sf.SetTrimming(StringTrimmingEllipsisPath);
	sf.SetHotkeyPrefix(HotkeyPrefixHide);///////////////////选择'&'的处理
	gra.SetTextRenderingHint(TextRenderingHint::TextRenderingHintSingleBitPerPixelGridFit);
	gra.DrawString(mtitle, mtitle.GetLength(), &font,RectF(20,0,clientRect.Width()-40,30),&sf,&brush);///////////////绘制标题
	RectF titleRectF;
	gra.MeasureString(mtitle, mtitle.GetLength(), &font, RectF(20, 0, clientRect.Width() - 40, 30), &sf, &titleRectF);
	titleWidth=titleRectF.Width;////////////////计算标题的宽度
	Gdiplus::Font font2(&ff, 10);
	SolidBrush brush2(Color(255,0,0,0));
	gra.DrawString(mabst, mabst.GetLength(), &font2, RectF(20, 34, clientRect.Width() - 40, clientRect.Height() - 40), &sf, &brush2);/////////准备绘制摘要
	//////////////////准备高亮关键字
	int count=0;
	for (int i = 0;i < mabst.GetLength();i++)
	{
		i = mabst.Find('&', i);
		if (i == -1)
			break;
		count++;
		i++;
	}
	if (count > 30)///////////////////限制高亮个数,提升性能
		count = 30;
	CharacterRange *cr=new CharacterRange[count];
	for (int i = 0, j = 0;i < count;i++)
	{
		j = mabst.Find('&', j);///////////找到‘&’
		cr[i].First = j + 1;//////找到高亮目标
		j = j + 1;
		cr[i].Length = 1;/////////////
	}
	Region *region = new Region[count];////////////保存所有关键字所在的位置
	sf.SetMeasurableCharacterRanges(count, cr);
	gra.MeasureCharacterRanges(mabst, mabst.GetLength(), &font2, RectF(20, 34, clientRect.Width() - 40, clientRect.Height() - 40), &sf, count, region);
	RectF rect;//////////关键字所在矩形位置
	SolidBrush bru(Color(255, 100, 0));//////////高亮字体颜色
	SolidBrush bru2(Color(255, 255, 255));/////////////删除色,用于删除原来的绘制的字
	for (int i = 0;i < count;i++)
	{
		region[i].GetBounds(&rect, &gra);
		if (rect.X >= 20)
		{
			gra.FillRectangle(&bru2, rect);
			rect.X = rect.X - 3;
			gra.DrawString(mabst.Mid(cr[i].First), 1, &font2, rect, &sf, &bru);
		}
	}
	delete[] cr;
	delete[] region;

	//CharacterRange cr;
	//Region re;////////////关键字所在区域
	//RectF rec;///////////////关键字所在的矩形区域
	//SolidBrush bru(Color(255, 100, 0));//////////高亮字体颜色
	//SolidBrush bru2(Color(255, 255, 255));/////////////删除色,用于删除原来的绘制的字
	//for (int i = 0,j=0;i < count;i++)//////////////////////将每一个关键字高亮
	//{
	//	j=mabst.Find('&', j);
	//	cr.First = j+1;
	//	j = j + 1;
	//	cr.Length = 1;
	//	sf.SetMeasurableCharacterRanges(1, &cr);
	//	gra.MeasureCharacterRanges(mabst, mabst.GetLength(), &font2, RectF(20, 34, clientRect.Width()-40, clientRect.Height()-40), &sf, 1, &re);
	//	re.GetBounds(&rec, &gra);
	//	//rec.Width += 4;
	//	gra.FillRectangle(&bru2,rec);
	//	rec.X = rec.X - 3;
	//	gra.DrawString(mabst.Mid(j), 1, &font2, rec, &sf, &bru);
	//}
}
开发者ID:ksymphony,项目名称:SearchEngine,代码行数:84,代码来源:SectionCon.cpp


注:本文中的gdiplus::StringFormat::SetHotkeyPrefix方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。