繁体   English   中英

如何将静态标签中的文本设置为粗体样式?

[英]How to set text in a static label to bold style?

我正在为Pocket PC 2003设备编写应用程序。 在其中有一个对话框,其中显示了各种文本信息。 信息是分开的,因此每个片段都位于其自己的标签内,该标签在资源文件中定义为LTEXT。

现在,我的问题是,目前所有文本标签都具有相同的字体和样式(普通或简单,即非粗体或斜体); 我希望将其设置为粗体。 我知道我可以在资源文件中将字体设置为粗体,但这可以设置所有标签的样式。

如何做到这一点? 我已经看到它可以在Windows“关于”屏幕中使用,所以我知道这是可能的。 我已经直接使用Win32 API用C ++编写了程序(除了使用资源文件的某些对话框之外),所以如果以相同的语言和方法给出答案,我将不胜感激。

谢谢。

在资源编辑器中,编辑静态文本项,然后将其控件ID更改为唯一的名称:例如IDC_BOLD。

在用于承载控件的对话框的DialogProc中,添加一个WM_CTLCOLORSTATIC处理程序:

case WM_CTLCOLORSTATIC:
  HDC hdc;
  HWND hwndCtl;
  hwndCtl = (HWND) lParam;
  hdc = (HDC) wParam;

  if( GetWindowLong(hwndClt, GWL_ID ) == IDC_BOLD )
  {
    SetBkMode(hdc,TRANSPARENT);
    SetTextColor(hdc,RGB(0xff,0,0)); // turn the text red for fun :)
    SelectObject(hdc,hBoldFont);     // but you want this...
    return (INT_PTR)GetSysColorBrush(COLOR_BTNFACE); 
    //return 0L; // if visual themes are enabled (common controls 6) then 0 is better.
  }
  // default processing
  return 0;

您正在为Pocket PC 2003开发,但我不知道可用的按钮样式。 该页面当然是指台式机XP。 但是,如果对话框中的按钮不是纯灰色的95esq按钮,则返回0更合适,因为如果对话框的背景不是纯灰色,那将正确地绘制文本背景。

视觉前样式的返回值为0会导致系统重置DC,因此了解哪个返回值合适很重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM