当前位置:   article > 正文

C++ 控制台创建窗口,加载png图片,实现悬浮窗_c创建窗口显示透明png图片

c创建窗口显示透明png图片

 代码传送门

  1. #include <windows.h>
  2. #include <gdiplus.h>
  3. #pragma comment(lib, "gdiplus.lib")
  4. using namespace Gdiplus;
  5. //声明自定义消息处理函数
  6. LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
  7. //绘制PNG窗口
  8. BOOL UpdateDemoWindows(Image *image);
  9. Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
  10. ULONG_PTR m_pGdiToken;
  11. HWND m_hWnd;
  12. int _tmain(int argc, _TCHAR* argv[])
  13. {
  14. GdiplusStartup(&m_pGdiToken, &m_gdiplusStartupInput, NULL);
  15. HINSTANCE hInst;
  16. hInst = GetModuleHandle(NULL); //获取一个应用程序或动态链接库的模块句柄
  17. WNDCLASSEX wcx;
  18. wcx.cbSize = sizeof(wcx);
  19. wcx.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_NOCLOSE;//窗口的风格
  20. wcx.lpfnWndProc = WindowProc; //采用自定义消息处理函数
  21. wcx.cbClsExtra = 0; // no extra class memory
  22. wcx.cbWndExtra = 0; // no extra window memory
  23. wcx.hInstance = hInst; //当前应用程序的实例句柄
  24. wcx.hIcon = LoadIcon(NULL,IDI_APPLICATION); //图标风格
  25. wcx.hCursor = LoadCursor(NULL,IDC_ARROW); //鼠标风格
  26. wcx.hbrBackground = (HBRUSH)WHITE_BRUSH; //背景色
  27. wcx.lpszMenuName =NULL; //菜单名
  28. wcx.lpszClassName = _T("ITSMYOSDCLASS"); //窗口类的名称
  29. wcx.hIconSm = NULL;
  30. if (!RegisterClassEx(&wcx))
  31. {
  32. printf("RegisterClassEx failed");
  33. return 1;
  34. }
  35. //窗口在屏幕上的显示位置
  36. int OSDleft = GetSystemMetrics(SM_CXSCREEN) / 2 - 300;
  37. int OSDTop = GetSystemMetrics(SM_CYSCREEN) / 2;
  38. m_hWnd = CreateWindowEx(
  39. WS_EX_LAYERED | WS_EX_TOOLWINDOW | WS_EX_TOPMOST | WS_EX_TRANSPARENT | WS_EX_NOACTIVATE,//窗口的扩展风格
  40. wcx.lpszClassName,//上面注册的类名lpszClassName,要完全一致
  41. NULL,
  42. WS_VISIBLE | WS_POPUP,//窗口的风格
  43. OSDleft,//窗口相对于父级的X坐标
  44. OSDTop,//窗口相对于父级的Y坐标
  45. 300,//窗口的宽度
  46. 300,//窗口的高度
  47. (HWND)NULL,//没有父窗口,为(HWND)NULL//GetDesktopWindow(),
  48. (HMENU)NULL,//没有菜单,为NULL
  49. hInst,//当前应用程序的实例句柄
  50. (LPVOID)NULL); //没有附加数据,为NULL
  51. if (!m_hWnd)
  52. {
  53. printf("CreateWindowEx failed");
  54. return 1;
  55. }
  56. Image* pImage = Image::FromFile(L"demo.png");
  57. if (pImage->GetLastStatus() == Ok)
  58. {
  59. UpdateDemoWindows(pImage);
  60. }
  61. delete pImage;
  62. pImage = NULL;
  63. //消息循环
  64. MSG msg;
  65. while (GetMessage(&msg, (HWND)NULL, 0, 0))
  66. {
  67. TranslateMessage(&msg);
  68. DispatchMessage(&msg);
  69. }
  70. Gdiplus::GdiplusShutdown(m_pGdiToken);
  71. return 0;
  72. }

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/281825
推荐阅读
相关标签
  

闽ICP备14008679号