繁体   English   中英

如何在C ++ WinAPI(无MFC)中将图像本地添加到按钮?

[英]How to natively add an image to a button in C++ WinAPI (without MFC)?

好的,我想在不带有 RC文件的情况下将图像添加到按钮以及文本中。 这是否有可能,还是我需要使用RC文件来使按钮能够在其中放置图像? 我的映像在“ resource.h”中是#define d,并且映像在“ resources.rc”中声明。 “ main.cpp”和“ resources.rc”都包含“ resource.h”标头。 我真的不想使用资源来制作按钮,但是如果这是制作带有图像文字的按钮的唯一方法,那么我会做的。 我需要知道的是如何将图像放入WinAPI中的按钮。

更新:

  1. 将清单文件添加到您的应用程序,清单文件应命名为YourApp.exe.manifest

  2. 将其添加到清单文件中(有关清单文件的更多信息,请参见http://msdn.microsoft.com/zh-cn/library/bb773175%28VS.85%29.aspx ):

     <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="CompanyName.ProductName.YourApplication" type="win32" /> <description>Your application description here.</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly> 
  3. 将您的应用程序与ComCtl32.lib链接

  4. 将清单添加到您的应用程序资源文件中CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.exe.manifest"

  5. 在WinMain的开头调用InitCommonControls()

结束更新

  1. 创建按钮的示例代码(IMAGE + TEXT),由于LoadBitmap导致内存泄漏:

     HWND hwnd_button = CreateWindowEx( 0, "BUTTON", //ascii "Button text", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 10, 145, 50, 50, hwnd_parent, NULL, //GetModuleHandle(NULL) (HINSTANCE)GetWindowLong(hwnd_parent, GWL_HINSTANCE), NULL); SendMessage((HWND) m_hWndButton, (UINT) BM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1))); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM