glue.cpp 5.5 KB

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