如何在Win32 C++中的按钮上显示文本和图标?

3

我希望我的按钮既有图标又有文本,因此我没有在按钮上设置BM_ICON。在WM_INITDIALOG(是的,该按钮位于对话框中)中,我这样说:

SendDlgItemMessage(hwndDlg, IDC_CREATE, BM_SETIMAGE, IMAGE_ICON, reinterpret_cast<LPARAM>(create_image));

它不起作用。按钮只显示文本。现在,如果我设置BS_ICON风格,它可以工作,但是,正如文档所述,没有文本。 以防万一,create_image的实例化如下:

create_image = LoadImage(g_current_instance, MAKEINTRESOURCE(IDI_ICONCREATE), IMAGE_ICON, 32, 32, LR_SHARED);

那么我该怎么做才能让它工作呢?
1个回答

1

我相信你想要的是一个“OwnerDraw”按钮。你可以在上面混合文本和图形。你提供3个按钮状态,它会按照你的指示绘制。

Ownerdraw控件示例:http://www.codeguru.com/cpp/controls/buttonctrl/advancedbuttons/article.php/c5161

上面的链接可能有点极端,但现在你有一个搜索词来找到很多例子。我记得Petzolds的《Programming Windows》也有一个例子。

请注意,你可以用这些制作非矩形按钮。通常当你在Windows上看到一个奇怪形状的按钮时,就是这样做的。

搜索示例:Win32 ownerdraw button。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接