glue.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. #include "windows.h"
  2. #include <stdio.h>
  3. #include <shlwapi.h>
  4. extern "C" {
  5. CHOOSECOLORW * bmx_win32maxgui_choosecolor_new(HWND parent, int rgb, int * customColors, int flags);
  6. int bmx_win32maxgui_choosecolor_ChooseColor(CHOOSECOLORW * cc);
  7. void bmx_win32maxgui_choosecolor_free(CHOOSECOLORW * cc);
  8. int bmx_win32maxgui_choosecolor_rgbResult(CHOOSECOLORW * cc);
  9. DLLVERSIONINFO2 * bmx_win32_DLLVERSIONINFO2_new();
  10. void bmx_win32_DLLVERSIONINFO2_free(DLLVERSIONINFO2 * info);
  11. int bmx_win32_DLLVERSIONINFO2_dwMajorVersion(DLLVERSIONINFO2 * info);
  12. int bmx_win32_DLLVERSIONINFO2_dwMinorVersion(DLLVERSIONINFO2 * info);
  13. int bmx_win32_DLLVERSIONINFO2_dwBuildNumber(DLLVERSIONINFO2 * info);
  14. DRAWITEMSTRUCT * bmx_win32_DRAWITEMSTRUCT_new();
  15. void bmx_win32_DRAWITEMSTRUCT_free(DRAWITEMSTRUCT * item);
  16. UINT bmx_win32_DRAWITEMSTRUCT_CtlType(DRAWITEMSTRUCT * item);
  17. UINT bmx_win32_DRAWITEMSTRUCT_CtlID(DRAWITEMSTRUCT * item);
  18. UINT bmx_win32_DRAWITEMSTRUCT_itemID(DRAWITEMSTRUCT * item);
  19. UINT bmx_win32_DRAWITEMSTRUCT_itemAction(DRAWITEMSTRUCT * item);
  20. HWND bmx_win32_DRAWITEMSTRUCT_hwndItem(DRAWITEMSTRUCT * item);
  21. HDC bmx_win32_DRAWITEMSTRUCT_hDC(DRAWITEMSTRUCT * item);
  22. RECT* bmx_win32_DRAWITEMSTRUCT_rcItem(DRAWITEMSTRUCT * item);
  23. UINT bmx_win32_DRAWITEMSTRUCT_itemState(DRAWITEMSTRUCT * item);
  24. ULONG_PTR bmx_win32_DRAWITEMSTRUCT_itemData(DRAWITEMSTRUCT * item);
  25. BOOL AlphaBlendArgs(HDC hdcDest, int xoriginDest, int yoriginDest, int wDest, int hDest, HDC hdcSrc, int xoriginSrc,
  26. int yoriginSrc, int wSrc, int hSrc, int blend);
  27. NONCLIENTMETRICSW * bmx_win32_NONCLIENTMETRICSW_new();
  28. void bmx_win32_NONCLIENTMETRICSW_free(NONCLIENTMETRICSW * metrics);
  29. LOGFONTW * bmx_win32_NONCLIENTMETRICSW_lfMessageFont(NONCLIENTMETRICSW * metrics);
  30. UINT bmx_win32_NONCLIENTMETRICSW_size();
  31. int bmx_win32_MOUSEHOOKSTRUCT_x(MOUSEHOOKSTRUCT * hook);
  32. int bmx_win32_MOUSEHOOKSTRUCT_y(MOUSEHOOKSTRUCT * hook);
  33. HWND bmx_win32_MOUSEHOOKSTRUCT_hwnd(MOUSEHOOKSTRUCT * hook);
  34. UINT bmx_win32_MOUSEHOOKSTRUCT_wHitTestCode(MOUSEHOOKSTRUCT * hook);
  35. }
  36. BOOL AlphaBlendArgs(HDC hdcDest, int xoriginDest, int yoriginDest, int wDest, int hDest, HDC hdcSrc, int xoriginSrc,
  37. int yoriginSrc, int wSrc, int hSrc, int blend) {
  38. BLENDFUNCTION ftn = { static_cast<BYTE>(blend & 0xff), static_cast<BYTE>((blend & 0xff00) >> 8), static_cast<BYTE>((blend & 0xff0000) >> 16),static_cast<BYTE>((blend & 0xff000000) >> 24) };
  39. return AlphaBlend(hdcDest, xoriginDest, yoriginDest, wDest, hDest, hdcSrc, xoriginSrc,
  40. yoriginSrc, wSrc, hSrc, ftn);
  41. }
  42. // ********************************************************
  43. CHOOSECOLORW * bmx_win32maxgui_choosecolor_new(HWND parent, int rgb, int * customColors, int flags) {
  44. CHOOSECOLORW * cc = (CHOOSECOLORW *)malloc(sizeof(CHOOSECOLORW));
  45. cc->lStructSize = sizeof(CHOOSECOLORW);
  46. cc->hwndOwner = parent;
  47. cc->rgbResult = rgb;
  48. cc->lpCustColors = (COLORREF*)customColors;
  49. cc->Flags = flags;
  50. return cc;
  51. }
  52. int bmx_win32maxgui_choosecolor_ChooseColor(CHOOSECOLORW * cc) {
  53. return ChooseColorW(cc);
  54. }
  55. void bmx_win32maxgui_choosecolor_free(CHOOSECOLORW * cc) {
  56. free(cc);
  57. }
  58. int bmx_win32maxgui_choosecolor_rgbResult(CHOOSECOLORW * cc) {
  59. return cc->rgbResult;
  60. }
  61. // ********************************************************
  62. DLLVERSIONINFO2 * bmx_win32_DLLVERSIONINFO2_new() {
  63. DLLVERSIONINFO2 * info = (DLLVERSIONINFO2 *)calloc(1,sizeof(DLLVERSIONINFO2));
  64. info->info1.cbSize = sizeof(DLLVERSIONINFO2);
  65. return info;
  66. }
  67. void bmx_win32_DLLVERSIONINFO2_free(DLLVERSIONINFO2 * info) {
  68. free(info);
  69. }
  70. int bmx_win32_DLLVERSIONINFO2_dwMajorVersion(DLLVERSIONINFO2 * info) {
  71. return info->info1.dwMajorVersion;
  72. }
  73. int bmx_win32_DLLVERSIONINFO2_dwMinorVersion(DLLVERSIONINFO2 * info) {
  74. return info->info1.dwMinorVersion;
  75. }
  76. int bmx_win32_DLLVERSIONINFO2_dwBuildNumber(DLLVERSIONINFO2 * info) {
  77. return info->info1.dwBuildNumber;
  78. }
  79. // ********************************************************
  80. DRAWITEMSTRUCT * bmx_win32_DRAWITEMSTRUCT_new() {
  81. return (DRAWITEMSTRUCT*)malloc(sizeof(DRAWITEMSTRUCT));
  82. }
  83. void bmx_win32_DRAWITEMSTRUCT_free(DRAWITEMSTRUCT * item) {
  84. free(item);
  85. }
  86. UINT bmx_win32_DRAWITEMSTRUCT_CtlType(DRAWITEMSTRUCT * item) {
  87. return item->CtlType;
  88. }
  89. UINT bmx_win32_DRAWITEMSTRUCT_CtlID(DRAWITEMSTRUCT * item) {
  90. return item->CtlID;
  91. }
  92. UINT bmx_win32_DRAWITEMSTRUCT_itemID(DRAWITEMSTRUCT * item) {
  93. return item->itemID;
  94. }
  95. UINT bmx_win32_DRAWITEMSTRUCT_itemAction(DRAWITEMSTRUCT * item) {
  96. return item->itemAction;
  97. }
  98. HWND bmx_win32_DRAWITEMSTRUCT_hwndItem(DRAWITEMSTRUCT * item) {
  99. return item->hwndItem;
  100. }
  101. HDC bmx_win32_DRAWITEMSTRUCT_hDC(DRAWITEMSTRUCT * item) {
  102. return item->hDC;
  103. }
  104. RECT* bmx_win32_DRAWITEMSTRUCT_rcItem(DRAWITEMSTRUCT * item) {
  105. return &item->rcItem;
  106. }
  107. UINT bmx_win32_DRAWITEMSTRUCT_itemState(DRAWITEMSTRUCT * item) {
  108. return item->itemState;
  109. }
  110. ULONG_PTR bmx_win32_DRAWITEMSTRUCT_itemData(DRAWITEMSTRUCT * item) {
  111. return item->itemData;
  112. }
  113. // ********************************************************
  114. NONCLIENTMETRICSW * bmx_win32_NONCLIENTMETRICSW_new() {
  115. NONCLIENTMETRICSW * metrics = (NONCLIENTMETRICSW *)calloc(1, sizeof(NONCLIENTMETRICSW));
  116. metrics->cbSize = sizeof(NONCLIENTMETRICSW);
  117. return metrics;
  118. }
  119. void bmx_win32_NONCLIENTMETRICSW_free(NONCLIENTMETRICSW * metrics) {
  120. free(metrics);
  121. }
  122. LOGFONTW * bmx_win32_NONCLIENTMETRICSW_lfMessageFont(NONCLIENTMETRICSW * metrics) {
  123. return &metrics->lfMessageFont;
  124. }
  125. UINT bmx_win32_NONCLIENTMETRICSW_size() {
  126. return sizeof(NONCLIENTMETRICSW);
  127. }
  128. // ********************************************************
  129. int bmx_win32_MOUSEHOOKSTRUCT_x(MOUSEHOOKSTRUCT * hook) {
  130. return hook->pt.x;
  131. }
  132. int bmx_win32_MOUSEHOOKSTRUCT_y(MOUSEHOOKSTRUCT * hook) {
  133. return hook->pt.y;
  134. }
  135. HWND bmx_win32_MOUSEHOOKSTRUCT_hwnd(MOUSEHOOKSTRUCT * hook) {
  136. return hook->hwnd;
  137. }
  138. UINT bmx_win32_MOUSEHOOKSTRUCT_wHitTestCode(MOUSEHOOKSTRUCT * hook) {
  139. return hook->wHitTestCode;
  140. }