我在 Visual C++ 中有一个 Window (win32 API) 应用程序。我没有使用 MFC。我必须用位图图像创建一个圆形/圆形按钮。我的应用程序有一个皮肤 View 。任何人都可以帮助我完成这项任务。提前致谢。
最佳答案
按钮是窗口。您可以使用 CreateWindow 或 CreateWindowEx 调用创建按钮:
-http://msdn.microsoft.com/en-us/library/ms632680(VS.85).aspx
创建按钮窗口时,请确保传递 BS_OWNDERDRAW 样式:
-http://msdn.microsoft.com/en-us/library/bb775951(VS.85).aspx
这将告诉按钮向按钮的 WNDPROC 发送 WM_DRAWITEM 消息:
-http://msdn.microsoft.com/en-us/library/bb775923(v=VS.85).aspx
在按钮的 WNDPROC 中,您将处理 WM_DRAWITEM 消息并根据在 lParam 中作为指针接收的 DRAWITEMSTRUCT 中的信息绘制按钮。
要将位图渲染为除矩形之外的任何内容,您需要提供与您希望为按钮渲染的位图大小相同的 1 位位掩码位图。位掩码设置了您希望在屏幕上设置按钮位图中像素的位。按钮位图中不显示的像素必须是黑色的。使用 AND 运算符将您的位掩码位图 Bitblt 到屏幕,然后 OR 您的按钮位图。当然,您需要考虑各种按钮状态(通常一个按钮只有两种状态。)
我可能在上面的解释中混合了黑/白或设置/未设置位,但 AND/OR 按位 (SRCAND/SRCPAINT) 光栅操作是您想要实现的正确操作。
-http://msdn.microsoft.com/en-us/library/aa930997.aspx
希望有帮助。
关于api - 如何使用visual c++在win32 API中创建圆形/圆形按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1722750/