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

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

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

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

谢谢。

在资源编辑器中,编辑静态文本项目,并将其控件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,因此知道哪个返回是适当的是重要的。