我在Visual C++中有一个Window(win32 API)应用程序。我没有使用MFC。我必须创建一个带位图图像的圆形/圆形按钮。我的应用程序有一个视图。任何人都可以帮助我完成这项任务。提前致谢。如何在win32 API中使用visual C++创建圆形/圆形按钮
回答
你可以谷歌找到BitBlting图像技术使用内存DC和各种ROP2设置来实现掩蔽效果。表示按钮的圆形图像将使用特定的颜色来表示透明度。我手边没有特定的代码,但它不是微不足道的。
按钮是窗口。你可以创建一个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
这将告诉按钮发送WM_DRAWITEM消息到您的按钮'WNDPROC:
-http://msdn.microsoft.com/en-us/l (v = VS.85).aspx
在按钮的WNDPROC中,您将处理WM_DRAWITEM消息,并根据作为lParam中指针接收的DRAWITEMSTRUCT中的信息绘制按钮。
要将位图呈现为除矩形之外的任何内容,您需要提供与您希望呈现给您的按钮的位图大小相同的1位位掩码位图。位掩码的位设置在您希望按钮位图中的像素在屏幕上设置的位置。不显示的按钮位图中的像素需要为黑色。用AND运算符将你的位掩码位图显示到屏幕上,或者你的按钮位图。当然,您需要考虑各种按钮状态(通常按钮只有两种状态)。
我可能在上面的解释中混合了黑/白或置位/置位位,但AND/OR按位(SRCAND/SRCPAINT)光栅操作对于您尝试达到的操作而言是正确的操作。
-http://msdn.microsoft.com/en-us/library/aa930997.aspx
希望有所帮助。
您需要知道的关键api电话是SetWindowRgn
。这就是你所说的告诉窗口,窗口不是矩形而是不规则的区域。如果你周围的谷歌,你会发现很多示例代码。
一个有希望的例子是this project。它取决于MFC,但您可以使用它来了解您需要调用什么顺序才能获得所需的效果。
- 1. 创建圆形按钮
- 2. 我们如何使用vC++中的win32 API创建一个圆形的按钮
- 3. 如何用VC++使用win32 API创建椭圆形窗口
- 4. 在Iphone SDK中创建圆形按钮
- 5. 圆形按钮
- 6. 圆形按钮
- 7. 用GWT创建一个圆形按钮
- 8. 如何在WPF应用程序中创建椭圆形按钮?
- 9. UIImage按钮(圆形按钮)
- 10. 如何使用Monotouch为Ipad创建圆形按钮?
- 11. 如何在Swift中创建一个圆形按钮?
- 12. 如何在WM6中创建圆角矩形按钮?
- 13. 圆形到圆形三角形(菜单按钮切换)
- 14. (jquery)圆形按钮组?
- 15. 在UWP的Windows 10 C#创建边框圆形按钮
- 16. 如何在iOS中创建圆形UITableView?
- 17. GTK和CSS:圆形按钮
- 18. 实施圆形按钮
- 19. 如何在android中创建一个带有圆形的方形框架按钮?
- 20. 移相器,圆形按钮
- 21. iOS上的圆形按钮
- 22. 自定义圆形按钮
- 23. 圆形按钮与图像
- 24. 圆形按钮tkinter python
- 25. 在iPhone中使用圆形矩形按钮用于TableView页脚?
- 26. objective-c隐藏圆形按钮
- 27. 圆形矩形按钮连接到ViewController.h
- 28. 如何制作android圆形按钮
- 29. 如何获得圆形按钮?
- 30. 如何在圆形矩形按钮中添加箭头图标
较新的一个被关闭为精确重复。这一个应该不应该因为欺骗原因而关闭。 – 2009-11-12 15:51:39
Ravi,你是说你的主窗口是皮肤窗户吗?这与如何绘制圆形按钮有关? – AlanKley 2010-09-25 02:04:01