在按钮上绘制资源图标
Posted
技术标签:
【中文标题】在按钮上绘制资源图标【英文标题】:Draw Resource Icon on Button 【发布时间】:2021-02-15 16:35:58 【问题描述】:我想在“所有者绘制”按钮上绘制我的程序图标。这可以是资源文件中的图标,也可以是通用的 Windows 图标。但是,即使经过无休止的搜索,我也无法找到此代码。我遇到了一些零零碎碎的答案。但是,没有完整的解释。
抱歉,我没有要发布的代码。我完全迷失了这个。标准 Win API 或 GDI+ 都适合我。
【问题讨论】:
这能回答你的问题吗? How to draw ICON in GDI+? 请发布一些代码,以便我们了解您正在使用的框架。 不,不幸的是,那个链接只是把我带进了一个兔子洞,我从来没有找到底部。我跟着一个又一个链接,没有答案。必须有一个简单的方法来做到这一点。 【参考方案1】:创建按钮时,添加BS_ICON
样式,然后获取图标的句柄,即可使用LoadImage
。
最后发送带有句柄的BM_SETIMAGE
消息到您的图标。
这是代码示例:
HWND button1 = CreateWindow(TEXT("Button"), TEXT("OK"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON | BS_ICON,
50, 50, 50, 50, hwnd, (HMENU)1001, hInstance, NULL);
HICON hIcon = (HICON)LoadImage( // returns a HANDLE so we have to cast to HICON
NULL, // hInstance must be NULL when loading from a file
L"iconname.ico", // the icon file name
IMAGE_ICON, // specifies that the file is an icon
0, // width of the image (we'll specify default later on)
0, // height of the image
LR_LOADFROMFILE | // we want to load a file (as opposed to a resource)
LR_DEFAULTSIZE | // default metrics based on the type (IMAGE_ICON, 32x32)
LR_SHARED // let the system release the handle when it's no longer used
);
SendMessage(button1, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon);
【讨论】:
谢谢朱松。我们在这里遇到了冰暴。所以,清理工作并没有给我太多编码的机会。几天后我会努力做到的。以上是关于在按钮上绘制资源图标的主要内容,如果未能解决你的问题,请参考以下文章
Android:具有可绘制资源的 ImageButton 引发 ResourceNotFoundException